🪑 家具
概览
家具是 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 · 📍 家具变体#外部模型 |
| 通过交互切换变体(点亮或熄灭、打开或关闭) | 🪇 事件#设置家具变体 |