Skip to content
ItemsAdder

Furnitures

A furniture is a decorative object which can be solid, emit light, used as chair and can have other features.

Furniture entity types

item_display

This type of furniture entity is useful for any type of furniture you want to create.

yaml
behaviours:
  furniture:
    entity: item_display # <---
    display_transformation:
      transform: HEAD
      right_rotation:
        axis_angle:
          angle: 180
          axis:
            x: 0
            y: 1
            z: 0
      translation:
        x: 0
        y: 0.92
        z: 0
      scale:
        x: 0.45
        y: 0.45
        z: 0.45

Special properties

item_display allows you to do some special adjustments to your furniture model using the display_transformation property.
You can resize it, rotate it and move it freely.
This feature uses the native item_display feature of Minecraft, you can read more here and online.
You can also use this tool to preview your changes.

Example
yaml
  lava_lamp_new:
    enabled: true
    display_name: display-name-lava_lamp
    permission: iadeco.decorations.lava_lamp
    lore:
      - lore-decorative-item
    resource:
      material: PAPER
      generate: false
      model_path: lava_lamp
    behaviours:
      furniture:
        entity: item_display # <---
        light_level: 7
        display_transformation:
          transform: HEAD
          right_rotation:
            axis_angle:
              angle: 180
              axis:
                x: 0
                y: 1
                z: 0
          translation:
            x: 0
            y: 0.92
            z: 0
          scale:
            x: 0.45
            y: 0.45
            z: 0.45

auto_update_in_world: automatically apply config changes to entities already placed in the world. Default value is in config.yml as auto_update_transformations, which can be used to globally disable or enable this feature.

Example
yaml
behaviours:
  furniture:
    entity: item_display
    display_transformation:
      auto_update_in_world: true # <--- here

armor_stand

This type of furniture entity is useful when you want to create chairs, plants, columns, lamps and similar environment decorations which don't need to rotate based on the surface on which you place them.

yaml
behaviours:
  furniture:
    entity: armor_stand # <--- (by default, not mandatory)
    small: true
    solid: true

small allows to set the armor stand small. It will have a smaller hitbox by default and the model will look smaller.

item_frame

This type of furniture entity is useful when you want to make the furniture rotate based on the surface on which you place it.

For example if you have a decorative lamp you can make it placeable on walls, ceiling and ground and and make it oriented automatically based on the surface inclination.

yaml
behaviours:
  furniture:
    entity: item_frame
    light_level: 15
    solid: false

Limit placement location

You can limit the placement of the furniture using the placeable_on property.

yaml
    placeable_on:
      walls: true
      ceiling: true
      floor: true

Hitbox

You can make a furniture solid adding the "solid" attribute and specifying a hitbox (if you want > 1x1x1)

yaml
  table:
    display_name: display-name-table
    permission: table
    lore:
      - 'lore-decorative-item'
    resource:
      material: OAK_WOOD
      generate: false
      model_path: item/table
    behaviours:
      furniture:
        small: true
        solid: true
        entity: armor_stand
        hitbox:
          length: 1
          width: 1
          height: 1
          length_offset: 0
          width_offset: 0
          height_offset: 0

Hitbox has wrong location

Correct location

I had to set a width offset of 0.5.
You can also use negative values if needed.

yaml
        hitbox:
          length: 1
          width: 2
          height: 1
          width_offset: 0.5

Preview the hitbox

Optimization of item_display furniture

By default the plugin uses width and height of the hitbox to tell the game the size of the furniture render area. This is used to allow the game to hide the entity when the player is not directly looking at it and avoid overhead.

If you want you can customize this value separately using the render_size property.

yaml
display_transformation:
   render_size:
      width: 3
      height: 3