Easymenu
A lightweight GUI menu plugin for Paper and Spigot servers. Create menus easily with YAML configuration.
Easymenu
EasyMenu
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.
日本語にも対応しています ---
Features
- 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.
---
Requirements
| 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. ---
Installation
1. Download the latest EasyMenu `.jar` file. 2. Place it into your server's `plugins` folder. 3. Restart the server. 4. Edit the generated files in `plugins/EasyMenu/`. 5. Run `/menu` in-game to open the menu.
After the first startup, EasyMenu generates the following structure:
```text plugins/EasyMenu/ ├── config.yml ├── main.yml ├── lang/ └── sub/ ```
---
Basic Usage
Open the main menu
```text /menu ```
Reload the configuration
```text /menu reload ```
Open a submenu directly
```text /submenu <id> ```
Example:
```text /submenu shop ```
---
Permissions
| 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.
---
Example Main Menu
Create or edit `plugins/EasyMenu/main.yml`.
```yaml 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." ```
---
Example Submenu
Create `plugins/EasyMenu/sub/shop.yml`.
```yaml 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:
```yaml command: "sub_shop" ```
---
Supported Item Options
| 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 |
---
Special Commands
| Format | Behavior | |---|---| | `/command` | Runs a command as the player | | `sub_<name>` | Opens `plugins/EasyMenu/sub/<name>.yml` | | `main_mainopen` | Returns to the main menu |
---
Configuration Overview
`config.yml` is used for plugin behavior and performance settings.
```yaml 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.
---
Language Files
EasyMenu includes language files for:
- English: `en_us.yml` - Japanese: `ja_jp.yml` - Russian: `ru_ru.yml`
You can edit the generated language files in `plugins/EasyMenu/lang/` and reload the plugin afterward.
---
Good For
EasyMenu is useful for:
- server navigation menus - warp menus - shop menus - rule and help menus - player utility menus - server selector-style menus - custom lobby menus - resource-pack based custom GUI items
---
Notes for Updating from Older Versions
EasyMenu v5.0.0 uses a cleaner folder and configuration structure.
Older versions used:
```text plugins/EasyMenuPlugin/config.yml ```
Newer versions use:
```text plugins/EasyMenu/config.yml plugins/EasyMenu/main.yml ```
Move your main menu definition into `main.yml` and keep plugin behavior settings in `config.yml`.
---
License
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.