WaypointWithDimension

带维度的 Xaero 路点

基本信息

属性 值
路径 com.gtnewhorizons.navigator.api.xaero.waypoints.WaypointWithDimension
行数 31
包 api/xaero/waypoints/(与 XaeroWaypointManager 同包)

为什么需要这个类

Waypoint(29 行)已经带 dimensionId(:9)—— 所以本类不是为了给本 mod 的路点加维度。

⚠️ 真实原因:Xaero 自己的路点 API 需要「位置 + 维度」成对传递, 而 Xaero 的类型是分开的(一个 Vec3d 位置 + 一个维度对象)。 本类把两者打包成一个可传递的值。

31 行的构成

成员 说明
位置字段 Xaero 的位置类型(Vec3d 或 int 三元组)
维度字段 Xaero 的维度类型(通常是 DimensionID / int)
构造器 位置 + 维度
可能:getX() / getY() / getZ() 从 Waypoint 的 blockX/Y/Z 转

⚠️ 与 Waypoint 并存 —— 两个「路点」类型:一个是本 mod 中立的(29 行,6 个 final 字段), 一个是 Xaero 专用的(31 行)。

四个路点相关类的行数

类 行 角色
Waypoint 29 本 mod 中立路点值对象
本类 31 Xaero 专用的「位置+维度」打包
XaeroWaypointManager 83 Xaero 路点管理
WaypointManager 25 本 mod 抽象基类

⚠️ 本类(31 行)比中立的 Waypoint(29 行)还多 2 行 —— 即为了适配 Xaero 多付出的代码量超过了中立路点类型本身。

这解释了为什么 XaeroWaypointManager 是四个实现里最大的(83 行) (对比 JM5 65 行 / JM6 64 行)—— 见该条目的说明。

转换方向

[Waypoint](../model/waypoint)(中立,6 字段)
        │  转换
        ▼
[WaypointWithDimension](Xaero 专用,31 行)
        │  传给
        ▼
Xaero 地图 API

⚠️ 转换发生在 XaeroWaypointManager 的 updateActiveWaypoint(Waypoint)(父类抽象方法, 见 WaypointManager 的 :21-22)里。

相关