ExtraLoader 兼容矩阵
[!INFO] 注册真源:
loader/extras/ExtraLoader.java(33 处loaders.add(...)) 目录:loader/extras/共 39 个 Java 文件
Mobs Info 用 IExtraLoader 接口为每个 mod 写一个掉落解析器。ExtraLoader 的静态初始化按 modid 守卫条件化注册。
[!IMPORTANT] 文件数 ≠ 注册数:
loader/extras/有 39 个文件,但只有 33 处loaders.add(...)。差额来自 6 个不直接注册的文件(见下)。多数注册带条件守卫&& Loader.isModLoaded(...)或&& !alreadyProvided.contains(LoaderReference.X.modID)。
已注册 loader(33 个)
Minecraft、DraconicEvolution、TinkersConstruct、Witchery、ThaumicHorizons、ThaumicBases、WirelessCraftingTerminal、CoFHCore、HardcoreEnderExpansion、Botania、HarvestCraft、OpenBlocks、BloodArsenal、BloodMagic、Avaritia、ThaumicTinkerer、ForbiddenMagic、ElectroMagicTools、WitchingGadgets、Thaumcraft、Automagy、GregtechPlusPlus、DQRespect、ChocoCraft、ExtraUtilities、EtFuturum、LycanitesMobs、MineTradingCards、Reliquarry、MineFantasyII、LootPlusPlus、EditMobDrops、MineTweaker
不直接注册的 6 个文件
| 文件 | 类型 | 说明 |
|---|---|---|
IExtraLoader.java |
接口 | loader 契约 |
ExtraLoader.java |
注册器 | 本身不是 loader |
Translations.java |
枚举 | 掉落描述的翻译键常量表(30+ 个 MINECRAFT_SLIME、BASE_CHANCE、DROPS_ONLY_WITH_WEAKNESS 等) |
ReliquaryCompatibility.java |
枚举 | LEGACY / MODERN / UNSUPPORTED 三态探测 |
ReliquaryLegacy.java |
IExtraLoader | Reliquary 1.2 稳定版掉落 |
ReliquaryModern.java |
IExtraLoader | Reliquary beta 1.2.257+ 掉落 |
Reliquary 三态版本探测
已注册的 Reliquarry.java 依赖 ReliquaryCompatibility.detect(version, classLoader) 在运行时分派到 Legacy 或 Modern 实现,避免直接初始化可选 mod 的类(枚举注释:“Selects the drop API without initializing optional Reliquary classes”)。
探测顺序(ReliquaryCompatibility.java:16-30):
- 反射
xreliquary.init.XRRecipes与xreliquary.event.CommonEventHandler,校验 4 个方法签名 →MODERN - 版本等于
"1.2"且存在xreliquary/items/ItemSquidBeak.class→LEGACY - 否则 →
UNSUPPORTED
[!NOTE] 源码注释指出:Reliquary beta 1.2.257 的版本号也是
"1.2"但 API 与稳定版不同,故必须先做方法签名探测再退回版本号判断。这个「同版本号不同 API」的陷阱值得记录。另注意文件命名不一致:注册用的类是
Reliquarry(双 r),而分派相关类都是Reliquary(单 r)。grep 时容易漏。
与本 wiki 已收录分类的交叉
loader/extras/ 中直接包含 Forbidden Magic 与 BloodArsenal 的掉落解析器(另有 BloodMagic.java,对应 AWWayofTime)。这三个 loader 说明 Forbidden Magic / Blood Arsenal 的生物掉落不遵循原版掉落表,需要独立解析。