đĒ Your First Furniture
Blocks snap to the grid. Furniture doesn't. Furniture uses CraftEngine's display-entity-based decoration system with pixel-precise placement. Chairs, lamps, statues â anything that shouldn't be grid-locked.
Step 1: give the furniture an item modelâ
Furniture doesn't specify textures directly â it displays an item's model. So start by making an item with a model.
Make a chair model in BlockBench, export the JSON to models/item/chair.json, and place your textures under textures/item/. Then:
items:
tutorial:my_chair:
material: paper
model: tutorial:item/chair
/ce item get tutorial:my_chair â a chair model appears in your inventory. It's just a normal item for now. Right-click does nothing.
Step 2: make the item place furnitureâ
Add a behavior to the same item:
items:
tutorial:my_chair:
material: paper
model: tutorial:item/chair
behavior:
type: furniture_item
rules:
ground:
rotation: four
alignment: center
furniture:
variants:
ground:
elements:
- item: tutorial:my_chair
hitboxes:
- position: 0,0,0
type: shulker
/ce reload all, /ce item get tutorial:my_chair, right-click the ground â a chair appears.
model: tutorial:item/chairâ the inventory icon, your chair model from step 1type: furniture_itemâ right-click places furniturerules.groundâ placement rules.rotation: foursnaps to 4 directions,alignment: centeraligns to block center. Both optionalvariantsâ required. At least one variant. The defaultfurniture_itempicks the variant based on the face you click: top face âgroundelements.item: tutorial:my_chairâ display this item's model as the furniture's appearance. This is why step 1 was necessaryhitboxesâ collision boxes.type: shulker= shulker collision, entities and players can't pass through
Step 3: settings â sounds & hit durabilityâ
furniture:
settings:
hit_times: 3
sounds:
break: minecraft:block.bamboo_wood.break
place: minecraft:block.bamboo_wood.place
hit: minecraft:block.bamboo_wood.hit
variants:
...
hit_times: 3â hits needed to break. Default 0 = instantsoundsâ break, place, hit
Step 4: make it sittableâ
hitboxes:
- position: 0,0,0
type: shulker
blocks_building: true
interactive: true
interaction_entity: true
seats:
- 0,0.5,0
blocks_building: trueâ prevent block placement inside the hitboxinteractive: trueâ whether the interaction entity is interactiveinteraction_entity: trueâ spawn extra interaction entities for better click accuracyseats: [0,0.5,0]â seat coordinates
Step 5: make it drop when brokenâ
furniture:
settings: ...
variants: ...
loot:
template: default:loot_table/furniture
arguments:
item: tutorial:my_chair
Use this template for now. The furniture drops the tutorial:my_chair item when broken.