GTNHLib
[!INFO] Git Commit:
8c3c2df9fe52a8c880d85379ff8d1eeff9bb26e5| Updated: 2026-10-02
GTNHLib(显示名 GTNH Lib)是 GTNH 模组组的核心工具库,不是玩法模组。玩家在游戏里几乎看不到它 —— 它不提供方块、物品或合成配方,普通安装下注册 0 个方块、0 个物品(唯有的 7 个测试方块与 1 个测试物品由 enableTestBlocks / enableTestItems 两个默认 false 的开发用配置项把守,见 CommonProxy.java:72-84)。它的价值是其他模组编程所依赖的 API 表面:配置系统、事件总线、Mixin 引导、指令解析、网络通道、方块状态与队伍系统。
modid 为 gtnhlib,与分类名一致。三处独立来源相互印证:GTNHLib.java:23 的 public static final String MODID = "gtnhlib";@Mod(modid = GTNHLib.MODID, ...)(GTNHLib.java:15-20);以及 gradle.properties 的 modId = gtnhlib。全 jar 仅 1 个 @Mod 注解类(grep -rn '^@Mod' --include='*.java' src/ 只命中 GTNHLib.java:15),另有一个非 @Mod 的 coremod 入口 core.GTNHLibCore(implements IFMLLoadingPlugin),两者职责分离:coremod 负责类加载期工作,@Mod 类负责游戏生命周期。
目标环境为 Minecraft 1.7.10 + Forge 10.13.4.1614。构建系统是 RetroFuturaGradle(dependencies.gradle 中使用 rfg.deobf(...)),因此版本判定取自 gradle.properties 的 minecraftVersion = 1.7.10,并与 mcmod.info 的 "mcversion": "${minecraftVersion}" 占位符、@Mod(acceptedMinecraftVersions = "[1.7.10]")、@IFMLLoadingPlugin.MCVersion("1.7.10") 四处一致。
运行期硬依赖仅 1 个:com.github.GTNewHorizons:GTNHExtLib:1.0.4(dependencies.gradle 中唯一的 api(...) 声明,以 shadow 方式打入)。另有 3 个由 FalsePatternLib DepLoader 在运行时下载的库,见 META-INF/gtnhlib_deps.json:it.unimi.dsi:fastutil:8.5.18、org.joml:joml:1.10.8、com.mojang:brigadier:1.0.18 —— brigadier 在这里是 1.7.10 上的真实运行期依赖,不是 1.21 内容。此外启动时校验 UniMixins ≥ 0.1.23,不满足直接抛 RuntimeException 拒绝启动。
API 列表
- 方块模型 API -
IBlockModelProvider/BlockModelInfo,让方块向ModelISBRH提供自定义烘焙模型 - 离屏 Tessellator 捕获 - 在渲染线程外收集绘制调用,供批量与异步渲染
- 动态方块音效 -
IBlockWithCustomSound,音效随世界状态变化,可在服务端执行 - 半透明物品渲染 -
ITranslucentItem标记接口,物品 3D 半透明渲染 - 花盆兼容 -
IFlowerPottable,4 个全 default 方法让模组方块种进原版花盆 - 唱片元数据 API -
MusicRecordMetadataProvider,NBT 感知的唱片曲目查询 - 世界转换警告 API - 存档需转换时的自定义确认 GUI 与服务端文本降级
- Thaumcraft 研究与注配方 API - 注魔台配方替换不掉落、格式化研究页
- 虚拟子世界注册表 - LittleBlocks 类模组的子世界地址双向映射
配置系统列表
- 配置系统 API -
@Config注解体系:5 个类级成员、28 个字段注解,自动生成配置 GUI - GTNHLib 主配置 - 27 个运行时开关,coremod 构造期注册,5 项需重启
- 数字格式化配置 - 独立 cfg,控制记法、mB/L 与 17 种区域设置
- 示例配置 - 供下游 mod 抄写的完整演示,仅开发环境注册
Mixin 列表
- Mixin 枚举 - 27 个注入组、54 个 mixin 的条件与阶段全表
- Mixin 引导流程 - 4 个 JSON 数组全空、真实清单在枚举与 plugin 中
事件列表
指令列表
- 命令行解析 API - 把 Mojang Brigadier 接到 1.7.10,含 Thermos 兼容
- 标题指令 -
/title,6 个子动作,配权限等级 2 - 方块状态指令 -
/blockstate,检查与修改方块属性 - 客户端指令 -
/iteminhand与/resourcepack,仅客户端
网络列表
- 网络处理器 - 单通道 7 个数据包,6 下行 1 上行
兼容层列表
工具类列表
- 物品栈与传输 API -
ImmutableItemStack只读视图与ItemTransfer传输引擎 - 内存与哈希工具 - FNV-1a 32/64 与 LWJGL 3 移植的
MemoryStack
集成列表
- 队伍系统 - 3 级角色、14 个子指令、每队伍一个 JSON 存档
- ModularUI2 队伍 GUI - 队伍功能的图形界面,缺 MUI2 时自动降级
- 自定义聊天组件 - 可 JSON 序列化的
IChatComponent注册表与 5 个内置组件