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 参两版)。
相关
- Mixins -
JOURNEYMAP_V5构建器 - FullscreenMixin - 同一地图的另一个 mixin
- LayerManager -
recacheMiniMap