JourneyMapV6FullscreenMixin
LATE JM6:全屏地图
基本信息
| 属性 | 值 |
|---|---|
| 路径 | com.gtnewhorizons.navigator.mixins.late.journeymap.v6.JourneyMapV6FullscreenMixin |
| 行数 | 42 |
| 注解 | @Mixin(Fullscreen.class)(:15) |
| 构建器 | Mixins 的 JOURNEYMAP_V6 |
⚠️ 与 FullscreenMixin(343 行,JM5)同名类名
—— 不同包(journeymap vs journeymap.v6)、
不同构建器、不同目标类(JM5 与 JM6 的 Fullscreen 是不同类)。
见 Mixins 的同名混淆警告。
1 个 @Shadow + 4 个 @Inject
| 注解 | 行 | method |
at |
关键参数 |
|---|---|---|---|---|
@Shadow |
:18 |
— | — | remap = false |
@Inject |
:21 |
keyTyped |
HEAD |
cancellable = true |
@Inject |
:26 |
mouseClicked |
HEAD |
cancellable = true |
@Inject |
:33 |
openChat |
HEAD |
remap = false |
@Inject |
:38 |
isSearchFocused |
RETURN |
cancellable = true, remap = false |
⚠️ 3 个 cancellable = true(keyTyped / mouseClicked / isSearchFocused)
—— 注入代码可完全取消原方法。
这是「拦截输入」的标准做法:Navigator 要在 JM6 全屏地图里
接管键盘与鼠标,所以要能阻止 JM6 自己的处理。
⚠️ isSearchFocused 挂在 RETURN(不是 HEAD)——
即在原方法返回时改返回值,用来让 JM6 误判搜索框焦点
(从而把按键交给 Navigator)。
⚠️ openChat 与 isSearchFocused 显式 remap = false,
而 keyTyped / mouseClicked 没写 ——
因为后两个是Minecraft 自己的方法名(GuiScreen.keyTyped / mouseClicked),
需要重映射;前两个是 JM6 自己的方法,不能重映射。
⚠️ 没有 require —— 与
MiniMapMixin / WaypointManagerMixin
的 require = 1 不同,本类不做强约束。
与 JM6 主实现的分工
| 职责 | JM5 | JM6 |
|---|---|---|
| 图层渲染 / 点击 / 按钮 | FullscreenMixin(343 行 mixin) | JourneyMapV6Plugin(847 行,官方插件 API) |
| 输入拦截 | 无独立 mixin | 本类(42 行) |
⚠️ JM6 仍需要 mixin(本类), 尽管 README.md 说 JM6 走原生 overlay。 即「JM6 渲染用官方 API,但输入拦截仍靠 mixin」。
相关
- Mixins -
JOURNEYMAP_V6构建器 - FullscreenMixin - JM5 的同名类
- JourneyMapV6Plugin - JM6 主实现
- MapChatMixin - JM6 的另一个 mixin