跳到主要内容

GUI Storage Artifact

The GUI Storage Artifact persists items placed in storage slots across sessions and server restarts. Each slot in the layout can reference this artifact to save/load items.

Type: Artifact Entry Entry ID: gui_storage

Configuration

FieldTypeDefaultDescription
artifactIdStringauto-generatedUnique identifier for this storage instance.

Stored Data

Each artifact stores a JSON map per groupKey (player UUID or group ID), where keys are slot indices and values are Base64-encoded item data.

Data structure:

{
"0": "rO0ABXNyABpvcmcuYnVr...",
"1": "rO0ABXNyABpvcmcuYnVr...",
"2": null
}

Usage

  1. Create a gui_storage entry in your page
  2. Reference it from storage slots via storage.entry
  3. Items are automatically persisted when placed/taken

Storage Slot Configuration

When used in an open_gui layout, each slot can have:

FieldTypeDefaultDescription
entryRef<gui_storage>requiredReference to the GUI Storage artifact
maxAmountInt64Maximum item stack size in this slot
forceStorageBooltrueAllow non-stackable items (swords, tools)
temporaryBoolfalseItems are lost when the menu closes
groupRef<GroupEntry>nullGroup for shared storage (e.g., islands)
placeholderVar<Item>AIRItem shown when the slot is empty
requiredItemVar<Item>nullOnly allow this specific item type
requiredAmountInt0Amount needed to trigger onReachRequired
onFillRef[][]Triggers when slot becomes non-empty
onEmptyRef[][]Triggers when slot becomes empty
onReachRequiredRef[][]Triggers when requiredAmount is reached
consumeOnReachBooltrueConsume deposited items when requiredAmount is met

Storage Placeholders

These placeholders are resolved in storage slot displayName and lore at render time:

PlaceholderDescription
{stored_name}Display name of the stored item (empty if slot is empty)
{stored_amount}Current item count in the slot
{stored_max}Maximum capacity (64, 10, etc.)

Group-Based Storage

Use the group field to share storage between multiple players:

storage:
entry: "shared_chest_storage"
group: "island_group_entry"
maxAmount: 64

When a group is specified, all members share the same items. Without a group, storage is per-player (UUID-based).

Accumulation Mode

Set requiredItem and requiredAmount to create a progress-based storage slot:

storage:
entry: "quest_turn_in"
requiredItem: { material: DIAMOND }
requiredAmount: 64
onReachRequired: ["quest_complete_entry"]
consumeOnReach: true

Players deposit matching items. When the threshold is reached, onReachRequired triggers fire, and items are consumed (if consumeOnReach is true). A progress bar appears in the item lore.