Skip to main content

EasyMenu 7

EasyMenu is a YAML-driven menu plugin for Minecraft servers.

Configure item materials, names, lores, slots, and commands or actions in simple YAML files to build feature-rich interactive menus with ease.

In EasyMenu 7, UI rendering has been cleanly separated into NegiLib. From the exact same YAML configuration, EasyMenu can show both traditional Chest UIs (inventory menus) and client-native Dialogs (available in Minecraft 1.21.6+). Menus open as inventory GUIs by default and switch to Native Dialogs with dialog: true or a presentation setting (they fall back to the inventory GUI automatically where dialogs are unsupported).

NegiLib-1.1.1.jar (Required / handles UI rendering)
EasyMenu-7.0.2.jar (Core / manages menu definitions & actions)
EasyMenu 6 configurations work without changes

EasyMenu 7 is designed with backward compatibility in mind. Existing config.yml, main.yml, and sub/*.yml files from EasyMenu 6 work as-is without any modifications.


Documentation Structure​

CategoryPageDescription
Getting StartedEasyMenu 7Overview of EasyMenu 7 (this page)
InstallationServer requirements and installation steps
5-Minute Quick StartFirst tutorial on building your menu
Migrating from v6 to v7Upgrade guide from EasyMenu 6 / 5.x
Creating MenusMenu Basicsmain.yml structure, size, title, background
Item SettingsItem materials, slots, modern components
Opening MenusCommands, dynamic open commands, permissions
SubmenusFolder structure, nested submenus, navigation
ActionsActions OverviewSyntax, execution order, precedence rules
Executing CommandsPlayer and console command actions
Menu, Message, SoundNavigation, chat messages, sound effects, titles
Advanced ActionsDelays, teleports, potion effects, inputs
Conditions & Dynamic DisplayConditionsPermissions, worlds, placeholder comparisons
Display & Usage Conditionsvisible-when vs enabled-when
VariantsDynamic overrides based on player conditions
CooldownRate limiting and shared cooldown keys
PlaceholderAPIPlaceholder expansion and injection safety
Presentation ModesInventory GUITraditional chest UI presentation
Native DialogPaper 1.21.6+ client dialog screens
InputsNamed input forms and chat fallback
Body & PresentationDecorative body content and display modes
Bedrock / Geyser / Rich UISetup steps and topology differences for Bedrock players
Configuration ReferenceFull YAML ReferenceComplete reference of all YAML keys
Action ListComplete list of all action types
Condition ListComplete list of all condition types
config.ymlGlobal plugin configuration reference
Commands & PermissionsCommands and permission hierarchy
Language SettingsBundled languages and custom message files
NegiLib Settings GuideNegiLib's config.yml and the roles of its packs
Diagnostic CodesMeaning and fixes for load-time errors and warnings
MiscellaneousCompatibilityServer support matrix and feature tables
Reload & Validation/menu reload atomicity and diagnostics
TroubleshootingCommon issues and troubleshooting steps
About NegiLibArchitecture split and developer API
Statistics & PrivacyWhat bStats sends and how to disable it

Key Features​

  • Intuitive YAML Syntax: Clean and readable configuration files. The minimal setup requires just a few lines.
  • Multi-UI Support: Renders as an Inventory GUI, a Native Dialog, or a Bedrock form through Geyser from the same menu configuration (the default is the Inventory GUI; the others are chosen with the presentation mode).
  • Flexible Action Pipeline: Execute commands, switch menus, send messages, play sounds, display titles, teleport, and apply delays in strict sequential order.
  • Rich Conditions: Conditional visibility, usage checks, and dynamic item variants driven by permissions, worlds, and PlaceholderAPI values.
  • Safe Atomic Reload: /menu reload validates all changes in a detached candidate before applying, safely rolling back if any syntax or structural error is detected.
  • Folia & Region Thread Safety: Built with Folia-aware scheduling to deliver exceptional concurrency and performance across Paper, Purpur, and Folia.
  • Sanitized Placeholder Safety: Untrusted player inputs are substituted last with section characters stripped, preventing placeholder and color injection.