ModStatus

基本信息

属性 值
类名 com.gtnewhorizons.angelicacompat.ModStatus
加载时点 FML preInit 阶段(由 AngelicaCompat 主类 调用 ModStatus.preInit())
客户端/服务端 双方均可(变量在两侧都被设置)

功能

记录第三方 mod 的运行时加载状态,供 Mixin 在游戏运行时判断。AngelicaCompat 当前只跟踪 1 个 mod:

public static boolean isXaerosMinimapLoaded;

public static void preInit() {
    isXaerosMinimapLoaded = Loader.isModLoaded(TargetedMod.XAEROS_MINIMAP.modId);
    // = Loader.isModLoaded("XaeroMinimap")
}

字段表

字段 类型 取值来源 读取方
isXaerosMinimapLoaded boolean Loader.isModLoaded("XaeroMinimap") MixinEntityRenderer_Xaeros

TargetedMod 枚举见 com.gtnewhorizons.angelicacompat.mixins.TargetedMod,5 个枚举项:

枚举项 modName modId
VANILLA “Minecraft” null
CAMPFIRE_BACKPORT “CampfireBackport” campfirebackport
EXTRA_UTILITIES “ExtraUtilities” ExtraUtilities
MINEFACTORY_RELOADED “MineFactory Reloaded” MineFactoryReloaded
XAEROS_MINIMAP “Xaeros Minimap” XaeroMinimap

实现细节

  • preInit() 是 void 返回值,因此 isXaerosMinimapLoaded 在调用后立即可用;
  • 字段都是 public static,未加锁——preInit 在主线程执行,单次赋值后只读,线程安全;
  • 没有 reload 机制;若 MC 1.7.10 通过 /reload 类指令(实际上不存在),mod 状态不会刷新。

数值

字段 默认 含义
isXaerosMinimapLoaded 随运行时 XaeroMinimap 是否被 Loader 识别

限制

  • 只记录 1 个 mod;其它被 patch 的 mod 状态由 CompatHandlers.shouldBeLoaded() 间接判断(依据 PatchesConfig,不依据 Loader.isModLoaded)。
  • 一旦初始化不再刷新;动态 mod 加载(理论上不存在)后状态位仍是 false。

第三方 mod 集成

依赖 FML Loader.isModLoaded。

相关条目