辅助类型
文档/dominion-api/辅助类型

辅助类型

使用 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)判断两个范围是否相交
addUpaddDownaddNorthaddSouthaddEastaddWest沿方向改变范围

坐标边界

contain(x, y, z) 使用半开区间:

x1 <= x < x2
y1 <= y < y2
z1 <= z < z2

因此 x2y2z2 是上界而不是一个包含在内的方块坐标。xLength() 等方法使用 x2 - x1,计算领地大小时不要再额外加一。

setPos1setPos2add... 会修改对象本身。需要在事件中尝试调整边界时,先复制一份:

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 形式,例如 &#55AAFF天空。展示组名或消息前,先根据目标 API 选择 Component、Bukkit 字符串或纯文本结果。

McaRecord

McaRecord 是一个 Java record:

public record McaRecord(int x, int z, String world) {}

xz 是 MCA 区域坐标,world 是世界名称。它只描述区域记录,不是世界备份,也不能代替世界或数据库备份。