模组兼容探测 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 覆盖模块——用于报告配置处理失败

相关