MiniMapMixin

LATE JM5:小地图注入

基本信息

属性 值
路径 com.gtnewhorizons.navigator.mixins.late.journeymap.MiniMapMixin
行数 71
注解 @Mixin(value = MiniMap.class, remap = false)(:25)
构建器 Mixins 的 JOURNEYMAP_V5

3 个 @Shadow(:29、:33、:36)

⚠️ 无参形式(不带 remap), 但类级 @Mixin(..., remap = false) 已全局关闭重映射, 所以类级设置覆盖了这三个。

⚠️ 3 个 @Shadow 各隔 3-4 行 —— 大概率每个前面有 javadoc 说明 shadow 了什么。

唯一的 @Inject(:39)

@Inject(method = "drawOnMapWaypoints", at = @At(value = "HEAD"), require = 1)
参数 值 说明
method drawOnMapWaypoints JM5 小地图的路点绘制方法
at @At(value = "HEAD") 方法头
require 1 ⚠️ 要求恰好命中 1 次,否则抛错

⚠️ require = 1 是强约束 —— 若 JM5 版本变化导致该方法签名不匹配, mixin 应用会直接失败(启动崩溃),而不是静默跳过。 这是「宁可崩也不静默失效」的写法。

⚠️ drawOnMapWaypoints 是 JM5 的方法名, 且没有描述符(没有 (L...;)V)—— 所以按名字匹配,若 JM5 有重载会命中多个(与 require = 1 冲突)。

与 FullscreenMixin 的分工

mixin 目标 行
FullscreenMixin Fullscreen(全屏地图) 343
本类 MiniMap(小地图) 71

⚠️ 本类只有 71 行,而全屏版 343 行 —— 小地图的注入点少得多(drawOnMapWaypoints 一个方法头就够, 而全屏要处理渲染/点击/按键/按钮/标记多个面)。

对应的图层侧方法是 LayerManager 的 recacheMiniMap(int, int, int)(:260)与 recacheMiniMap(int, int, int, int)(:272)两个重载 (小地图有 3 参 / 4 参两版)。

相关