-
Notifications
You must be signed in to change notification settings - Fork 0
Furniture
Therecalloftheonion edited this page Aug 31, 2026
·
1 revision
Each file in furniture/ defines one furniture piece. Furniture is rendered as an
invisible armor stand wearing the item's model, placed by right-clicking the item.
# furniture/my_lamp.yml
material: stick
small: true # small armor stand
consumable: true # the item is consumed when placed
model: "assets/models/my_lamp.json"| Field | Meaning |
|---|---|
small |
use a small (baby) armor stand |
consumable |
consume the item on placement |
model |
model in assets/models/ (the stand holds the item) |
mechanics |
item mechanics (see mechanics.md) |
- Right-click on a surface to place it. Placement validates the target, checks the
andreaitemmaker.buildpermission and protection plugins (sameProtectionServiceas custom blocks) — a protected region never gets a furniture armor stand spawned. - Right-click the placed piece to pick it back up (when the definition allows it).
- Every furniture entity carries a unique plugin persistent-data identity, so normal armor stands are never touched.
- Orphaned entities (owner offline, definition removed) are cleaned up.
- Chunk unload/load, server restart and plugin reload are safe: entities are re-identified from their persistent data, never from position heuristics.
- Removing a furniture definition from config cleans up its invisible entities on reload.
- No constant per-tick processing: furniture is event-driven, and there is no scan of all entities — identification is a direct persistent-data lookup.