GuiMapMixin
LATE:Xaero World Map GUI(332 行)
基本信息
| 属性 | 值 |
|---|---|
| 路径 | com.gtnewhorizons.navigator.mixins.late.xaerosworldmap.GuiMapMixin |
| 行数 | 332 |
| 注解 | @Mixin(value = GuiMap.class, remap = false)(:40) |
| 构建器 | Mixins 的 XAEROS_GUI |
6+ 个 @Shadow(:71-:86)
⚠️ 6 个 @Shadow 在连续 16 行内(:71、:74、:77、:80、:83、:86)——
每 3 行一个,无参形式(靠类级 remap = false)。
⚠️ 40 行注释 + 约 30 行空隙 = 前 70 行全是注释/import, 占全文件 21%。
332 行做什么
GuiMap 是 Xaero World Map 的全屏地图 GUI。
本 mixin 要在其中接入:
| 能力 | 涉及的 API |
|---|---|
| 视口缓存 | LayerManager.recacheFullscreenMap(:286) |
| 渲染步骤 | LayerRenderer 的 getRenderSteps() / getReversedRenderSteps() |
| 渲染器 | XaeroLayerRenderer |
| 点击交互 | UniversalInteractableRenderer.onMapClick(:54) |
| 悬停 | onMouseMove(:41) |
| 图层按钮 | ButtonManager + SizableGuiTexturedButton |
| 地图标记 | MapMarker |
与 JM5 的对比
| 地图 | 全屏地图 mixin | 行数 |
|---|---|---|
| JourneyMap 5 | FullscreenMixin | 343 |
| Xaero World Map | 本类 | 332 |
⚠️ 行数几乎相同(343 vs 332) —— 说明两个地图的全屏接入工作量相当, 差异只在 API 风格(Xaero 走 XaeroRenderStep, JM5 走 JMRenderStep)。
⚠️ 但 Xaero 的按钮需要 SizableGuiTexturedButton(69 行) —— 一个「可指定尺寸」的按钮控件,因为 Xaero 的按钮尺寸与 JM5 不同。
单模组要求
Mixins 的 XAEROS_GUI(:39-43)
只调 1 次 addRequiredMod(TargetedMod.XAEROWORLDMAP),
setApplyIf 是 enableXaeroWorldMapModule。
目标类名的歧义
⚠️ GuiMap 与 JM5 的 Fullscreen 语义对应
(都是全屏地图 GUI),但类名完全不同。
本 mod 里「全屏地图」在三处有不同类名:
JM5 = Fullscreen、JM6 = Fullscreen(不同包)、Xaero = GuiMap。
相关
- Mixins -
XAEROS_GUI构建器 - XaeroLayerRenderer / XaeroRenderStep - Xaero 渲染 API
- SizableGuiTexturedButton - Xaero 按钮控件
- FullscreenMixin - JM5 的对应物