Core Parameters
Type of GUI to display. Choose from 23 supported types.
Title displayed at the top of the GUI. Supports MiniMessage, PlaceholderAPI, and CraftEngine tags.
Size of the inventory (only for
CUSTOM type). Values: 9, 18, 27, 36, 45, 54.Layout System
The layout pool defines reusable layout components referenced by ID.Available layout definitions. Each layout has an
id field. Types: simple, flex, paginated, scrollable, frame, composite, book, merchant.ID of the layout to display from the pool. If omitted, an EmptyLayout is used.
Layout Types
SimpleLayout — items placed at explicit(x, y) coordinates on a virtual grid. Each item uses x, y, count, direction, gap, and repeatY for positioning.
FlexLayout — auto-positioning with justifyContent (START, CENTER, END, SPACE_BETWEEN), alignItems (START, CENTER, END), and wrap.
PaginatedLayout — discrete pages with configurable itemsPerPage, nextPage/previousPage buttons.
ScrollableLayout — wraps an innerId layout with scroll support. Configurable virtualWidth, virtualHeight, custom scroll buttons, and showDefaultButtons. Scroll navigation buttons (UP/DOWN/LEFT/RIGHT) are separate from content and can be positioned independently.
FrameLayout — divides the screen into named frames. Each frame: id, x, y, width, height, layoutId. Frames can overlap with fixed-position scroll buttons.
CompositeLayout — layers multiple children layouts (by their IDs) on top of each other.
BookLayout — renders pages as a written book with MiniMessage formatting.
MerchantLayout — defines trades with result, costOne, optional costTwo, maxUses, experienceReward, villagerExperience, priceMultiplier, and criteria (conditions per trade — hidden if not met).
Item Configuration (GuiItemData)
All items use XY grid positioning — no legacy index-basedslots field.
X coordinate (0-8) in the virtual slot grid. Required for all slots.
Y coordinate (0-5) for 6-row inventories. Required for all slots.
Number of slots to generate starting from (x, y), repeating in the configured
direction.Direction of repetition for multiple slots. Options:
RIGHT, DOWN, LEFT, UP.Gap in slots between repetitions when
count > 1.Number of rows to repeat in 2D grid. When set, slots repeat horizontally first (via
direction/count), then repeat vertically by this many rows.The item to display. Use
Item.Empty for the player’s held item.Custom display name. Supports placeholders and MiniMessage.
Custom lore lines.
Conditions for this item to appear. Evaluated at menu build time.
Click actions per interaction type (LEFT_CLICK, RIGHT_CLICK, SWAP_OFFHAND, etc.). Each entry:
type, commands, triggers, closeMenu, executeReturn.Allow the player to take the item from the GUI.
Click copies the item to the cursor without removing it from the slot.
Fill all empty slots with this item configuration.
Cooldown in ticks (50ms each) before the slot can be clicked again. 0 = disabled.
Smooth movement animation:
targetX, targetY, duration (ms), easing (linear, ease_in, ease_out).Dialog input configuration:
title, placeholder, targetVar, onInputCommands, onInputTriggers.Triggers executed when the slot is clicked.
Fact modifiers applied on click.
Storage Slots
Slots can persist items across sessions by referencing a GUI Storage artifact.Persistent storage configuration for this slot. When set, click interactions are handled by the storage system instead of
interactionList.Storage Placeholders
In storage slotdisplayName and lore, use these placeholders that resolve at render time:
| Placeholder | Description | Example |
|---|---|---|
{stored_name} | Display name of the stored item | Diamond |
{stored_amount} | Current item count | 42 |
{stored_max} | Maximum slot capacity | 64 |
Click Configuration
Storage click behaviors are globally configurable via GUI Settings. Default mappings:| Action | Default Click |
|---|---|
| Place one item | LEFT |
| Place all from cursor | SHIFT_LEFT |
| Take one item | RIGHT |
| Take all from slot | SHIFT_RIGHT |
| Take one stack (64) | SWAP_OFFHAND |
| Fill from inventory | DOUBLE_CLICK |
| Drop all on ground | DROP |
Interaction Configuration
Menu-wide keybind handlers. Each entry:
type (InteractionType), commands, triggers, closeMenu, executeReturn.Interaction Types
LEFT_CLICK, RIGHT_CLICK, SHIFT_LEFT_CLICK, SHIFT_RIGHT_CLICK, MIDDLE_CLICK, DOUBLE_CLICK, NUMBER_KEY_1..9, DROP, DROP_ALL, SWAP_OFFHAND, SCROLL_UP, SCROLL_DOWN
Internal Commands
| Command | Effect |
|---|---|
gui:close | Close current menu |
gui:back | Return to previous menu |
gui:scroll <dx> <dy> [targetId] | Scroll viewport |
gui:scroll_up | Scroll up 1 row (shorthand) |
gui:scroll_down | Scroll down 1 row (shorthand) |
gui:scroll_left | Scroll left 1 column (shorthand) |
gui:scroll_right | Scroll right 1 column (shorthand) |
gui:page <delta> [layoutId] | Change paginated page |
gui:slider_set <index> | Update slider position |
gui:input | Open input dialog |
gui:open <entryId> | Open another menu |
gui:action <entryId> | Trigger another entry |
Audio
Lifecycle sounds:
onOpen, onClose, onScroll, onClick — each accepts Typewriter Sound objects.