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。
相关条目
- MixinEntityRenderer_Xaeros -
isXaerosMinimapLoaded的唯一读取方 - Mod 入口 - 调用
ModStatus.preInit() - MixinCompatHackTweaker - 同样使用
TargetedMod.XAEROS_MINIMAP.modId