đ Furniture Variants
Introductionâ
The furniture supports custom variants. By default, the plugin provides three preset variant types: ground, ceiling, and wall. The variant will change based on the item behavior and furniture behavior. Currently, switching variants is only supported via API operations.
Below, I will use the ground variant as an example to explain how to configure a basic variant.
furniture:
default:bench:
variants:
ground:
# create offsets for the drops so they won't spawn in blocks
loot-spawn-offset: 0,0,0
# Display Elements
elements:
- item: default:bench
display-transform: NONE
billboard: FIXED
position: 0.5,0,0
translation: 0,0.5,0
apply-dyed-color: true # default: true
# glow-color: 255,255,255 # glow color: r,g,b
# Furniture Hitboxes
hitboxes:
- type: interaction # non-collision hitbox
can-use-item-on: false # default: false
can-be-hit-by-projectile: false # default: false
blocks-building: false # default: true
position: 0,0,0
width: 1
height: 2
# 'width'/'height' can be simplified to 'scale'
# scale: 1,2
interactive: true # whether the interaction entity is interactive
seats:
- 0,0,-0.1 0
Elementsâ
In this system, an Element refers to each individual component that makes up a piece of furniture. Most furniture items are simple and require only one element.
However, you can create more complex designs by assembling multiple elements together.
For example, a hologram projector can be built from two elements: a Base and the Projection itself. The base can have a fixed orientation, while the projection can be set to always face the player.
Item Displayâ
https://minecraft.wiki/w/Display
Required Arguments
type: item_display
item: default:bench
Optional Arguments
display-transform: none # none / third_person_left_hand / third_person_right_hand
# first_person_left_hand / first_person_right_hand
# head / gui / ground / fixed
billboard: fixed # fixed / vertical / horizontal / center
position: 0.5,0,0
translation: 0,0.5,0
scale: 1 # scale: 1,2,1
apply-dyed-color: true
glow-color: 255,255,255
brightness:
block-light: 15
sky-light: 15
view-range: 1.0
# rotation support 3 formats
rotation: 45 # Y axis
rotation: 45,45,0 # Euler angle
rotation: 0,0,0.7071,0.7071 # Quaternions https://quaternions.online/
Please note the distinction between position and translation. position alters the coordinate location of the corresponding display entity, whereas translation is a displacement attribute of the display entity itself.
For wall variants of furniture, you need to use position for slight offsets; otherwise, the furniture may turn black in certain directions.
Text Displayâ
https://minecraft.wiki/w/Display
Required Arguments
type: text_display
text: Hello <papi:player_name>
Optional Arguments
billboard: fixed # fixed / vertical / horizontal / center
position: 0.5,0,0
translation: 0,0.5,0
scale: 1 # scale: 1,2,1
glow-color: 255,255,255
brightness:
block-light: 15
sky-light: 15
view-range: 1.0
# rotation support 3 formats
rotation: 45 # Y axis based
rotation: 45,45,0 # Euler angle
rotation: 0,0,0.7071,0.7071 # Quaternions https://quaternions.online/
line-width: 200
background-color: 64,0,0,0 # ARGB
text-opacity: -1
has-shadow: false
is-see-through: false
use-default-background-color: false
alignment: center # center / left / right
Itemâ
Renders a dropped item
Required Arguments
type: item
item: default:bench
apply-dyed-color: true
position: 0,1,0
Armor standâ
Renders a custom item based on armor stand
type: armor_stand
item: default:bench
apply-dyed-color: true
position: 0,1,0
scale: 1
small: false
glow-color: white # black, dark_blue, dark_green, dark_aqua, dark_red, dark_purple, gold, gray, dark_gray, blue, green, aqua, red, light_purple, yellow, white
Hitboxesâ
A furniture hitbox defines the interactive volume where players can interact with the object. CraftEngine offers several hitbox types, each with distinct properties. You can add and configure the appropriate hitbox by setting its parameters to suit your needs.

Interactionâ
Non-collision hitbox
type: interaction
can-use-item-on: false
can-be-hit-by-projectile: false
blocks-building: false
position: 0,0,0
width: 1
height: 2
# whether the interaction entity is interactive
interactive: true
# decides if the interaction entity can be seen through F3+B
invisible: false
seats:
- 0,0,-0.1 0
invisible: true
width and height can be simplified to one scale option
type: interaction
scale: 1,2
Shulkerâ
Hard-collision hitbox
type: shulker
can-use-item-on: true
can-be-hit-by-projectile: true
blocks-building: true
position: 1,0,0
scale: 1
peek: 0 # 0~100
# Relative direction. north = facing the player
direction: UP # up/down/north/west/east/south
# whether to summon another interaction entity for better interaction experience
interaction-entity: true
# whether the interaction entity is interactive
interactive: true
# decides if the interaction entity can be seen through F3+B
invisible: false
seats:
- 1,0,-0.1 0

peek: 0 peek: 50 peek: 100
Happy Ghastâ
Semi-hard-collision hitbox
type: happy_ghast
can-use-item-on: true
can-be-hit-by-projectile: true
blocks-building: true
hard-collision: true
position: 1,0,0
scale: 0.25 # default: 1
seats:
- 1,0,-0.1 0
Customâ
Soft-collision hitbox
type: custom
position: 1,0,0
scale: 5
# You can use any entity type here
# default: slime
entity-type: slime
seats:
- 1,0,-0.1 0
A single hitbox can be configured with multiple seats. If the seats of multiple hitboxes are positioned at the same location, it is equivalent to having only one seat.
The position of a seat is determined by a location and a rotation, separated by a space in the configuration.
0,0,0 0
You may also choose not to configure a rotation angle, allowing players to rotate freely to any angle while seated.
0,0,0

0,0,0 0

0,0,0
Entity Cullingâ
You can individually control whether entity culling is enabled for each furniture variant
ground:
entity-culling: false # Disabled
Once entity culling is enabled, you can configure the culling parameters
ground:
entity-culling:
aabb: -0.5,0,-0.5,0.5,2,0.5 # x1,y1,z1,x2,y2,z2. Manual configuration of AABB is not recommended as the plugin will calculate it automatically.
view-distance: 64 # View distance culling. -1 means unlimited distance.
# However, setting this to -1 is not recommended when ray tracing is enabled,
# as it results in excessive algorithm path length and performance impact.
ray-tracing: false # Whether to enable ray tracing culling.
External Modelsâ
You can also use models from ModelEngine/BetterModel
furniture:
default:bench:
variants:
ground:
model-engine: blueprint_id
better-model: blueprint_id