1. TileEntityItemStackRenderer
TileEntitySpecialRenderer
针对 ItemStack
的特化版,通常简称 TEISR
。
1.1. 写在前面
几乎所有时候你都不需要这个东西。没有动画效果的模型可以用普通的原版模型、带仿射变换的 Forge BlockState V1 或者直接使用 OBJ/B3D 模型达成。如果需要依赖特定 NBT 数据则可以使用 ItemOverrideList
,不过为此你需要一个新的 IBakedModel
,关于这方面的内容在本章相关章节有详细介绍。需要动画效果的话,可以将动画状态机追加到物品上。使用 TEISR
有较大可能会引发各种奇怪问题,而且很可能会导致与某些 Mod 不兼容。再有,固定管线……
总而言之,相当不推荐使用 TEISR。
1.2. 用法
使用 TEISR 需要确保对应物品使用的 IBakedModel
的 isBulitInRender
返回 true。一般来说,只需要这样写 JSON 模型即可:
{
"parent": "builtin/entity"
}
接下来的操作就和 TileEntitySpecialRenderer
没有太大区别了。毕竟都是直接用“底层”(GL11
系列固定管线)来完成渲染。
public class SomeCrazyRenderingForMyItem extends TileEntityItemStackRenderer {
// Forge patch 之后的结果
@Override
public void renderByItem(ItemStack itemStack) {
// 这里就是具体的渲染操作了。
}
}
1.3. 将 TEISR 与 Item 绑定
透过客户端侧的 ClientProxy
调用:
MyItems.myRandomCrazyItem.setTileEntityItemStackRenderer(new SomeCrazyRenderingForMyItem());
即可。