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")
}
字段表
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。
相关条目