跨模组修复

基本信息

属性 值
覆盖模组数 36 个第三方模组 + 原版 / Forge + Bukkit/Thermos
相关条目 目标模组列表(62 个 TargetedMod 条目)、Fixes 配置、Tweaks 配置、Speedups 配置

功能

Hodgepodge 的一半工作量是「让 1.7.10 的大型整合包能跑起来」。本模组不注册任何方块或物品 —— 它 90% 的价值是兼容层。

三条互相独立的兼容路线:

路线 载体 规模
配置门控的 Mixin Mixins.java 的 153 个 addRequiredMod 条目 162 次引用
配置门控的 ASM 变换器 AsmTransformers / LateAsmTransformers THERMOS_SLEDGEHAMMER_FURNACE_FIX 一条
跨模组运行期协调 Compat.java、HodgepodgeEventHandler 见下

运行期协调的三处

位置 行为
core/HodgepodgeCore.java:149-155 若 CoreTweaks 在类路径上且 TweaksConfig.threadedWorldDataSaving 打开,调 Config.enhanceMapStorageErrors.disable() 并打 INFO 说明冲突
HodgepodgeEventHandler.onServerStarting 无条件 EVENT_HANDLER.setAidTriggerDisabled(false),注释解释为「防止 ExtraUtilities 的 Spike 曾崩溃回主菜单导致变量未更新」
TargetedMod.FALSETWEAKS_LT_433 版本判定谓词顺带 Launch.blackboard.remove("hodgepodge.FixesConfig.fixBottomFaceUV")

依赖声明

@Mod(dependencies = …)(Hodgepodge.java:36-37)只声明 3 个硬依赖:

modId 版本约束 用途
gtnhmixins required-after:gtnhmixins@[2.0.1,) Mixin / transformer 框架
unimixins required-after:unimixins@[0.0.20,) UniMixins 库
gtnhlib required-after:gtnhlib@[0.9.41,) 配置框架、GUI、上报辅助

编译期依赖另有 RetroFuturaBootstrap 1.0.16(compileOnly)与 supernova 0.0.2:api(compileOnly),不是运行期硬依赖。

dependencies.gradle 里另外约 40 个模组全部是 transformedModCompileOnly —— 即「只用于编译这些模组的 Mixin,不进发布元数据、不进运行类路径」。把它们误当成 Hodgepodge 的依赖是常见错误;transformedMod 作用域中只有 NotEnoughItems 2.8.143-GTNH 一个会真正进运行类路径。

数值

客户端版本闸门

@NetworkCheckHandler checkModList(Hodgepodge.java:127-134)拒绝 低于 2.5.36 的客户端加入,源码注释说明原因:确保 fastBlockPlacingDisableServerSide 设置被遵守。服务端自身不做检查(Side.SERVER 直接返回 true)。

按模组汇总

模组 fixes 开关 tweaks 开关 speedups 开关 必需 Mixin 条目
模组 fixes 开关 tweaks 开关 speedups 开关 必需 Mixin 条目
------ ------------ ------------- ---------------- ----------------
原版 / Forge(未分节部分) 131 70 46 —
(多模组通用) 2 6 — —
Bukkit / Thermos 1 — — 5
IndustrialCraft 2 14 7 1 22
Extra Utilities 17 1 — 19
Biomes O’ Plenty 6 4 3 14
Thaumcraft 7 2 1 12
Bibliocraft 6 — — 8
Witchery 6 — — 8
CoFH Core 4 1 — 8
VoxelMap 2 1 1 4
BetterHUD 3 — — 2
Journey Map 3 — — 3
Minefactory Reloaded 1 2 — 4
Modular Powersuits — 3 — 3
NBT 字符串池化 — 3 — —
Pam’s Harvest the Nether 3 — — 4
WorldData 线程化保存 — 3 — —
Hunger Overhaul 2 — — 3
Minechem 1 1 — 1
Optifine 1 1 — 1
Project Red — 2 — —
The Lord of the Rings 2 — — 3
Thermal Dynamics 2 — — 2
Automagy — 1 — 2
Bibliowoods Forestry 1 — — 1
Candycraft 1 — — 1
Extra TiC 1 — — 1
Galacticraft Core 1 — — 2
Gliby’s Voice Chat 1 — — 1
Immersive Engineering 1 — — 1
Morpheus 1 — — 1
NotEnoughItems — 1 — 1
Portal Gun 1 — — 1
Railcraft — 1 — 1
Traveller’s Gear 1 — — 2
Xaero’s Minimap 1 — — 1
Xaero’s World Map 1 — — 1
ZTones 1 — — 1

「必需 Mixin 条目」列只统计 Mixins.java 中以该模组为 addRequiredMod 的条目数。表内合计 144,少于全量 162,差额 18 次分散在 Project Red、BugTorch、Advanced Solar Panels、Dragon API、ArchaicFix、Optifine、lwjgl3ify、Supernova、EndlessIds、Et-Futurum-Requiem、Ender IO、Baubles、Minechem 等只被其它模组的分节间接覆盖的条目上。

明细

重点兼容

  • IC2(22 个 Mixin 条目,最多) —— 覆盖反应堆、模具、电网、夜视、键盘交互、锡罐、橡胶树、骨粉、与 EndlessIds 的冲突。TargetedMod.IC2 特别处理了「IC2 与 IC2 Classic 共用 modId」的问题。
  • Extra Utilities(19 个) —— 桶吞 IC2 电容与 Forestry 胶囊、Lapis Caelestis 微块、透明物品渲染、Division Sigil 附魔复制 bug、末影采石场 RF 存储覆盖、Spike 刷怪。
  • Bukkit / Thermos(5 个 Mixin,且被 10 个条目排除) —— Hodgepodge 明确检测到 org.bukkit.World 后打四行 WARN 声明「这是不支持的配置」。ASMConfig.thermosCraftServerClass 需要手改以适配具体实现的 CraftServer 类名。

三条 Java 12 兼容补丁

FixesConfig 里有 3 个显式的 Java 12 兼容项,说明 1.7.10 模组在现代 Java 上常见的失败模式:

开关 目标模组 说明
java12BopCompat Biomes O’ Plenty Java 12 兼容补丁
java12LotrCompat The Lord of the Rings Java 12 兼容补丁
java12MineChemCompat Minechem Java 12 兼容补丁

另有 disableWitcheryPotionExtender(Witchery,Java 12 兼容)与 fixThaumcraftEE3Check(Thaumcraft 在现代 Java 上检查 EE3 物品)。

包利用漏洞修复

FixesConfig 里有 2 个针对第三方模组网络封包的利用漏洞修复:

开关 模组
fixBibliocraftPackets Bibliocraft
fixZTonesPackets ZTones

相关条目

  • 目标模组列表 - 62 个 TargetedMod 条目及其匹配方式
  • Mixin 系统 - 153 个受模组门控的条目
  • Fixes 配置 - 88 项无分节的原版 / Forge 修复 + 43 项水更新递归上限 + 92 项按模组分节的修复
  • ASM 配置 - thermosCraftServerClass 等与外部环境耦合的项
  • 指令 - /hp anchor list 依赖 Railcraft