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 条件启用

配置列表

方块列表

  • BlockList - 50 个方块的完整总表,39 个由 6 个工厂方法生成
  • BabyChest 方块 - 唯一带 TileEntity 的方块,不在 BlockList 内

物品列表

  • NHItemList - 567 个物品总表,其中 477 个是无行为占位物品
  • 特殊物品 - 7 个自定义实现类,含烤箱手套、凋零防护指环、量子面包与 80 个币

指令列表

  • 指令 - 4 条 OP 指令,默认配置下全部不注册

网络列表

配方脚本列表

处理器列表

集成列表

  • 跨模组集成 - 25 个兼容性包、47 个文件,以及完整的依赖分层