辅助类型
使用 CuboidDTO、ColorParser 和 McaRecord 处理 Dominion 的空间与展示数据。
CuboidDTO
CuboidDTO 表示一个三维长方体。常用构造方式:
CuboidDTO cuboid = new CuboidDTO(
minX, minY, minZ,
maxX, maxY, maxZ
);
CuboidDTO fromLocations = new CuboidDTO(pos1, pos2);
构造时每个轴会自动排序,使 pos1 不大于 pos2。它提供:
| 方法 | 用途 |
|---|---|
getPos1() / getPos2() | 获取两端坐标数组的副本 |
getLoc1(World) / getLoc2(World) | 将端点转成 Bukkit Location |
x1()、y1()、z1()、x2()、y2()、z2() | 读取单轴坐标 |
xLength()、yLength()、zLength() | 读取各轴长度 |
getSquare() / getVolume() | 读取底面积/体积 |
contain(x, y, z) | 判断方块坐标是否在范围内 |
contain(other) / contain(other, ignoreY) | 判断是否包含另一个范围 |
containedBy(other) | 判断当前范围是否被另一个范围包含 |
intersectWith(other) | 判断两个范围是否相交 |
addUp、addDown、addNorth、addSouth、addEast、addWest | 沿方向改变范围 |
坐标边界
contain(x, y, z) 使用半开区间:
x1 <= x < x2
y1 <= y < y2
z1 <= z < z2
因此 x2、y2、z2 是上界而不是一个包含在内的方块坐标。xLength() 等方法使用 x2 - x1,计算领地大小时不要再额外加一。
setPos1、setPos2 和 add... 会修改对象本身。需要在事件中尝试调整边界时,先复制一份:
CuboidDTO candidate = new CuboidDTO(dominion.getCuboid());
candidate.addEast(8);
ColorParser
ColorParser 用于在 Dominion 使用的字符串颜色格式和 Bukkit/Adventure 表示之间转换:
| 方法 | 返回值 | 说明 |
|---|---|---|
getComponentType(String) | Adventure TextComponent | 解析为 Adventure 组件 |
getBukkitType(String) | String | 转为 Bukkit ChatColor 字符串 |
getPlainText(String) | String | 删除颜色编码,保留纯文本 |
十六进制颜色使用 &#RRGGBB 形式,例如 7AAFF天空。展示组名或消息前,先根据目标 API 选择 Component、Bukkit 字符串或纯文本结果。
McaRecord
McaRecord 是一个 Java record:
public record McaRecord(int x, int z, String world) {}
x 和 z 是 MCA 区域坐标,world 是世界名称。它只描述区域记录,不是世界备份,也不能代替世界或数据库备份。