模组兼容探测 Mod Support Helper
本 mod 对第三方模组的全部兼容判断集中在一个 11 行的常量类里。本条目记录每个被特判的模组、探测的 modid、以及它影响哪个子系统。
- 类:
iguanaman.iguanatweakstconstruct.util.ModSupportHelper - 探测方式:
Loader.isModLoaded("<modid>"),全部是public static final boolean
完整探测表
| 代码变量 | 探测的 modid | 影响的子系统 | 用途 |
|---|---|---|---|
tiCTooltips |
TiCTooltips |
工具提示 | 标记已装 TiC-Tooltips,工具提示信息由其提供(见 TooltipHelper) |
ExtraTiC |
ExtraTiC |
材料重平衡 | 总开关:Extra Tinkers’ 的 35 种材料重平衡全部挂在这个开关下 |
BiomesOPlenty |
BiomesOPlenty |
材料重平衡、外部流体黏土桶 | Amethyst 材料(_5_diamond)+ 毒液/血两个黏土桶 |
Mekanism |
Mekanism |
材料重平衡 | Osmium、Refined Glowstone |
Metallurgy |
Metallurgy |
材料重平衡 | 34 种冶金材料(基础/贵金属、幻想、下界、末地四组) |
Natura |
Natura |
材料重平衡 | Ghostwood、Darkwood、Fusewood、Bloodwood |
AppliedEnergistics2 |
appliedenergistics2(小写) |
材料重平衡 | Certus Quartz |
TGregworks |
TGregworks |
— | 探测存在但当前代码中未被使用 |
Backhand |
backhand(小写) |
经验累积 | 允许用副手/Backhand 触发经验累积 |
ThermalFoundation |
ThermalFoundation |
生物头颅、头颅掉落 | Blizz 头颅(meta 3)注册 + 8 种 Thermal 头颅掉落 |
特殊之处:modid 大小写不一致
public static final boolean AppliedEnergistics2 = Loader.isModLoaded("appliedenergistics2");
public static final boolean Backhand = Loader.isModLoaded("backhand");
两个 modid 用了全小写,而其余(BiomesOPlenty、ExtraTiC、ThermalFoundation 等)保持驼峰。FML 的 modid 本身是区分大小写的,集成包若修改过 modid 大小写会导致探测失效——这是整合包需要留意的点。
同一大小写约定在 AllowedTools 配置 的 mods 默认名单中也保持一致:
"minecraft", "Metallurgy", "Natura", "BiomesOPlenty",
"ProjRed|Exploration", "appliedenergistics2", "MekanismTool", "ThermalFoundation"
未使用 FML 注解
本 mod 几乎不用 @Optional.Interface / @Optional.Method(全仓库只有一处,见 Iguana Skull 方块 的神秘时代注魔稳定器接口),而是统一用静态 if 判断:
// claybuckets/IguanaItems.java
if (Loader.isModLoaded("BiomesOPlenty")) { BopClayBuckets.register(); ... }
ModSupportHelper 的常量则用在那些需要在类加载期就决定行为的地方(如 IguanaSkull 的 meta 3 在静态初始化块中按 ThermalFoundation 分支注册)。
未安装对应 mod 时相关类根本不会被加载,因此不存在硬依赖导致的崩溃风险。
特殊调用的兼容性
除以上 modid 探测外,还有两处通过 类/字段存在性判断的兼容:
| 判断方式 | 目标 | 位置 |
|---|---|---|
TinkerSmeltery.buckets != null |
Tinkers’ 的熔融桶数组 | IguanaItems——为 null 时 27 条 黏土熔融桶 流体注册全部跳过 |
TinkerTools.thaumcraftAvailable |
神秘时代是否可用 | TinkerMaterialTweaks——false 时 Thaumium 材料重平衡跳过 |
TinkerSmeltery.fluidBlocks != null |
熔融流体方块数组 | ClayBucketHandler——null 时 bucketFill 的熔融金属分支跳过 |
MaterialOverride 中的 IMCHandler.bigWarning |
Tinkers’ 的 IMCHandler | 覆盖模块——用于报告配置处理失败 |
相关
- HarvestLevels 常量(
util/HarvestLevels.java) - 外部流体黏土桶
- 材料重平衡