ModSupport 加载器
基本信息
| 属性 | 值 |
|---|---|
| 抽象基类 | org.dynmap.renderer.CustomModSupportLoader(org/dynmap/renderer/CustomModSupportLoader.java) |
| 实现目录 | src/main/java/org/dynmap/modsupport/loaders/(10 个) |
| 实例化方式 | 字符串反射:Class.forName(parts[0]) + cls.newInstance()(hdmap/TexturePack.java:2001-2002) |
| 注册来源 | 仓库内 src/main/resources/renderdata/*-texture.txt 的 specialModSupportLoader: 行 |
| 抽象方法 | initializeModSupport(DynmapCore, HashMap<String,Integer>)(CustomModSupportLoader.java:9) |
功能
CustomModSupportLoader 允许外部 mod 在运行时把自己的方块/机器渲染规则注入 Dynmap,而无需改 Dynmap 本体。抽象基类提供两个钩子:
| 方法 | 源码行 | 说明 |
|---|---|---|
initializeModSupport(core, filetoidx) |
CustomModSupportLoader.java:9(abstract) |
初始化,传入贴图文件索引表 |
processData(line, data) |
CustomModSupportLoader.java:11 |
逐行处理,默认空实现 |
10 个中有 8 个覆写 processData,仅 ArchitectureCraftModSupportLoader 与 DummyModSupportLoader 不覆写。覆写者按 type 字段分派到 modsupport/ 下各子包的 Support 类。
加载器清单
仓库内 renderdata/ 声明引用的加载器共 10 个,与实际存在的 10 个 .java 完全一一对应,无悬空反射引用,也无孤立加载器:
| 加载器 | 宿主 mod(按引用它的 renderdata 文件) |
|---|---|
AppliedEnergisticsModSupportLoader |
Applied Energistics 2(renderdata/appliedenergistics2-texture.txt:313,name=ae2) |
ArchitectureCraftModSupportLoader |
ArchitectureCraft(renderdata/ArchitectureCraft-texture.txt:21) |
BinnieModSupportLoader |
Botany / Forestry / ExtraTrees(renderdata/BinnieCore-texture.txt:517、renderdata/Botany-texture.txt:134,name=botany) |
BotaniaModSupportLoader |
Botania |
CropsNHSupportLoader |
Crops NH(renderdata/cropsnh-texture.txt:878,name=cropsnh) |
DummyModSupportLoader |
占位实现(renderdata/ForgeMultipart-texture.txt:18、renderdata/CarpentersBlocks-texture.txt:94、renderdata/EnderStorage-texture.txt:16) |
ForestryModSupportLoader |
Forestry(renderdata/Forestry-texture.txt:439,name=for) |
ForgeMultiPartSupportLoader |
ForgeMultipart / ProjectRed(renderdata/ForgeMultipart-texture.txt、renderdata/ProjRed_Core-texture.txt:190,name=fmp) |
GregTechModSupportLoader |
GregTech 5 系(renderdata/gregtech-texture.txt:1498 等 7 处,name=gtmte) |
IC2CropsSupportLoader |
IC2 作物(renderdata/gregtech-texture.txt:771、renderdata/IC2-texture.txt:592,name=ic2crops) |
name= 参数是同一加载器在同一 renderdata 文件内的实例名,使一个文件可同时挂载多个不同配置的加载器实例。
DummyModSupportLoader 是空壳:initializeModSupport 内仅调用 GWM_Util.initialize(core)(DummyModSupportLoader.java:12),无任何额外逻辑。其作用是满足 TexturePack 对 specialModSupportLoader 行的语法要求,让这三个 renderdata 文件可以声明"此处有加载器钩子"而不引入实际行为。
数值
| 数值名 | 值 |
|---|---|
加载器实现数(loaders/ 目录) |
10 |
renderdata/ 中被引用的不同加载器 FQCN 数 |
10 |
| 引用总处数 | 24(renderdata/ 中 specialModSupportLoader 出现 24 次) |
加载器覆写 processData 的数量 |
8(未覆写者:ArchitectureCraftModSupportLoader、DummyModSupportLoader) |
| 悬空反射引用(引用了不存在的类) | 0 |
| 孤立加载器(存在但未被引用) | 0 |
交互
| 触发 | 行为 |
|---|---|
加载 renderdata/*.txt |
遇到 specialModSupportLoader: 行 → Class.forName → newInstance → initializeModSupport |
| 加载器安装完成 | ModSupportImpl.complete(datadir) 写盘到 renderdata/modsupport/(ModSupportImpl.java:33) |
ModSupportImpl.complete 在开写前会先清空 renderdata/modsupport/ 目录下的所有文件(ModSupportImpl.java:37-42),再逐个 tdi.writeToFile(dynamicrenderdata)(ModSupportImpl.java:54)。
相关条目
- ModSupport 渲染器 -
hdmap/renderer/下的 81 个渲染器 - renderdata - 加载器声明的宿主文件
- GT5 集成 - 唯一使用 GT5 编译期 API 的集成