GT: New Horizons CoreMod
[!INFO] Git Commit:
32c3dfa| Updated: 2026-10-02
GT: New Horizons CoreMod(源码目录 NewHorizonsCoreMod)是 GT: New Horizons 整合包的核心模组,一个 1.7.10 Forge 的整合包粘合层而非玩法 mod。它自身几乎不提供新内容,而是做三件事:把整包上百个模组的配方统一重写、修补各 mod 之间的互不兼容、用 Mixin 与 ASM 变换器做底层干预。仓库 mcmod.info 自述为 Core Mod for the GT: New Horizons Pack.。
本分类记录的是 modid dreamcraft(见下方身份对照),不是 NewHorizonsCoreMod —— 后者只是源码目录名。
⚠️ 身份对照:8 个字符串互不相同
| # | 身份 | 值 | 来源 |
|---|---|---|---|
| 1 | modid | dreamcraft |
Refstrings.java:5;gradle.properties 的 modId = dreamcraft |
| 2 | FML 容器 modid(coremod) | com.dreammaster.coremod.DreamCoreMod |
gradle.properties:modGroup = com.dreammaster + coreModClass = coremod.DreamCoreMod |
| 3 | 资源域名 | dreamcraft(主)+ bartworks、gregtech、letsencryptroot、nuclearcontrol |
src/main/resources/assets/ 下 5 个目录,其中 4 个属于其它 mod |
| 4 | 注册域名 | dreamcraft |
方块/物品名均由 Refstrings.MODID 拼出(BlockList.java:89、NHItemList.java:625) |
| 5 | 分类名 | newhorizonscoremod |
relation.md(备注「驼峰转小写」) |
| 6 | 源码目录名 | NewHorizonsCoreMod |
真实大小写经 os.listdir 核对 |
| 7 | jar 名 | GTNewHorizonsCoreMod |
gradle.properties 的 customArchiveBaseName |
| 8 | 根包名 | com.dreammaster |
gradle.properties 的 modGroup |
补充:GT5 的 Mods 枚举里有一个常量名为 NewHorizonsCoreMod,但它解析出的 modid 是 dreamcraft(GT5 Mods.java:496:NEW_HORIZONS_CORE_MOD = "dreamcraft")。本 mod 的脚本正是通过 NewHorizonsCoreMod.ID 引用自己的物品(ScriptCoreMod.java:518)—— 常量名与 modid 不一致,是本 mod 最容易误判的一处。
⚠️ 语言构成:纯 Java,无 Kotlin
全仓 315 个 .java(git ls-files | grep -c '\.java$'),.kt / .scala 各 0 个。唯一的 .kts 是构建脚本 build.gradle.kts(Gradle Kotlin DSL),不是游戏代码。全部源码位于 src/main/java(309)与 src/test/java(6)。
版本与构建
| 项 | 值 | 来源 |
|---|---|---|
| Minecraft | 1.7.10 | gradle.properties 的 minecraftVersion |
| Forge | 10.13.4.1614 | gradle.properties 的 forgeVersion |
| 构建系统 | RetroFuturaGradle(com.gtnewhorizons.gtnhconvention 插件) |
build.gradle.kts |
| 版本门 | git tag 2.9.80(本仓唯一 tag,恰好落在 HEAD 上) |
git tag --points-at HEAD |
| Access Transformer | dreamcraft_at.cfg |
gradle.properties |
| Mixins | 开启,mixinsPackage = mixin.mixins |
gradle.properties |
引用 commit 32c3dfa01f9b4b055cd5b924cc9ba0788c24b1b1(已用 git cat-file -t 验证类型为 commit),不使用 git describe。 本仓只有 1 个 tag,git describe 在此不会给出错误分支,但 tag 语义(2.9.80)与 mod 版本语义不同,故仍以 commit 为准。
Refstrings.VERSION 取自构建期生成的 com.dreammaster.lib.BuildVersion.VERSION(gradle.properties 的 generateGradleTokenClass),该类不在源码树中,由 gradleTokenVersion = VERSION 占位符在编译时替换。
依赖分层
| 层级 | 数量 | 内容 |
|---|---|---|
FML required |
5 | gregtech(required-before)、Forge@[10.13.2.1291,)、gtnhlib@[0.5.15,)、YAMCore@[0.5.76,)、Baubles@[1.0.1.10,) |
FML after |
6 | EnderIO、HardcoreEnderExpansion、Thaumcraft、amazingtrophies、backhand、betterquesting |
Gradle api |
3 | GT5-Unofficial、Yamcl、Baubles-Expanded |
Gradle implementation |
2 | GTNHLib、tc4recipelib |
Gradle compileOnly |
30 | 全部可选模组,均带 { transitive = false } |
Gradle compileOnlyApi |
1 | Mobs-Info |
Gradle runtimeOnlyNonPublishable |
2 | WailaHarvestability、Galacticraft(仅本地测试) |
dependencies.gradle 中被注释掉的依赖行不算依赖。
实际注册的内容
| 类别 | 数量 | 载体 |
|---|---|---|
@Mod 类 |
1 | com.dreammaster.main.MainRegistry(MainRegistry.java:107) |
实现 IFMLLoadingPlugin 的类 |
1 | com.dreammaster.coremod.DreamCoreMod(:25) |
| 方块 | 50 | BlockList 枚举 + 循环注册(BlockList.java:101-105) |
| 带 TileEntity 的方块 | 1 | BabyChest,不在 BlockList 内(MainRegistry.java:295-299) |
| 物品 | 567 | NHItemList 枚举 + 循环注册(NHItemList.java:637-641) |
| 自定义物品实现类 | 7 | 其中 CoinItem 一类独占 80 个 |
| 创造标签 | 7 | ModTabList(YAMCore CreativeTabsManager 托管) |
| 指令 | 4 | 全部权限 2、全部受开关控制、默认全部不注册 |
| 网络消息 | 1 | ZZClientOnlySyncMessage,discriminator 1,Side.CLIENT |
| 配方脚本 | 111 | IScriptLoader 实现(110 个 new + 1 个静态单例) |
| GT 配方文件 | 45 | gthandler/recipes/,共 26924 行 |
| 早期 Mixin | 5 | 由 DreamCoreMod.getMixins() 注册 |
| 晚期 Mixin | 2 | 由 Mixins 枚举注册 |
| ASM 变换器 | 3 | DreamClassTransformer |
| 配置项 | 14 | CoreModConfig,分 Modules(12) / ModFixes(2) 两类 |
| XML 配置文件 | 4 | HazardousItems / CustomDrops / CustomFuels / CustomToolTips |
| mod-fix | 2 | OilGeneratorFix、MinetweakerFurnaceFix |
⚠️ 三个 Mixin 注册路径互不相同
统计 Mixin 时必须分开数,否则会得出错误结论:
| 路径 | 载体 | 数量 |
|---|---|---|
| 早期 | DreamCoreMod.getMixins() 返回 List<String> |
5 |
| 晚期 | com.dreammaster.mixin.Mixins 枚举 implements IMixins |
2 |
| ASM | DreamClassTransformer 的 transformerMap |
3 |
三个 mixins.*.json 文件全部不含 mixin 数组 —— 清单在 Java 侧(早期在 coremod 的方法体里,晚期在枚举里)。
配方体系有三套并行
| 体系 | 入口 | 登记目标 | 规模 |
|---|---|---|---|
| 配方脚本 | ScriptLoader.run() |
GameRegistry.addRecipe |
111 脚本 / 4034 次配方调用 |
| GT 配方 | GT_CustomLoader.run() |
GT5 RecipeMaps.* |
45 文件 / 26924 行 |
| mod-fix | ModFixesMaster |
事件总线与 API 改写 | 2 个修复 |
维度列表
核心模组与 ASM 列表
- DreamCoreMod - FML 早期入口:证书注入、配置管理、5 个早期 Mixin 的注册
- CoreMod 配方破坏器 - 3 个 ASM 变换器,抹除 Bibliocraft / AdvancedSolarPanel / GraviSuite 的原版配方
Mixin 列表
- Early Mixin - 5 个,含退出确认窗口、整合包图标、禁用 Open to LAN
- Late Mixin - 2 个,按
TargetedMod声明的前置 mod 条件启用
配置列表
- CoreModConfig - 14 个配置项,分 Modules 与 ModFixes 两类
- DreamCoreMod.properties 配置 - coremod 层独立维护的第二套属性文件
方块列表
- BlockList - 50 个方块的完整总表,39 个由 6 个工厂方法生成
- BabyChest 方块 - 唯一带 TileEntity 的方块,不在 BlockList 内
物品列表
- NHItemList - 567 个物品总表,其中 477 个是无行为占位物品
- 特殊物品 - 7 个自定义实现类,含烤箱手套、凋零防护指环、量子面包与 80 个币
指令列表
- 指令 - 4 条 OP 指令,默认配置下全部不注册
网络列表
- ZZClientOnlySyncMessage - 本 mod 唯一的封包,服务端到客户端单向同步一个布尔值
配方脚本列表
处理器列表
- 危险物品模块 - XML 驱动的接触伤害系统,带存档安全闸
- 数据驱动模块 - CustomDrops / CustomFuels / CustomToolTips 三个 XML 模块
- 矿物词典 - 29 个词典名常量,为太空材料补齐矿物词典
- Mod 修复框架 - IModFix 注册表,实际注册 2 个修复
集成列表
- 跨模组集成 - 25 个兼容性包、47 个文件,以及完整的依赖分层