文档
路线视图
在 Xaero's World Map 上的 MTR 路线叠加层。
除了路径点,MTR Surveyor 还能把完整的 MTR 路线网络直接画到 Xaero’s World Map 界面上 — 彩色线条沿站台之间的真实轨道几何展开。
该功能仅在安装了 Xaero’s World Map 时激活。若只装了 Xaero’s Minimap,你仍能获得路径点;路线叠加层会被静默跳过。
切换小部件
打开世界地图时,左上角会出现一个 MTR 小部件:
- 绿色
MTR— 路线叠加层开启。 - 红色
MTR— 路线叠加层关闭。
左键单击该小部件切换状态。状态仅保存在当前会话内存中(不会持久化到配置文件)。
小部件绘制在固定位置(
x=5, y=60,尺寸40×16),恰好位于 Xaero 自身 UI 元素下方,不会重叠。
会画什么
对于客户端可见的每一条 MTR 路线(普通 Route 与 SimplifiedRoute 都算):
- 读取该路线的有序站台列表。
- 对每一对相邻站台,在两者中点位置(X/Z)之间画一条线段。
- 每段线条使用路线自身的 MTR 颜色,约 78% 不透明度(
alpha 200)。 - 线条以四边形(quad)方式渲染,半宽 3 个世界单位 — 任意缩放都看得清,又不会淹没地图。
数据同时来自两个 MTR 客户端数据源:
MinecraftClientData.getInstance()— 实时流式副本。MinecraftClientData.getDashboardInstance()— 你打开过 MTR dashboard 后填充。
这种双源读取正是让叠加层在无法直接访问 MTR 服务端状态的服务器上也能工作的关键。
坐标变换
为把世界坐标转换到世界地图的屏幕空间,MTR Surveyor 会:
- 通过 mixin accessor 从 Xaero 的
GuiMap读取地图的相机 X/Z与缩放比例。 - 平移到屏幕中心,按
mapScale / guiScale缩放,再偏移-cameraX, -cameraZ。
结果就是路线线条与底层地图同步平移和缩放 — 行为如同原生地图图层。
性能
- 渲染经过节流,线缓冲每帧只 flush 一次,没有逐帧分配堆积。
- 一次性失败保护:若渲染过程中抛出异常,会自动停止后续渲染,避免日志刷屏。若叠加层静默失效,请带着游戏日志到这里反馈。
限制
- 站台之间是直线段 — 不会沿轨道样条曲线弯曲。长距离跨站时可能切角。
- 叠加层画在地图之上,但在 Xaero 自身的路径点与 HUD 之下。
- 仅世界地图界面有叠加层 — 小地图角标视图没有。