ItemsAdderAdditionsItemsAdderAdditions
Behaviours

Storage

Turn custom blocks or furniture into storage containers.

Since v1.0.0

Turns any custom block or furniture into a storage container. Three modes are available.

TypeBehaviour
STORAGEShared container - all players see the same inventory
SHULKERContents travel inside the item when broken and are restored on re-place
DISPOSALTrash can - contents are silently deleted when the GUI is closed

Configuration

behaviours:
  storage:
    type: STORAGE
    rows: 3 # optional, default: 3
    inventory_type: furnace # optional, replaces rows when set
    title: "<gold>Community Chest</gold>" # optional, defaults to the block/furniture's name
    open_variant: my_open_storage # optional
    open_sound: # optional
      name: entity.villager.celebrate # or a custom sound
      volume: 1.0 # optional, default: 1.0
      pitch: 1.0 # optional, default: 1.0
      source: master # optional, default: master
    close_sound: # optional
      name: entity.villager.ambient # or a custom sound
      volume: 1.0 # optional, default: 1.0
      pitch: 1.0 # optional, default: 1.0
      source: master # optional, default: master
behaviours:
  storage:
    type: SHULKER
    rows: 3 # optional, default: 3
    inventory_type: furnace # optional, replaces rows when set
    title: "<dark_purple>Portable Storage</dark_purple>" # optional, defaults to the block/furniture's name
    open_variant: my_open_storage # optional
    open_sound: # optional
      name: entity.villager.celebrate # or a custom sound
      volume: 1.0 # optional, default: 1.0
      pitch: 1.0 # optional, default: 1.0
      source: master # optional, default: master
    close_sound: # optional
      name: entity.villager.ambient # or a custom sound
      volume: 1.0 # optional, default: 1.0
      pitch: 1.0 # optional, default: 1.0
      source: master # optional, default: master
behaviours:
  storage:
    type: DISPOSAL
    rows: 1 # optional, default: 3
    title: "<red>Trash Can</red>" # optional, defaults to the block/furniture's name
    open_variant: my_open_storage # optional
    open_sound: # optional
      name: entity.villager.celebrate # or a custom sound
      volume: 1.0 # optional, default: 1.0
      pitch: 1.0 # optional, default: 1.0
      source: master # optional, default: master
    close_sound: # optional
      name: entity.villager.ambient # or a custom sound
      volume: 1.0 # optional, default: 1.0
      pitch: 1.0 # optional, default: 1.0
      source: master # optional, default: master

For name, use a value from Sounds.json or a custom sound with namespace:value.

Supports MiniMessage formatting, PlaceholderAPI placeholders, and ItemsAdder font images.

Inventory type

By default, storage opens a chest-style inventory whose height is controlled by rows (1-6, default: 3). Set inventory_type to open a typed inventory instead - rows is ignored when this is set.

ValueGUI shape
furnaceFurnace (input + fuel + output)
blast_furnaceBlast furnace
smokerSmoker
brewing_standBrewing stand (3 bottles + 2 slots)
dispenserDispenser (3×3)
dropperDropper (3×3)
hopperHopper (1×5)
behaviours:
  storage:
    type: STORAGE
    inventory_type: furnace
    title: "<gray>Custom Furnace</gray>"

Item restrictions

Since 1.0.14, storage can restrict which items players may insert. Use allowed_items to allow only matching items:

behaviours:
  storage:
    type: STORAGE
    allowed_items:
      - minecraft:book
      - "#minecraft:logs"
      - "#my_pack:building_materials"

Or use denied_items to reject matching items while allowing everything else:

behaviours:
  storage:
    type: STORAGE
    denied_items:
      - minecraft:tnt
      - "#my_pack:portable_storage"

Entries may be vanilla or ItemsAdder item IDs, Minecraft item tags, or IAA custom item tags.

allowed_items and denied_items are mutually exclusive. Configuring both rejects the storage behaviour.

An empty allowed_items list allows nothing. An empty denied_items list denies nothing. Omitting both keeps the storage unrestricted. Restrictions apply only to new player insertions; previously saved contents are not removed.

Open variant

You can optionally set open_variant to make the custom block, furniture, or complex furniture change into another variant while at least one player has the storage open.

Examples:

  • chests that visually open
  • barrels with an opened model
  • containers with a different active state
behaviours:
  storage:
    type: STORAGE
    open_variant: my_open_storage

open_variant should be the ID of another custom block, furniture, or complex furniture, using either:

  • id
  • namespace:id

See IDs for ID syntax.

When the inventory is closed by all players, the storage returns to its normal variant.

Complex-furniture open_variant values are supported in ItemsAdderAdditions 1.0.12 and newer. Block storage holders must use a block variant; furniture and complex-furniture holders can use furniture, complex furniture, or an item display model.

Content variants

Since 1.0.13, a storage holder can change its closed appearance based on how full it is.

behaviours:
  storage:
    type: STORAGE
    empty_variant: my_empty_storage   # optional; empty inventory
    filled_variant: my_filled_storage # optional; any non-empty inventory
    half_variant: my_half_storage     # optional; partially filled inventory
    full_variant: my_full_storage     # optional; every slot filled to its stack limit

filled_variant is the simple two-state option: it is used for every non-empty inventory unless a more specific half_variant or full_variant is configured. Missing variants fall back to filled_variant and then to the holder's original appearance.

open_variant takes priority while the inventory has viewers. The appropriate content variant is restored after the last viewer closes it. IDs and block/furniture compatibility follow the same rules as open_variant, and directional block rotation is preserved when variants change.

On this page