GT5 集成
基本信息
| 属性 | 值 |
|---|---|
| 主类 | org.dynmap.modsupport.gregtech.GregTechSupport(modsupport/gregtech/GregTechSupport.java) |
| 加载器 | org.dynmap.modsupport.loaders.GregTechModSupportLoader(loaders/GregTechModSupportLoader.java) |
| 单例 | public static final GregTechSupport INSTANCE = new GregTechSupport();(GregTechSupport.java:34) |
| 编译期依赖 | com.github.GTNewHorizons:GT5-Unofficial:5.09.52.594:dev(dependencies.gradle:69-71,compileOnly) |
| 运行时依赖 | 同上,runtimeOnlyNonPublishable(dependencies.gradle:90) |
| 引用处数 | renderdata/ 中 name=gtmte 共 8 处 |
功能
本 mod 唯一使用第三方 mod 编译期 API 的集成。GregTechSupport 直接 import gregtech.api.*(全仓 gregtech.* 导入共 12 处),因此 GT5 缺席时该类无法加载。
这与仓库内其他 mod 集成形成对比:AE2、IC2、Thaumcraft、Botania、Forestry 等均只通过 renderdata/*.txt 的字符串声明 + 纯数据处理接入,源码中没有对应 mod 的任何 import(grep -rn 'appeng' --include=*.java src/main/java 0 命中;AE2Support 位于 modsupport/appliedenergistics2/AE2Support.java,靠数据行驱动)。
加载器分派
GregTechModSupportLoader.processData 按 type 字段分派 6 种记录类型:
type |
处理方法 | 源码行 |
|---|---|---|
iconset |
GregTechSupport.INSTANCE.processIconSet(data, filetoidx) |
GregTechModSupportLoader.java:22-23 |
mte |
processMte(data, filetoidx) |
GregTechModSupportLoader.java:25-26 |
hatchbase |
processHatchBase(data, filetoidx) |
GregTechModSupportLoader.java:28-29 |
hatchbaseexpl |
processHatchBaseExplicit(data, filetoidx) |
GregTechModSupportLoader.java:31-32 |
mehatch |
processMeHatch(data) |
GregTechModSupportLoader.java:34-35 |
material |
processMaterial(data, filetoidx) |
GregTechModSupportLoader.java:37-38 |
type 为 null 时直接 return(GregTechModSupportLoader.java:19-20),不做任何处理。
关联指令
GregTechSupport 的私有构造函数内注册 /gwm gtdump:
private GregTechSupport(){
GwmCommand.registerSubCommand(new GTDumpCommand());
}
位于 GregTechSupport.java:43-45,子命令名 super("gtdump") 见 GregTechSupport.java:264。
因为注册发生在私有构造函数中,而该构造函数只由静态字段 INSTANCE 的初始化触发(GregTechSupport.java:34),所以 /gwm gtdump 在 GregTechSupport 类首次被加载时出现——典型触发点是 GregTechModSupportLoader.processData 首次访问 GregTechSupport.INSTANCE。GT5 缺席时该类不会加载,/gwm gtdump 不存在。
数值
| 数值名 | 值 |
|---|---|
processData 支持的 type 数 |
6 |
name=gtmte 引用处数 |
8 |
gregtech.* 导入数 |
12 |
| 材质表大小 | MaterialEntry[] materialEntries = new MaterialEntry[1000](GregTechSupport.java:38) |
| 孵化器基底表 | int[][] validHatchBaseBlocks = new int[65536][](GregTechSupport.java:40) |
| 孵化器贴图表 | int[][] hatchBaseTextures2 = new int[128][](GregTechSupport.java:41) |
| ME 插槽位图 | boolean[] meConnectables(GregTechSupport.java:42) |
其中 validHatchBaseBlocks 分配 65536 个数组槽、hatchBaseTextures2 分配 128 个,是本 mod 中最大的两张预分配表。
交互
| 触发 | 行为 |
|---|---|
加载含 specialModSupportLoader:…GregTechModSupportLoader,name=gtmte 的 renderdata |
实例化 loader,转交 GregTechSupport |
遇到未知 type |
静默忽略(if(type == null) return; 之后的 if-else 链无 default 分支) |
| GT5 缺席 | GregTechSupport 不加载,/gwm gtdump 不存在 |
相关条目
- ModSupport 加载器 - 反射实例化机制
- ModSupport 渲染器 -
GregTechMachineRenderer等 3 个 GT 渲染器 - /gwm -
gtdump子命令的注册来源