
A lightweight GUI menu plugin for Paper and Spigot servers. Create menus easily with YAML configuration.
EasyMenu is a lightweight GUI menu plugin for Spigot and Paper servers.
Create clean, clickable Minecraft menus using simple YAML files. Build a main menu, add unlimited submenus, run commands from items, customize sounds and lore, and reload your menu setup without restarting the server.
YAML-based menu creation
Create and edit menus with simple configuration files.
Main menu and submenu support
Use main.yml for the main menu and place submenu files inside the sub/ folder.
Unlimited nested menus
Open submenus from menu items and return to the main menu when needed.
Command execution from menu items
Run player commands such as /spawn, /home, /warp, or any command provided by other plugins.
Custom item display
Configure materials, names, lore, sounds, slot positions, and custom model data.
Multi-language support
Built-in language files for English, Japanese, and Russian.
Async loading and cache system
Menu loading and submenu access are optimized with asynchronous processing and configurable caching.
No external dependencies
EasyMenu works without requiring Vault, PlaceholderAPI, or any other plugin.
| Requirement | Version |
|---|---|
| Java | 17 or newer |
| Server software | Spigot / Paper / Purpur |
| Minecraft API version | 1.20+ |
| Verified Versions | 1.21.8 |
| Supported Versions (Not all versions have been individually tested) | 1.16.x~paper latest |
| Dependencies | None |
| Folia may load, but full compatibility is not guaranteed. |
.jar file.plugins folder.plugins/EasyMenu/./menu in-game to open the menu.After the first startup, EasyMenu generates the following structure:
plugins/EasyMenu/
├── config.yml
├── main.yml
├── lang/
└── sub/
/menu
/menu reload
/submenu <id>
Example:
/submenu shop
| Permission | Description | Default |
|---|---|---|
easymenu.admin |
Allows reloading the EasyMenu configuration | OP |
menu.reload |
Legacy reload permission kept for compatibility | OP |
/menureload is still available for compatibility, but /menu reload is the recommended command.
Create or edit plugins/EasyMenu/main.yml.
menu-title: "&6&lEasyMenu"
menu-opensound: "ENTITY_EXPERIENCE_ORB_PICKUP"
menu-background-item: "GRAY_STAINED_GLASS_PANE"
menu-size: 54
menu-items:
- location: "5,3"
material: "DIAMOND"
name: "&bTeleport Home"
command: "/home"
sound: "ENTITY_ENDERMAN_TELEPORT"
close-menu: true
lore:
- "&7Click to teleport"
- "&7to your home."
- location: "5,4"
material: "EMERALD"
name: "&aShop"
command: "sub_shop"
sound: "BLOCK_NOTE_BLOCK_PLING"
close-menu: true
lore:
- "&7Open the shop menu."
Create plugins/EasyMenu/sub/shop.yml.
menu-title: "&a&lShop Menu"
menu-opensound: "BLOCK_CHEST_OPEN"
menu-background-item: "LIME_STAINED_GLASS_PANE"
menu-size: 27
menu-items:
- location: "3,2"
material: "DIAMOND"
name: "&bBuy Diamonds"
command: "/buy diamond 1"
sound: "ENTITY_EXPERIENCE_ORB_PICKUP"
close-menu: false
lore:
- "&7Price: $100"
- location: "5,3"
material: "BARRIER"
name: "&cBack to Main Menu"
command: "main_mainopen"
sound: "UI_BUTTON_CLICK"
close-menu: true
lore:
- "&7Return to the main menu."
To open this submenu from another menu item, use:
command: "sub_shop"
| Option | Description |
|---|---|
location |
Menu slot position in column,row format |
material |
Bukkit material name |
name |
Item display name with color codes |
command |
Command or EasyMenu special action |
sound |
Sound played when the item is clicked |
close-menu |
Whether the inventory closes after clicking |
lore |
Item lore lines |
custom-model-data |
Custom model data for resource packs |
| Format | Behavior |
|---|---|
/command |
Runs a command as the player |
sub_<name> |
Opens plugins/EasyMenu/sub/<name>.yml |
main_mainopen |
Returns to the main menu |
config.yml is used for plugin behavior and performance settings.
language: "en_us"
load-on-startup: true
precache-submenus: true
async:
worker-threads: 2
cache:
submenu-expiry-seconds: 300
submenu-max-size: 100
cleanup-interval-seconds: 60
resolved-path-max-size: 200
submenu:
search-depth: 3
listener-failsafe-seconds: 30
main.yml is used only for the main menu layout.
This separation makes large menu setups easier to manage and reduces the risk of mixing plugin settings with menu definitions.
EasyMenu includes language files for:
en_us.ymlja_jp.ymlru_ru.ymlYou can edit the generated language files in plugins/EasyMenu/lang/ and reload the plugin afterward.
EasyMenu is useful for:
EasyMenu v5.0.0 uses a cleaner folder and configuration structure.
Older versions used:
plugins/EasyMenuPlugin/config.yml
Newer versions use:
plugins/EasyMenu/config.yml
plugins/EasyMenu/main.yml
Move your main menu definition into main.yml and keep plugin behavior settings in config.yml.
This plugin is free to use on Minecraft servers.
Redistribution, resale, modified redistribution, or claiming this plugin as your own is not allowed without permission.