Native Dialog
Paper servers running Minecraft 1.21.6 or later support the Native Dialog API.
With EasyMenu 7, simply specifying dialog: true renders your menu as a native client dialog window for players on supported server versions.
Enabling Native Dialogs
Add dialog: true to your menu YAML:
plugins/EasyMenu/sub/shop.yml
menu-title: "&aShop"
dialog: true # Renders as a dialog where supported, chest UI otherwise
menu-items:
- id: buy_diamond
material: DIAMOND
name: "Buy Diamond"
lore:
- "Price: $1,000"
command: "shop buy diamond"
- id: buy_gold
material: GOLD_INGOT
name: "Buy Gold"
lore:
- "Price: $500"
command: "shop buy gold"
Element Translation on Dialogs
On Native Dialogs, elements are rendered as dialog buttons:
| Menu Item Key | Rendered Dialog Representation |
|---|---|
name | Button label text |
lore | Hover tooltip on the button |
material | Used for decorative body item icons |
Customizing Dialog Layouts
Use presentation.native to customize button column counts, button widths, and escape key behaviors:
presentation:
mode: native-preferred
fallback: true
native:
columns: 2 # Number of button columns (default: 1–3)
button-width: 150 # Width of buttons
can-close-with-escape: true # Allow closing with Escape key
pause: false # Pause game flag in singleplayer
Graceful Fallback on Older Versions
On servers lacking the Dialog API (e.g. Minecraft 1.20.1 through 1.21.5), menus with dialog: true or mode: native-preferred automatically fall back to standard inventory GUIs.
Server administrators do not need to maintain separate menu versions for different Minecraft releases.