方块实体¶
方块实体(Block Entity)是Minecraft基岩版中附加在特定方块上的持久化数据存储对象,也称作Tile Entity。方块实体为方块提供了超出方块状态范围的复杂数据存储能力。
概述¶
普通方块仅通过标识符和方块状态来描述,而许多方块需要存储更丰富的数据。例如,箱子需要存储其中所有物品的信息,告示牌需要存储文本内容,酿造台需要存储酿造进度等。这些额外数据通过方块实体来持久化存储。
方块实体以NBT格式存储其数据,并在存档中与所在区块的数据一起保存。每个方块实体包含其所在方块的坐标和一个表示类型的标识符字符串。
拥有方块实体的方块¶
并非所有方块都拥有方块实体,只有需要存储复杂数据的方块才具有对应的方块实体。以下是部分常见的拥有方块实体的方块:
- 容器方块:箱子、陷阱箱、潜影盒、木桶、投掷器、发射器、漏斗等。
- 功能方块:熔炉、高炉、烟熏炉、酿造台、附魔台、铁砧等。
- 红石方块:命令方块、结构方块、活塞(部分状态下)等。
- 装饰方块:告示牌、旗帜、头颅、花盆、刷怪笼等。
- 特殊方块:末地传送门框架、信标、潮涌核心、讲台、蜂巢等。
数据结构¶
方块实体的NBT数据因类型不同而有不同的结构,但通常包含以下公共字段:
不同类型的方块实体在此基础上扩展各自专有的字段。例如,箱子的方块实体包含一个Items列表标签,存储所有物品的NBT数据。
方块实体与客户端实体¶
在标准的附加包系统中,方块实体不具有自定义的渲染外观,其外观由方块本身的渲染定义决定。
在中国版中,自定义方块可以通过绑定客户端实体的方式为方块实体附加自定义模型和动画,这使得自定义方块可以实现超出标准方块几何体限制的复杂外观。
方块实体与存档¶
方块实体的数据存储在区块数据中。当区块被保存时,该区块内所有方块实体的NBT数据被序列化为一个列表。当区块被加载时,这些方块实体数据被反序列化并附加到对应位置的方块上。