Menu types
Menu types
Dialog Master supports four client-rendered dialog types. Set the type property inside each menu YAML file.
| Type | Best for | Primary controls |
|---|---|---|
notice |
Information and announcements. | Body content and one OK button. |
confirmation |
Purchases, rules gates, and destructive actions. | Confirm and deny buttons. |
multiAction |
Hubs, selectors, and navigation. | A grid of buttons and optional footer buttons. |
serverlinks |
Displaying configured server links. | Server links and an optional close button. |
Common menu structure
Each menu is stored as a separate .yml file in plugins/DialogMaster/menus/. The top-level key must match the filename without .yml:
my-menu:
title: "<gold>My menu"
type: multiAction
Common defaults are can-close-escape: true, after-action: CLOSE, and columns: 1 for multiAction. A menu may also define a command that is registered dynamically on startup and after /ydm reload.
Notice
welcome:
title: "<yellow>Announcement"
type: notice
body:
- type: plain-message
content: "<gray>Maintenance begins soon."
width: 250
ok-button:
label: "Understood"
width: 100
action: close
Confirmation
Use confirmation dialogs whenever the player must explicitly accept or reject an action:
purchase-confirm:
title: "<red>Confirm purchase"
type: confirmation
body:
- type: plain-message
content: "<gray>This costs <gold>$100<gray>."
confirm-button:
label: "<green>Confirm"
width: 120
action: static-run-command
command: "/buy item"
deny-button:
label: "<gray>Cancel"
width: 100
action: close
Multi-action
server-hub:
title: "<aqua>Server menu"
type: multiAction
columns: 2
body:
- type: plain-message
content: "<gray>Choose a destination."
buttons:
- label: "<green>Spawn"
action: static-run-command
command: "/spawn"
- label: "<red>PvP arena"
action: static-run-command
command: "/warp pvp"
footer-buttons:
- label: "<gray>Back"
action: back
Server links
server-links-menu:
title: "<gold>Server links"
type: serverlinks
columns: 2
ok-button:
label: "<gray>Close"
action: close
Related concepts
Use Interactive inputs for player-entered values, Requirements and logic for conditional access, and Action packages for reusable behavior.