Hodgepodge

[!INFO] Git Commit: 7972d3089f9c6993f8de131626368943924ee250 | Updated: 2026-10-02

Hodgepodge 是 GTNewHorizons 的 1.7.10 整合包兼容与优化库,由 mitchej123 与 GTNewHorizons Team 维护。它不注册任何方块、物品、实体、TileEntity 或配方 —— 全部内容是 457 个配置开关、401 个 Mixin 注册条目(引用 566 个 Mixin 类)、12 个 ASM 字节码变换器、4 个指令、3 个网络封包和 1 个游戏规则。

modid 与目录名一致:@Mod(modid = Hodgepodge.MODID),而 Hodgepodge.MODID = "hodgepodge"(Hodgepodge.java:34,42),与本分类目录名 hodgepodge 完全相同。仓库路径为 GTNewHorizons/Hodgepodge,模块名 Hodgepodge。

本模组用 GTNHMixins 框架把补丁按三个相位(PREINIT / EARLY / LATE)注入 Minecraft、Forge 与 60 多个第三方模组,通过 TargetedMod 枚举(62 项)决定每个补丁的生效条件。它同时替换 Paulscode 的 OpenAL 库与 OGG 解码器,是全站少数带完整自研音频子系统的配置类模组。

基本信息

属性 值
modid hodgepodge
分类名一致性 一致(目录名 = modid)
Minecraft 1.7.10
Forge 10.13.4.1614
语言 纯 Java(739 个 .java,0 个 .scala,0 个 .kt)
@Mod 类数 1(com.mitchej123.hodgepodge.Hodgepodge,无第二个 modid)
coremod com.mitchej123.hodgepodge.core.HodgepodgeCore
RetroFuturaBootstrap 插件 com.mitchej123.hodgepodge.core.rfb.HodgepodgeRfbPlugin
硬依赖 gtnhmixins@[2.0.1,)、unimixins@[0.0.20,)、gtnhlib@[0.9.41,)
客户端版本闸门 拒绝 < 2.5.36 的客户端加入(@NetworkCheckHandler)
注册内容 0 方块 / 0 物品 / 0 实体 / 0 TileEntity / 0 配方 / 1 游戏规则 / 4 指令 / 3 封包 / 1 键位
配置 8 个 @Config 分类,457 个叶子开关
许可 LGPL v3

注册内容统计

类别 数量 备注
方块 / 物品 / 实体 / TileEntity / 配方 0 全仓 GameRegistry.registerBlock / registerItem / registerTileEntity 命中 0 次
游戏规则 1 disableHunger
服务端指令 1 /hp(3 子指令)
客户端指令 3 /allocationshud /packetstats /dumptextureatlas
网络封包 3 ID 0–2,全部 S2C
客户端键位 1 Fast Block Placing(默认 KEY_NONE)
配置叶子开关 457 见下表
Mixin 注册条目 401 引用 566 个类,全部可解析(缺失 0)
ASM 变换器 12 9 早期 + 1 晚期 + 2 由 coremod 直接注册
目标模组条目 62 TargetedMod 枚举

配置分类分布

分类 叶子开关 门控的 Mixin 条目 GUI 可见
fixes 226 217 是
tweaks 110 89 是
speedups 52 48 是
memory 29 22 否
sound 24 1 是
asm 10 4 是
debug 6 4 是
general 0 0 是(空分组)
合计 457 387 —

关键实现特征

  • Mixin JSON 无 mixins 数组:三个 mixins.hodgepodge*.json 都不列出任何 Mixin,真正的注册表是 Mixins.java 枚举(401 项),由 GTNHMixins 在运行时读出。只看 JSON 会得出「未注册任何 Mixin」的错误结论。
  • GeneralConfig 是空类:仍被传入 GUI,因此界面上有一个空的 general 分组。
  • MemoryConfig 不在 GUI 列表:8 个配置分类中只有 7 个能在游戏内看到,memory 的 29 个开关只能手改 config/hodgepodge.cfg。
  • 两级音频后端:HRTF / 输出限制器 / 立体声空间化 / 输出设备管理需要 lwjgl3ify(Java 17+);环境混响与立体声下混在 Java 8 的 LWJGL2 后端也可工作。
  • Bukkit / Thermos 是显式不支持的配置:HodgepodgeCore 检测到 org.bukkit.World 后打四行 WARN 声明。

配置列表

  • 模组配置界面 - GTNHLib 提供的游戏内配置 GUI,暴露 7 个分类,并有两处已核实的缺口
  • 早期配置 - hodgepodgeEarly.properties 与 3 个 JVM -D 开关,在 Forge 加载前生效
  • Fixes 配置 - 226 个缺陷修复开关,88 项无分节 + 43 项水更新递归上限 + 92 项按模组分节
  • Tweaks 配置 - 110 个行为变更开关,含 10 项区块生成与人口配置
  • Speedups 配置 - 52 个性能优化开关,含完整的区块生成调度参数
  • Memory 配置 - 29 个内存泄漏与分配优化开关,游戏内 GUI 不可见
  • Sound 配置 - 24 个音频开关,区分 lwjgl3ify 必需与两级通用
  • ASM 配置 - 10 个字节码改写层开关
  • Debug 配置 - 6 个诊断开关

指令列表

  • 指令 - 4 个诊断指令:/hp(3 子指令)、/allocationshud、/packetstats(2 子指令)、/dumptextureatlas

音频列表

  • 音效增强菜单 - 挂在原版声音设置页的 8 个控件,5 项增强
  • 音频管线 - 替换 Paulscode 的 OpenAL 库与 OGG 解码器,7 个自研类实现 5 项增强

客户端列表

核心与引导列表

Mixin 列表

  • Mixin 系统 - 三相位、401 条目、566 个 Mixin 类、17 个钩子、15 个接口
  • 目标模组列表 - TargetedMod 全部 62 个条目与 5 种匹配方式

兼容与网络列表

  • 跨模组修复 - 36 个第三方模组的开关与 Mixin 汇总矩阵
  • 网络封包 - 3 个 S2C 封包:配置同步、方块实体描述批处理、难度同步
  • 饥饿游戏规则 - 1.7.10 原版没有、现代版才有的 disableHunger 规则