BlockEntityRenderer
BlockEntityRenderer(BER,方块实体渲染器)用于以静态烘焙模型(JSON、OBJ、B3D 等)无法表示的方式渲染方块。使用方块实体渲染器要求方块具有 BlockEntity。
原创说明图,依据 Forge 1.21.x 官方文档 绘制。
创建 BER
创建继承 BlockEntityRenderer 的类,其泛型参数指定方块的 BlockEntity 类,并用于 BER 的 render 方法。
每个 BlockEntityType 只有一个 BER。因此,世界中单个实例专属的值应存放在传入渲染器的方块实体中,而不是 BER 本身。例如,一个每帧递增的整数若存放在 BER 中,就会针对世界中该类型的每个方块实体每帧递增。
render
该方法每帧调用一次,以渲染方块实体。参数如下:
blockEntity:正在渲染的方块实体实例。partialTick:自上一个完整刻以来经过的时间,以刻的小数部分表示。poseStack:包含四维矩阵条目的栈,已偏移到方块实体的当前位置。bufferSource:可访问顶点消费者的渲染缓冲区。combinedLight:表示方块实体当前光照值的整数。combinedOverlay:表示方块实体当前覆盖层的整数,通常是OverlayTexture#NO_OVERLAY或 655,360。
注册 BER
在 Mod 事件总线上订阅 EntityRenderersEvent$RegisterRenderers,并调用 #registerBlockEntityRenderer。