Skip to main content

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 KeyRendered Dialog Representation
nameButton label text
loreHover tooltip on the button
materialUsed 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.