Skip to main content

EasyMenu

EasyMenu is a lightweight GUI menu plugin for Spigot and Paper servers.

Create clean, clickable Minecraft menus using simple YAML files. You can build a main menu, add unlimited submenus, run commands from items, customize sounds and lore, and reload your menu setup without restarting the server.

EasyMenu also supports Japanese.


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 commands 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

RequirementVersion
Java17 or newer
Server softwareSpigot / Paper / Purpur
Minecraft API version1.20+
Verified versions1.21.8
Supported versions1.16.x to the latest Paper version
DependenciesNone
note

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:

plugins/EasyMenu/
├── config.yml
├── main.yml
├── lang/
└── sub/

Basic Usage

Open the main menu

/menu

Reload the configuration

/menu reload

Open a submenu directly

/submenu <id>

Example:

/submenu shop

Permissions

PermissionDescriptionDefault
easymenu.adminAllows reloading the EasyMenu configurationOP
menu.reloadLegacy reload permission kept for compatibilityOP

/menureload is still available for compatibility, but /menu reload is the recommended command.


Example Main Menu

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."

Example Submenu

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"

Supported Item Options

OptionDescription
locationMenu slot position in column,row format
materialBukkit material name
nameItem display name with color codes
commandCommand or EasyMenu special action
soundSound played when the item is clicked
close-menuWhether the inventory closes after clicking
loreItem lore lines
custom-model-dataCustom model data for resource packs

Special Commands

FormatBehavior
/commandRuns a command as the player
sub_<name>Opens plugins/EasyMenu/sub/<name>.yml
main_mainopenReturns to the main menu

Configuration Overview

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.


Language Files

EasyMenu includes language files for:

LanguageFile
Englishen_us.yml
Japaneseja_jp.yml
Russianru_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:

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.


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.