Menus & Editor
Every file in menus/ is one menu. main.yml is the one the ESC button opens. Edit them in game or in YAML — both write the same files.
The in-game editor
/dexdialog editor (permission dexdialog.editor). The first admin to join after installing gets a clickable link to it.
You can also copy a button or a whole menu, edit the heading and text in one box, and Try it. Settings pages and leaderboards have the same editor.
A menu file
title: "&fDonut SMP" # button text on the ESC screen + menu header
columns: 2
can-close-with-escape: true
after-action: close # close | none | wait_for_response
gui: # chest fallback for old clients
rows: 4
title: "&8Donut SMP"
buttons:
- label: "&fHomes"
tooltip: "&7Open your homes"
action: run_command
value: "homes"
gui: { slot: 10, material: RED_BED }
- label: "&fFriends"
action: run_command
value: "friend"
requires-plugin: DexFriends # hidden unless DexFriends is installed
Button actions
| action | value |
|---|---|
run_command | Command run as the player, no slash — homes |
console_command | Command run from console — give %player% diamond 1 |
open_menu | A file name from menus/ |
open_settings | A file name from settings/ |
open_leaderboard · open_full_leaderboard | A file name from leaderboards/ (full = top 200) |
open_url | A website, opened by the player's game |
message | Text sent to the player |
add_to_list · remove_from_list | A player name — the personal player list |
set_target | Sets %target% for the next menu |
back · close · none | Go back, close, or do nothing |
Optional per button: tooltip, width (1–1024), permission, requires-plugin, commands (extra lines prefixed player:, console: or message:) and gui: { slot, material }.
Player-list menus
type: player-list shows one button per player — used by Stats, Teleport and Pay. The clicked player becomes %target% and stays set for the next menu.
type: player-list
list:
source: both # both | saved | online
max-entries: 40
entry-format: "%head%&f%player%"
entry-action: open_menu
entry-value: pay-amount
add-button:
label: "&7+ Add Player to List"
Form menus
type: form adds real input fields. Values come back as %input_<key>%. Input types: text, dropdown, number, boolean.
type: form
title: "&fPay %target%"
inputs:
- key: amount
type: text
label: "&fAmount"
max-length: 16
buttons:
- label: "&aSend"
action: run_command
value: "pay %target% %input_amount%"
Forms need a 1.21.6+ client — chests can't take typing, so old clients get a short message instead.
The pause-screen menu
The ESC menu is the same for everyone. Minecraft sends it once, server-wide, so placeholders and permission hiding don't work inside menus/main.yml (permissions are still checked on click). Changes to it show on the ESC button after a restart. /menu opens a per-player copy where everything works and reloads live.