🫑 方块实体
简介
方块实体结合了方块与实体的特性。它占据世界中的一个方块位置,但能像实体一样存储数据、执行更新并支持自定义渲染。通过方块实体接口,你可以为方块赋予更高级功能,例如:
- 基础电容库:根据当前存储的能量动态更改方块外观
- 斯特林发电机:基于游戏刻运行,定期燃烧燃料发电
所有依赖方块实体的方块行为,其文档页面顶部均标注有方块实体的标签。
在现有的内置方块实体类型库持续扩充的同时,CraftEngine 将在未来的版本中通过引入更多功能多样、开箱即用的组件来显著扩展这些功能配置。
注意:在当前版本中,每个方块只能分配一种类型的方块实体。例如,你无法在同一个方块上混合使用 simple_storage_block 和 simple_particle_block。混合方块实体功能预计将在未来更新中实现。
基于实体的渲染
它是如何工作的?
众所周知,单个方块的变体数量是有限的。以绊线为例,其最多只有 128 种变体。这意味着在不破坏绊线原本功能的前提下,最多只能释放 127 种自定义方块状态。然而,通过移除其中一种状态的纹理使其完全透明,并在方块中心放置展示实体,便能实现近乎无限的自定义方块。
注意
需要注意的是,某些原版方块使用了硬编码的渲染器。当方块使用的模型尺寸与完整方块不匹配时,可能会出现透视方块效果,如下图所示。
要配置展示实体,只需添加一个 entity-renderer
选项。该选项需要一个配置部分或列表作为其参数。
blocks:
default:sleeper_sofa:
state:
id: 0
state: white_bed[facing=west,occupied=false,part=foot]
entity-renderer:
- type: item_display
...
- type: item_display
...
default:table_lamp:
states:
appearances:
east_off:
state: barrier
entity-renderer:
type: item_display
...
警告
别忘了为相应的视觉方块状态添加一个额外的真实方块状态。 详情参见真实方块状态不足。
信息
当未指定类型时,默认使用 item_display
。
物品渲染
blocks:
default:sleeper_sofa:
state:
id: 0
state: white_bed[facing=west,occupied=false,part=foot]
entity-renderer:
- type: item_display
item: default:sleeper_sofa # 必填; 字符串; 指定需要渲染的物品
scale: 1.0 # 可选; 数字; 默认值: 1
position: 0.5 # 可选; 数字; 默认值: 0.5
translation: 0,0,0 # 可选; 向量; 默认值: 0,0,0
pitch: 0.0 # 可选; 数字; 默认值: 0
yaw: 0.0 # 可选; 数字; 默认值: 0
rotation: 0.0 # 可选; 数字; 默认值: 0
display-context: NONE # 可选; 枚举[NONE, THIRD_PERSON_LEFT_HAND, THIRD_PERSON_RIGHT_HAND, FIRST_PERSON_LEFT_HAND, FIRST_PERSON_RIGHT_HAND, HEAD, GUI, GROUND, FIXED, ON_SHELF]; 默认值: NONE
billboard: FIXED # 可选; 枚举[FIXED, VERTICAL, HORIZONTAL, CENTER]; 默认值: FIXED
文本渲染
blocks:
default:sofa:
states:
appearances:
facing=east,shape=straight:
state: barrier
entity-renderer:
- type: text_display
text: "你好" # 必填; 字符串; 指定需要渲染的文本
scale: 1.0 # 可选; 数字; 默认值: 1
position: 0.5 # 可选; 数字; 默认值: 0.5
translation: 0,0,0 # 可选; 向量; 默认值: 0,0,0
pitch: 0.0 # 可选; 数字; 默认值: 0
yaw: 0.0 # 可选; 数字; 默认值: 0
rotation: 0.0 # 可选; 数字; 默认值: 0
billboard: FIXED # 可选; 枚举[FIXED, VERTICAL, HORIZONTAL, CENTER]; 默认值: FIXED