Body & Presentation
EasyMenu 7 supports decorative body elements for dialogs and detailed presentation settings to control rendering behavior.
Body Content (body)
body defines decorative introductory text and item icons rendered above the buttons in Native Dialogs:
menu-title: "&6Featured Shop"
dialog: true
# Decorative header content
body:
- type: text
text: "&eWeekend Special Sale! 20% OFF everything.\n&7Check out featured items below:"
- type: item
material: NETHERITE_SWORD
name: "&c&lFeatured Weapon"
lore:
- "&7Legendary Netherite Sword"
- "&eSpecial: $5,000"
menu-items:
- id: buy
material: EMERALD
name: "Buy Now"
command: "shop buy featured"
body Keys
type | Key | Default | Description |
|---|---|---|---|
text (default) | text | Required | The text to show. & color codes and placeholders are supported. Inside a double-quoted YAML string, \n is a line break. |
width | None | Text width in pixels. When omitted the backend default is used. | |
item | material | Required | Material of the item to show. |
name / lore / amount / glint / custom-model-data / base64 / components | Same syntax as Item Settings. | ||
description | None | Description text shown next to the item. | |
show-tooltip | true | Whether hovering the item shows its tooltip. | |
show-decorations | true | Whether decorations such as the count and durability bar are drawn. |
Any type other than text or item is an error.
In standard chest UIs, body content is safely omitted. Because body elements carry no executable actions, no functionality is lost.
Presentation Modes (presentation)
Customize menu presentation modes per file:
presentation:
mode: native-preferred # Display mode
fallback: true # Allow falling back to chest UI on unsupported servers
inventory:
size: 54
background: "GRAY_STAINED_GLASS_PANE"
native:
columns: 3
button-width: 160
can-close-with-escape: true
pause: false
What each key does:
| Key | Default | Description |
|---|---|---|
mode | runtime.default-presentation in config.yml (default: inventory) | Display mode; see the list below. An unknown value is an error. |
fallback | true | Whether EasyMenu may switch to the next renderer when the requested one cannot open. With false it fails instead. |
inventory.size | 54 | Inventory slot count (a multiple of 9, 9-54). Same meaning as menu-size. |
inventory.background | GRAY_STAINED_GLASS_PANE | Background item. none disables it. |
native.columns / button-width / can-close-with-escape / pause | See Native Dialog |
The root-level menu-size and menu-background-item are used as the values when presentation.inventory is omitted.
Supported Modes (presentation.mode)
| Mode | Priority Chain | Description |
|---|---|---|
inventory (default) | Chest UI | Classic inventory menu format. |
native-preferred | Dialog → Chest UI | Native Dialog where supported, Chest UI otherwise. |
native-required | Dialog only | Only opens on servers with Dialog support (shows friendly error on older servers). |
rich-preferred | Rich UI → Basic Bedrock form → Dialog → Chest UI | Prefers Rich UI for Geyser players, falling back to a supported renderer if unavailable. |
rich-required | Rich UI only | Requires a rich renderer. |
auto | Automatic | Selects a supported renderer in order: Rich UI, basic Bedrock form, Dialog, Chest UI. |
native and rich work as aliases of native-preferred and rich-preferred.
*-required modes never switch renderers regardless of fallback; the menu does not open for a player who does not meet the requirement.
Setup steps and topology differences for Bedrock are covered in the Bedrock / Geyser / Rich UI Guide.
For Geyser connections, rich-preferred or auto tries Rich UI.
NegiLib defaults to bedrock.rich-ui: auto; set it to off in plugins/NegiLib/config.yml to use basic Bedrock forms.
The v11 Pack GridMenu uses 82% of the screen height, keeps the title and close button fixed, and scrolls only the content.
Reconnect after a Pack update. Pack registration does not prove client-side JSON UI rendering; check GUI Scale, narrow screens, scrolling, and controls on the client you use.
If both dialog and a presentation section are defined, presentation takes precedence, dialog is ignored, and a warning (dialog-key-ignored) is logged.
A lone dialog: false forces the inventory display.