TESSERA

content 03

Furniture

Every .yml file in furniture/ is loaded. Each top-level key is one furniture id.

Furniture is built from two entities: a display entity that carries the model, and an Interaction entity that carries the hitbox. Both store the furniture id and a shared root id in their PersistentDataContainer, which is how the pieces stay connected across restarts.

Keys

KeyTypeDefaultNotes
item_iditem idthe furniture idThe custom item used for the model, for /tessera get and for the break drop.
display_nameMiniMessagethe id
display_typeITEM_DISPLAY, BLOCK_DISPLAY or ARMOR_STANDITEM_DISPLAYUnknown values fall back to ITEM_DISPLAY. ARMOR_STAND spawns an invisible marker stand wearing the item; BLOCK_DISPLAY currently behaves like ITEM_DISPLAY.
hitbox.widthnumber1.0Interaction width. hitbox_width is accepted as a flat key.
hitbox.heightnumber1.0Interaction height. hitbox_height is accepted as a flat key.
scalenumber or x/y/z1.0A single number scales all three axes. Item displays only.
translation.x/y/znumber0.0Offset applied to the display transform.
seatbooleanfalseWhether players can sit on it.
seat_heightnumber0.5Y offset of the seat above the furniture.
sounds.placesound nameBLOCK_WOOD_PLACEplace_sound is accepted as a flat key.
sounds.breaksound nameBLOCK_WOOD_BREAKbreak_sound is accepted as a flat key.
dropitem idthe furniture idCustom item dropped on break. A vanilla material name here drops nothing.
cancel_dropbooleanfalseBreak with no drop.
cardinal_rotationbooleantrueSnap the yaw to four directions.

Example

# plugins/Tessera/furniture/oak_chair.yml
oak_chair:
  item_id: oak_chair
  display_name: "<gold>Oak Chair</gold>"
  display_type: ITEM_DISPLAY
  hitbox:
    width: 0.8
    height: 1.0
  seat: true
  seat_height: 0.4
  cardinal_rotation: true
  sounds:
    place: BLOCK_WOOD_PLACE
    break: BLOCK_WOOD_BREAK

Placement is keyed on the item id, so the item that places a piece of furniture has to carry the same id as the furniture entry: define oak_chair in items/ as well. item_id is what the display entity wears and what /tessera get oak_chair and the break drop hand out. If it resolves to nothing, the display falls back to oak planks.

Placing and breaking

  • Right clicking a block with the placer item spawns the furniture in the block next to the face you clicked, centred on X and Z and turned to face you. With cardinal_rotation: true the yaw snaps to the nearest quarter turn. The item is consumed outside creative mode.
  • Hitting the interaction entity breaks the furniture. Both entities and any seat are removed, and the item behind drop is dropped unless cancel_drop is set.
  • Furniture is made of entities, so it is not stored in the chunk container the way blocks are.

Seats

With seat: true, right clicking the furniture seats the player on a temporary armour stand spawned at seat_height above the furniture. One player per seat. Dismounting removes the stand.

/tessera sit does the same on the block you are looking at, within five blocks.

Seats that survive a crash are cleaned up by /tessera cleartemp.

Management commands

/tessera furniture list [radius]      # default radius 10
/tessera furniture remove [radius]    # tessera.admin
/tessera killfurniture [radius]       # tessera.admin, radius clamped to 1-50
/tessera cleartemp                    # tessera.admin, orphaned seats in all worlds