Dungeon Global Menu
Action entry that opens a global dungeon menu showing instances from a category. Uses the GUI extension's layout system (layoutPool + mainLayoutId) for the visual structure.
Dungeon instance slots are injected at positions marked with buttonType: "DUNGEON_INSTANCE_SLOT" in the layout pool. Each marker is replaced by the next instance from the category, preserving the exact (x, y) position.
Layout System
The menu uses the GUI extension's layout engine. Define your visual structure in layoutPool (Simple, Paginated, Scrollable, Frame layouts). Mark positions for dungeon instances with buttonType: DUNGEON_INSTANCE_SLOT, and the extension automatically replaces those markers with dungeon items sorted by priority.
Buttons use virtual coordinates (x, y). (0, 0) is top-left, (8, 5) is bottom-right for a standard 6-row inventory.
Buttons System
Use the buttons list to configure interactive buttons. Each entry defines a type (enum), x/y position, and visual overrides (item, name, lore). If a button type is absent from buttons, no button of that type appears.
| Type | Description | Default Position |
|---|---|---|
INFO | Information button — shows dungeon details | (4, 0) |
FIND_PARTY | Dual-state: "Find Party" (not in party) / "Leave Party" (in party) | (4, 5) |
Uses
DungeonGlobalButtonTypeenum. Party lobby buttons use the separateDungeonPartyButtonType.
Placeholders
| Placeholder | Context | Description |
|---|---|---|
{dungeon_name} | Instance item name/lore | Name of the dungeon instance |
{players} | Instance item name/lore | Current player count in lobby |
{max} | Instance item name/lore | Maximum party size |
{player} | Button name/lore | Current player name |
Configuration
dungeon_global_menu — Map
Configuration for the dungeon global menu.
Properties
category
"> Category to display in this menu. inventoryTitle
">
Title of the inventory. Supports placeholders.
inventoryRows — Int
Number of rows in the inventory (1-6).
buttons
"> Button configurations. Position and visuals are fully customizable via x/y. Each type appears at most once.
DungeonGlobalButtonSlot
type
Button type: INFO or FIND_PARTY.
x — Int?
X position in the virtual grid (0-8). Uses default if null.
y — Int?
Y position in the virtual grid (0-5). Uses default if null.
item — Item?
Override item. Falls back to hardcoded default if null. name
?"> Display name with placeholders. lore
?"> Lore lines with placeholders.
guiType — GuiType
GUI type (CUSTOM, BOOK, FURNACE, etc.). layoutPool
">
Pool of layout definitions (Simple, Paginated, Scrollable, Frame). Items with buttonType: DUNGEON_INSTANCE_SLOT are replaced by dungeon instances.
mainLayoutId
">
ID of the main layout to display from the pool.
audio — GuiAudioData
Audio configuration (onOpen, onClose, onScroll, onClick).
Example
dungeon_global_menu:
id: "dungeon_hub"
category: "main_dungeons"
inventoryTitle: "<gold>⚔ Dungeons</gold>"
inventoryRows: 6
guiType: CUSTOM
mainLayoutId: "main_frame"
layoutPool:
- id: "main_frame"
type: frame
frames:
- id: "dungeon_list"
x: 0
y: 1
width: 9
height: 4
layoutId: "dungeon_scroll"
- id: "dungeon_scroll"
type: scrollable
innerId: "dungeon_items"
virtualWidth: 9
virtualHeight: 12
showDefaultButtons: false
buttons:
- item:
item: ARROW
name: "<green>▼ Scroll"
direction: DOWN
step: 1
- id: "dungeon_items"
type: simple
items:
- item: STONE
x: 0
y: 0
buttonType: "DUNGEON_INSTANCE_SLOT"
name: "<gold>{dungeon_name}"
- item: STONE
x: 0
y: 2
buttonType: "DUNGEON_INSTANCE_SLOT"
name: "<gold>{dungeon_name}"
buttons:
- type: INFO
x: 4
y: 0
item: BOOK
name: "<gold>⚡ Info</gold>"
lore:
- "<gray>Select a dungeon to start"