跳到主要内容

🪑 家具

概览

家具是 CraftEngine 基于实体的装饰系统。与原版方块锁定在网格上不同,家具使用原版的展示实体,这让你能以像素级一样的精确控制其位置、旋转、缩放与对齐。更重要的是这些实体由 CraftEngine 管理,不会让其列入实体 tick 列表,因此其性能遥遥领先于原版展示实体。

结构速览

每个家具都遵循同样的结构。每个选项回答关于家具的一个问题:

furniture: # 配置区域 —— 通常可以定义在任意配置文件夹中的任意配置文件中
default:my_furniture: # 家具 id —— 可以在其他地方通过 default:my_furniture 引用
variants: # 家具变体 —— 必填 → 他看起来是什么(元素、判定箱、座位)
...
settings: # 家具设置 —— 可选 → 基本属性是什么(音效、击打次数等)
...
behaviors: # 家具行为 —— 可选 → 有什么行为(存储、物品展示等)
...
loot: # 战利品表 —— 可选 → 被破坏时掉落什么
...
events: # 事件 —— 可选 → 对玩家交互的反应(放置、破坏...)
...

其中只有一个选项是必填的 variants,其余的选项都可以按需添加。

可配置的部分

快速上手

1. 最简家具

一个变体、元素和判定箱,就是一个完整可用的家具:

furniture:
default:my_chair:
variants:
ground:
elements:
- item: default:my_chair_model # 要显示的物品模型
hitboxes:
- position: 0,0,0 # 位于相对原点的判定箱

2. 调整基础属性

加上 settings 选项,让它更加完善,在放置和破坏时有音效,并且需要正确的击打次数才能被破坏:

furniture:
default:my_chair:
settings:
item: default:my_chair # 家具对应的物品 ID(用于按下鼠标中键点击来选取物品)
hit_times: 3 # 破坏所需击打次数(默认为 0 = 瞬间破坏)
sounds:
break: minecraft:block.bamboo_wood.break
place: minecraft:block.bamboo_wood.place
hit: minecraft:block.bamboo_wood.hit
variants:
ground:
elements:
- item: default:my_chair_model
hitboxes:
- position: 0,0,0

3. 加上座位和战利品

配置一个座位位置使可以玩家坐下,再配置战利品表让它在破坏被时掉落正确的物品:

furniture:
default:my_chair:
settings:
item: default:my_chair
hit_times: 3
sounds:
break: minecraft:block.bamboo_wood.break
place: minecraft:block.bamboo_wood.place
hit: minecraft:block.bamboo_wood.hit
variants:
ground:
elements:
- item: default:my_chair_model
translation: 0,0.5,0 # 向上半格
hitboxes:
- position: 0,0,0
type: shulker # shulker = 硬碰撞箱
peek: 100
blocks_building: true
interactive: true
interaction_entity: true
seats:
- 0.5,0.3,0 # 座位位置
loot:
pools:
- rolls: 1
entries:
- type: furniture_item
item: default:my_chair

将家具和物品绑定到一起

家具是家具,物品是物品,这两者不是同一个东西。你在物品配置中通过添加一个🪑 家具物品行为,将 furniture 选项指向家具 ID:

items:
default:my_chair:
behavior:
type: furniture_item
rules:
ground:
rotation: four # 锁定旋转为 90° 的倍数
alignment: center # 对齐到方块中心
furniture: default:my_chair # → 此物品放置的家具 ID

furniture 选项也可以直接内联完整的家具配置,而不是引用一个 ID,当你希望把物品和家具的配置写到一起时很方便:

items:
default:my_chair:
behavior:
type: furniture_item
rules:
ground:
rotation: four
alignment: center
furniture:
settings: ...
variants: ...
loot: ...
提示

家具物品的变体

普通的🪑 家具物品将家具放置在点击的方块的面上。 要在水或熔岩上放置,需使用🌊 液体碰撞家具物品

遇到不知道怎么配置时该看哪里

根据你想做的事找到对应页面:

你想要...去看
设置模型、文字或调整位置/旋转/缩放📍 家具变体
让它能坐(添加座位)📍 家具变体#判定箱
添加音效、击打次数等⚙️ 家具设置
让它发光(建议用方块实现)💡 发光家具
被破坏时掉落什么🎲 战利品表
响应点击或破坏🪇 事件 · ⚖️ 条件
绑定到物品让玩家能放置↑ 绑定物品 · 🪑 家具物品
使用鼠标中键点击时选取物品(1.21.4+)⚙️ 家具设置#物品
使用 BetterModel 或 ModelEngine 模型📍 家具变体#BetterModel · 📍 家具变体#ModelEngine · 📍 家具变体#外部模型
通过交互切换变体(点亮或熄灭、打开或关闭)🪇 事件#设置家具变体