Easymenu

A lightweight GUI menu plugin for Paper and Spigot servers. Create menus easily with YAML configuration.

1,36k

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.

ADS