客户端渲染映射
vexatos.tgregworks.proxy.ClientProxy 的 addToolRenderMappings()。
在 TGregworks.init 阶段调用,每个入选材料注册一条 TiC 材质渲染映射,
让工具模型在客户端能正确按材料上色。
代码
@Override
public void addToolRenderMappings() {
for (Materials m : TGregworks.registry.toolMaterials)
TConstructClientRegistry.addMaterialRenderMapping(TGregworks.registry.matIDs.get(m), "tgregworks", "", true);
}
| 参数 | 值 | 含义 |
|---|---|---|
| 第 1 | matIDs.get(m) |
TGregworks 的材料 ID(从 1500 起分配的那一套) |
| 第 2 | "tgregworks" |
资源域(纹理目录) |
| 第 3 | "" |
空字符串——不指定具体文件名 |
| 第 4 | true |
覆写已有映射(GTNH 上同名材料可能被别的 mod 抢先注册过) |
因为第 3 个参数是空串,每个部件只靠物品本身的 getColorFromItemStack 染色,
不加载任何额外贴图——见 部件材料 NBT 的颜色一节。
代理结构
@SidedProxy(clientSide = "vexatos.tgregworks.proxy.ClientProxy",
serverSide = "vexatos.tgregworks.proxy.CommonProxy")
public static CommonProxy proxy;
TGregworks.init 里三个调用:
| 调用 | 客户端 | 服务端 |
|---|---|---|
proxy.addToolRenderMappings() |
遍历材料注册映射 | CommonProxy 的实现是空方法体(注释 // NO-OP) |
proxy.registerRenderers() |
整个方法体被注释掉(原本要 RenderingRegistry.registerEntityRenderingHandler(TGregDaggerEntity.class, …)) |
空方法体 |
registry.registerFluids() |
不走代理,客户端服务端都执行 | 同左 |
CommonProxy 只有 2 个方法,且两个方法体都是注释掉的 // NO-OP。
服务端不加载任何渲染代码——这与本 mod 无实体、无方块一致。
时序
init 阶段的执行顺序是:
proxy.addToolRenderMappings(); // ① 需要 toolMaterials 与 matIDs 已在 preInit 填好
registry.registerFluids(); // ②
proxy.registerRenderers(); // ③ 空
IntegrationITT.init(); // ④ 条件注册部件替换修饰符
① 在 ② 之前,两者在服务端都是空操作,相对顺序不影响任何东西。
未使用的死代码
ClientProxy.registerRenderers() 的方法体只剩一行注释:
// RenderingRegistry.registerEntityRenderingHandler(TGregDaggerEntity.class, new DaggerRenderCustom());
TGregDaggerEntity 位于 unused/entity/ 目录,不在 src/main/java 下,不参与编译。
见分类页的"本 mod 没有的内容"。
相关条目
- 工具材料注册 —
toolMaterials/matIDs的来源 - 部件材料 NBT — 物品侧的实际染色实现
- TiCTooltips 归类集成 — 另一个条件性的客户端集成
- 依赖门控 —
init阶段的调用清单