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 不存在

相关条目