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」。

相关