Upgrading Guide
This guide describes how to upgrade to EasyMenu 7 and covers migration details from prior versions.
Migrating from EasyMenu 6 to EasyMenu 7
The Short Version
- Your existing YAML files (
config.yml,main.yml,sub/*.yml,lang/*.yml) do not need to change. - NegiLib 1.x is now required.
Upgrade Steps
- Stop the server.
- Put both
NegiLib-1.1.0.jarandEasyMenu-7.0.1.jarinto yourplugins/directory. - Remove the old
EasyMenu-6.x.x.jar. - Start the server.
- Verify that
EasyMenu 7.x.x enabled; bound to NegiLibappears in your console.
Requirements That Changed
| Item | EasyMenu 6 | EasyMenu 7 |
|---|---|---|
| Server | Spigot, Paper, Folia | Paper, Purpur, Folia |
| Java | 17+ | 17+ |
| Minecraft | 1.20.1+ | 1.20.1+ |
| Required Plugin | None | NegiLib 1.x |
| PlaceholderAPI | Optional | Optional |
:::note Spigot Support Because NegiLib relies on the Folia scheduler API, Spigot is no longer supported. Please use Paper, Purpur, or Folia. :::
Existing Configuration Compatibility
All YAML features from EasyMenu 6 continue to work without modification:
menu-title: "&6&lEasyMenu"
menu-opensound: "ENTITY_EXPERIENCE_ORB_PICKUP"
menu-background-item: "GRAY_STAINED_GLASS_PANE"
menu-size: 54
menu-items:
- location: "3,3" # location and slot both supported
material: "RED_BED"
name: "&c&lHome"
command: "/home" # slash optional
sound: "ENTITY_ENDERMAN_TELEPORT"
close-menu: true
lore:
- "&7Teleport to your home"
- slot: 22
material: "EMERALD"
command: "sub_shop" # opens submenu "shop"
- slot: 26
material: "BARRIER"
command: "main_mainopen" # opens main menu
Typed actions (actions:), click-policy, custom-model-data, and the input action remain fully supported.
Notable Behavior Improvements
| Change | Rationale |
|---|---|
command: "shop buy diamond" without a leading slash now runs as a player command (was rejected in 6) | Makes shorthand commands more intuitive |
| Declaring actions that produce 0 effective actions is now an error during reload | Prevents buttons from silently turning into dead decorative items |
Target menu IDs in open-menu that do not exist are caught at reload time | Catches typos before players encounter runtime errors |
open-menu waits until the target menu is fully rendered before continuing the action pipeline | Ensures subsequent messages describe the newly opened menu |
Form input initial values are verified against the input contract | Prevents initial submissions from failing unexpectedly |
| Unknown sound names produce warnings and drop only the sound action | Non-critical sound errors do not prevent menus from opening |
New config.yml Keys
Your existing config.yml keeps working. On first launch with v7, new configuration keys are populated with safe defaults:
runtime:
default-presentation: inventory # default display mode for menus
diagnostics:
log-warnings-on-load: true
input:
default-timeout-seconds: 60
cooldown:
cleanup-interval-seconds: 60
Rolling Back
EasyMenu 7 never overwrites or alters your menu YAML files. To roll back, simply replace the plugin JAR with EasyMenu-6.x.x.jar.
Migrating from EasyMenu 5.x to EasyMenu 6 (Archive)
For servers upgrading from legacy EasyMenu 5.x:
Automatic Folder Migration
The legacy folder is automatically migrated on startup:
plugins/EasyMenuPlugin/ → plugins/EasyMenu/
If your old config.yml contained inline menu definitions, they are automatically separated into plugins/EasyMenu/main.yml.
Command Changes
The old /menureload command was removed in favor of:
/menu reload
Permission: easymenu.command.reload (or easymenu.admin).
Supported Legacy Syntax
location: "5,3"command: "/spawn"command: "sub_shop"command: "main_mainopen"close-menu: true