BlockEntityRenderer

BlockEntityRenderer

BlockEntityRenderer(BER,方块实体渲染器)用于以静态烘焙模型(JSON、OBJ、B3D 等)无法表示的方式渲染方块。使用方块实体渲染器要求方块具有 BlockEntity。

同一个 BlockEntityType 的多个方块实体实例把自身传给共享 BER;实例专属数据保存在各自 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。

原文:BlockEntityRenderer。