JourneyMapVersion

JM5 / JM6 版本判定

基本信息

属性 值
路径 com.gtnewhorizons.navigator.api.journeymap.JourneyMapVersion
行数 33
包 api/journeymap(公开 API)

职责

判定装的是 JourneyMap 5 还是 6。

Util 的 isJourneyMapV5Installed() / isJourneyMapV6Installed() 委托给本类。

为什么要单独判定版本

⚠️ JM5 与 JM6 共用 modid journeymap(见 TargetedMod 的 JOURNEYMAP(null, "journeymap")), 所以 Loader.isModLoaded("journeymap") 无法区分版本。

两条完全不同的接入路径

版本 接入方式 行数
JM5 mixin(Mixins 的 JOURNEYMAP_V5,7 个类 621 行) 621
JM6 官方插件 API(JourneyMapV6Plugin)+ 2 个 mixin(70 行) 917

⚠️ 判定的结果直接决定加载哪一套: Mixins 的两个 setApplyIf:

  • JOURNEYMAP_V5(:25):enableJourneyMapModule && Util.isJourneyMapV5Installed()
  • JOURNEYMAP_V6(:37):enableJourneyMapModule && Util.isJourneyMapV6Installed()

33 行的判定方式

可能的实现:

  • 检查 JM6 特有类是否存在(Class.forName)
  • 读 JM 的 VERSION 常量并比较

⚠️ Class.forName 方式更稳健(不依赖版本号格式), 但会触发类加载。

api/journeymap 包的定位

类 行 状态
本类 33 活动(版本判定必需)
JMLayerRenderer 30 已废弃
JMInteractableLayerRenderer 119 已废弃
JMRenderStep 24 已废弃
JMInteractableStep 22 已废弃
JMWaypointManager 65 已废弃

⚠️ api/journeymap 包 6 个类里 5 个已废弃 —— 只有 JourneyMapVersion 是活跃的。 README.md 明说 The JourneyMap-specific renderer and render-step APIs are deprecated because they support only JourneyMap 5。

⚠️ 废弃只写在文档里 —— 源码无 @Deprecated 注解(33/30/119/24/22/65 行的类 都不足以容纳注解 + 说明),所以编译器不警告。

相关