> ## Documentation Index
> Fetch the complete documentation index at: https://items.lodemc.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Props

> Chairs, tables, lamps, beds, storage, doors, sofas that join up, growing plants and more.

A prop is a model you place in the world: chairs, tables, lamps, beds, doors, signs. Props are one type of [element](https://items.lodemc.net/elements.md), and there's no limit on how many kinds you can add.

> [!NOTE]
>
> Props used to be called **furniture**. `type: furniture`, the `furniture:` section in config.yml and `/li furniture` still work.

## A first prop

```yaml items/props/ruby_chair.yml theme={null}
ruby_chair:
  type: prop
  name: "<red>Ruby Chair"
  model: ruby_chair.json    # next to this file
  seat: 0,0.62,0            # where you sit, in blocks above the floor
  rotate-on-sneak: true
```

Only `model` is needed. Everything below is optional. A piece with only a `texture:` is drawn flat, like a dropped item.

**The model's front faces north**, the same as in Blockbench's default view and in other furniture plugins (Nexo, ItemsAdder), so models you bought work as they are. When placed, the front faces the player who placed it.

The hitbox (what you bump into and click) is worked out from the model's shape. See [Prop hitboxes](https://items.lodemc.net/prop-hitboxes.md) to change it.

## Placing and turning

**placement** `list` (default: floor)

Where it can go: `floor`, `wall`, `ceiling`, or `any`. Write one or a list: `placement: [floor, ceiling]`.

**rotation** `text`

* `4`: quarter turns.
* `8`: quarter turns and diagonals.
* `free`: any angle.
* `none`: always faces the same way.

Defaults to `8` for one-block pieces and `4` for bigger ones, since their solid parts have to sit on the block grid.

**rotate-on-sneak** `boolean` (default: false)

Sneak and right-click with an empty hand to turn it.

**on** `list`

Only placeable on these blocks: `on: [grass_block, dirt, lodeitems:planter]`.

**not-on** `list`

Never placeable on these blocks.

**max-nearby** `text`

At most this many of it close together: `3` (within 16 blocks) or `3 in 32`.

### The placement hologram

While a player sneaks with a prop's item in hand, a see-through copy shows where it would go: green if it fits, red if it doesn't.

**preview** `boolean` (default: true)

`false` turns the hologram off for this prop. To turn it off for every prop, or change how see-through it is, see [config.yml](https://items.lodemc.net/configuration.md#elements).

Placing fires a normal block-place event, so protection plugins can refuse it.

## How it looks

```yaml theme={null}
display:
  scale: 1.5                 # or x,y,z
  translation: 0,0.25,0      # move it, in blocks
  rotation: 15               # degrees around the vertical axis, or pitch,yaw,roll
  transform: fixed           # which of the model's display settings to use (default: none)
  brightness: 15             # always drawn at this light level
  glow: "#ff0000"            # glowing outline
  view-range: 1.5            # draw distance multiplier (default 1)
  shadow: 0.6                # shadow radius
  shadow-strength: 1
```

`dyeable: true` lets players right-click it with a dye to colour it. Draw the model's textures in greyscale.

## Sitting and sleeping

**seat** `position`

`x,y,z` in blocks from the floor point of the piece. Add a yaw to face the seat another way: `0,0.5,0 90`. Use `seats:` with a list for benches and sofas.

**bed** `boolean, cell or section`

Makes it a real bed: right-click to sleep, and the night skips like in vanilla.

```yaml theme={null}
bed: true                  # every solid part of the piece
bed: 0,0,0                 # one cell (or beds: with several)
bed:
  at: ["0,0,0", "1,0,0"]
  skip-night: true         # counts towards skipping the night
  reset-phantoms: true
  set-spawn: true
```

## Light

```yaml theme={null}
light: 15                    # lights the piece itself
lights: ["0,1,0 15", "2,1,0 10"]   # or place lights: cell and level
light-toggle: true           # right-click turns the lights on and off
```

A light can't be inside a solid part of the hitbox, where players would walk into it. With the short form, the light goes in the cell just above.

## Storage

```yaml theme={null}
storage: true                # a shared 3-row chest
storage:
  type: shared               # see below
  rows: 6
  title: "<gold>Wardrobe"
  open-sound: block.barrel.open
  close-sound: block.barrel.close
```

| Type | Contents |
| - | - |
| `shared` | One inventory in the piece. It spills out when the piece is broken. |
| `personal` | Each player has their own, shared by every piece of this prop, like an ender chest. |
| `ender-chest` | Opens the player's ender chest. |
| `trash` | Whatever is put in is deleted when it closes. |

## Doors

```yaml theme={null}
wardrobe_door:
  type: prop
  model: wardrobe.json
  door:
    rotation: 90               # swings open: degrees, or pitch,yaw,roll...
    translation: -0.85,0,0     # ...and/or slides (blocks)
    open-model: open.json      # optional: a different model while open
    animation: 4t              # how long opening takes
    passable: true             # walk through it while open (default)
    auto-close: 3s
    open-sound: block.wooden_door.open
    close-sound: block.wooden_door.close
```

## States

Right-clicking moves to the next state. Each state can change the model and the light:

```yaml theme={null}
tv:
  type: prop
  model: tv_off.json
  states:
    on:
      model: tv_on.json
      light: 10
      sound: block.lever.click
      reset-after: 1m          # goes back to the first state after this long
    static:
      model: tv_static.json
      next-after: 5s           # moves on by itself
```

## Sofas that join up

Pieces in the same group change their model to match their neighbours, the way stairs do:

```yaml theme={null}
sofa:
  type: prop
  model: sofa_single.json
  seat: 0,0.5,0
  connect:
    group: sofa                # pieces of a group join (default: this id)
    left: sofa_left.json       # the left end, seen from the front
    right: sofa_right.json
    middle: sofa_middle.json
    inner: sofa_inner.json     # corners
    outer: sofa_outer.json
    corners: right             # which way the corner models turn (default right)
```

Draw the corner models with the model's front facing north like the rest. By default the corner's extra side (the second backrest of an inner corner, the post of an outer one) is on the **right as seen sitting**, on the model's east (+x) side. That's how Nexo's and most bought sofa models are drawn. If yours turn the other way, set `corners: left`. LodeItems turns the corner model a quarter for the mirrored corner, so one model covers both.

The piece next to a corner treats the corner as part of its row, so it gets no armrest on that side. That works for both kinds of corner: the usual L with the backrests outside, and the other way round with the backrests inside.

Pieces already placed update their shape when something next to them is placed, broken or turned.

## Growing plants

```yaml theme={null}
rose_stage_1:
  type: prop
  model: rose_1.json
  grows:
    into: rose_stage_2         # the prop it becomes; leave out on the last stage
    every: 1m                  # how often it may grow
    chance: 0.5
    light: 9                   # minimum light level
    bone-meal: 0.4             # chance bone meal grows it at once
```

## Text and music

```yaml theme={null}
bakery_sign:
  type: prop
  model: sign.json
  texts:
    - text: "<gold>Fresh bread"
      at: 0,1.2,0              # default: just above the model
      scale: 0.8
      billboard: center        # fixed (default: faces the front), center, vertical, horizontal
      background: "#80000000"  # ARGB, or "none"
      shadow: true

gramophone:
  type: prop
  model: gramophone.json
  jukebox: true                # right-click with a music disc to play it
```

## Breaking and drops

**hits** `number` (default: 1)

Hits needed to break it in survival. In creative it breaks at once; in adventure mode it can't be broken.

**drops** `text or section` (default: self)

```yaml theme={null}
drops: self                  # the item, keeping its name and colour
drops: none
drops:
  self: false                # default true unless items are listed
  silk-touch: true           # drops itself only with silk touch, otherwise the items
  tool: axe                  # drops nothing unless broken with this tool
  items:
    - oak_planks 2..4 0.5    # item, amount or range, chance
    - lodeitems:ruby 1
```

**sounds** `section`

```yaml theme={null}
sounds:
  place: block.wood.place
  break: block.wood.break
  hit:
    sound: block.wood.hit
    volume: 0.8
    pitch: 1.2
```

## Using props

Right-click does the first thing that applies, in this order: turn it (sneaking, empty hand) → bone meal → dye → jukebox → bed → seat → storage → door → next state → light toggle.

Sneaking with an item in hand places that item against the piece instead. Protection plugins can block using props just like they block opening chests.

Props also take every [item option](https://items.lodemc.net/items.md) for their item, and [events](https://items.lodemc.net/events.md) like `interact`, `place` and `break`.

## Commands

| Command | Does |
| - | - |
| `/lodeitems prop place <id> <x y z> [yaw]` | Places a prop without a player. |
| `/lodeitems prop remove <radius>` | Removes every prop within the radius, with no drops. |

## Good to know

* Each prop is saved inside the world, in the chunk it stands in. Props survive restarts, chunk unloads, WorldEdit copies and backups without a separate database.
* Props whose config you delete stay in the world as they are.
* Props behind walls are hidden from players who can't see them, which keeps busy rooms fast. See [config.yml](https://items.lodemc.net/configuration.md#elements).
* With [ModelEngine](https://items.lodemc.net/integrations.md#modelengine) installed, `modelengine: <blueprint>` draws a piece with an animated ModelEngine model.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.