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。

相关