文档

路线视图

在 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 路线(普通 RouteSimplifiedRoute 都算):

  1. 读取该路线的有序站台列表。
  2. 对每一对相邻站台,在两者中点位置(X/Z)之间画一条线段。
  3. 每段线条使用路线自身的 MTR 颜色,约 78% 不透明度(alpha 200)。
  4. 线条以四边形(quad)方式渲染,半宽 3 个世界单位 — 任意缩放都看得清,又不会淹没地图。

数据同时来自两个 MTR 客户端数据源:

  • MinecraftClientData.getInstance() — 实时流式副本。
  • MinecraftClientData.getDashboardInstance() — 你打开过 MTR dashboard 后填充。

这种双源读取正是让叠加层在无法直接访问 MTR 服务端状态的服务器上也能工作的关键。

坐标变换

为把世界坐标转换到世界地图的屏幕空间,MTR Surveyor 会:

  1. 通过 mixin accessor 从 Xaero 的 GuiMap 读取地图的相机 X/Z缩放比例
  2. 平移到屏幕中心,按 mapScale / guiScale 缩放,再偏移 -cameraX, -cameraZ

结果就是路线线条与底层地图同步平移和缩放 — 行为如同原生地图图层。

性能

  • 渲染经过节流,线缓冲每帧只 flush 一次,没有逐帧分配堆积。
  • 一次性失败保护:若渲染过程中抛出异常,会自动停止后续渲染,避免日志刷屏。若叠加层静默失效,请带着游戏日志到这里反馈

限制

  • 站台之间是直线段 — 不会沿轨道样条曲线弯曲。长距离跨站时可能切角。
  • 叠加层画在地图之上,但在 Xaero 自身的路径点与 HUD 之下。
  • 仅世界地图界面有叠加层 — 小地图角标视图没有。