Changeloog:
Updated for full compatibility for 26.2 as of the 14th of July, 2026
ZenMenus
ZenMenus is a modern, in-game GUI menu builder for Paper servers — build clickable menus for shops, warps, kits, rules, info panels, and more without ever touching a YAML file by hand. Every menu is created and edited live in-game, backed by per-item commands, permissions, fallback items, and cooldowns. Designed for performance, flexibility, and full admin control.
Features:
Live in-game editor for creating, editing, renaming, and deleting menus — no manual YAML required
10 container types (chest, hopper, furnace, brewing stand, and more) with 1–6 row chest menus and multi-page navigation
Intuitive editing — left-click to place a held item, right-click to delete, middle-click to clone
Per-item commands with three execution modes: [player], [playerop] (temporary OP), and [console]
Per-item and per-menu permissions with automatic default permission nodes
Per-item fallback items plus a configurable server-wide global fallback for players lacking permission
Per-item cooldowns (10s, 5m, 1h, 2d, 1w) and one-time-use items
Cooldown storage in YAML, SQLite, or MySQL with automatic migration between backends
Full MiniMessage and legacy & color code support in titles, names, lore, and commands
PlaceholderAPI placeholders resolved per viewer for personalized menus
Auto-generated shortcut command for every menu (for example /shop)
Hot-reload watcher that detects menu file changes automatically
Fully configurable editor GUIs, messages, and command names
minecraft:item_model support for custom item model definitions
Bedrock-aware via Geyser or Floodgate detection
LuckPerms integration — automatically migrates a menu's permission nodes when the menu is renamed
Use Cases:
Server shops that run economy commands on click (pair with your economy plugin)
Warp and teleport hubs
Kit selectors with cooldowns or one-time-use claiming
Rules, info, and help panels
Permission-gated menus with “locked” fallback items shown to players without access
Network-wide shared cooldowns using the MySQL backend
Commands:
/zmenus create <menu> [type] [rows] — Create a menu and open the editor
/zmenus edit <menu> — Open an existing menu in the editor
/zmenus delete <menu> — Delete a menu (with chat confirmation)
/zmenus rename <menu> — Rename a menu
/zmenus open <menu> [player] — Open a menu for yourself or another player
/zmenus list — List all loaded menus
/zmenus reload — Reload configs and all menus
/zmenus clearcooldown <player> [menu] [item] — Clear stored cooldowns for a player
/<menu-command> — Auto-generated per-menu shortcut that opens that menu
The base command (/zmenus) is renamable in config.yml. Tab-completion is included across the admin command suite.
Permissions:
zmenus.create — Create and edit menus
zmenus.delete — Delete menus
zmenus.rename — Rename menus
zmenus.reload — Reload configs and menus
zmenus.clearcooldown — Clear stored cooldowns
zmenus.open.others — Open menus for other players
zmenus.<menu> — Auto-generated open permission for each menu
Permission nodes are undeclared by default, so they apply to operators only until granted via your permissions plugin.
Requirements:
Paper 1.21.11+
Java 21+
PlaceholderAPI (required — ZMenus will not enable without it)
PacketEvents (required — ZMenus will not enable without it)
One cooldown storage backend: YAML (default), SQLite, or MySQL/MariaDB
Optional:
LuckPerms — auto-migrates permission nodes on menu rename
Geyser / Floodgate — for Bedrock client support (item_model rendering depends on your Geyser mappings)
Note: ZMenus is not an economy or shop engine — it runs commands, so pair it with your economy and kit plugins. It consumes PlaceholderAPI placeholders from other plugins but does not register its own.
IMPORTANT
The following issues are things I am aware of, and will fix them when I find a way:
1. For the loom, if you put in a specific combination of items that would produce a banner, you will see a phantom output in the middle. The plugin suppresses any clicks so it can't actually produce anything.
2. On the grindstone, when you put items in it, you will see that red X for incompatible items. This doesn't affect anything and I don't think i can suppress it without a client side mod.
If you run into other issues, PLEASE jump in my discord and let me know.
Updated for full compatibility for 26.2 as of the 14th of July, 2026
ZenMenus is a modern, in-game GUI menu builder for Paper servers — build clickable menus for shops, warps, kits, rules, info panels, and more without ever touching a YAML file by hand. Every menu is created and edited live in-game, backed by per-item commands, permissions, fallback items, and cooldowns. Designed for performance, flexibility, and full admin control.
Server shops that run economy commands on click (pair with your economy plugin)
Warp and teleport hubs
Kit selectors with cooldowns or one-time-use claiming
Rules, info, and help panels
Permission-gated menus with “locked” fallback items shown to players without access
Network-wide shared cooldowns using the MySQL backend
/zmenus create <menu> [type] [rows] — Create a menu and open the editor
/zmenus edit <menu> — Open an existing menu in the editor
/zmenus delete <menu> — Delete a menu (with chat confirmation)
/zmenus rename <menu> — Rename a menu
/zmenus open <menu> [player] — Open a menu for yourself or another player
/zmenus list — List all loaded menus
/zmenus reload — Reload configs and all menus
/zmenus clearcooldown <player> [menu] [item] — Clear stored cooldowns for a player
/<menu-command> — Auto-generated per-menu shortcut that opens that menu
The base command (/zmenus) is renamable in config.yml. Tab-completion is included across the admin command suite.
zmenus.create — Create and edit menus
zmenus.delete — Delete menus
zmenus.rename — Rename menus
zmenus.reload — Reload configs and menus
zmenus.clearcooldown — Clear stored cooldowns
zmenus.open.others — Open menus for other players
zmenus.<menu> — Auto-generated open permission for each menu
Permission nodes are undeclared by default, so they apply to operators only until granted via your permissions plugin.
Paper 1.21.11+
Java 21+
PlaceholderAPI (required — ZMenus will not enable without it)
PacketEvents (required — ZMenus will not enable without it)
One cooldown storage backend: YAML (default), SQLite, or MySQL/MariaDB
LuckPerms — auto-migrates permission nodes on menu rename
Geyser / Floodgate — for Bedrock client support (item_model rendering depends on your Geyser mappings)
The following issues are things I am aware of, and will fix them when I find a way:
1. For the loom, if you put in a specific combination of items that would produce a banner, you will see a phantom output in the middle. The plugin suppresses any clicks so it can't actually produce anything.
2. On the grindstone, when you put items in it, you will see that red X for incompatible items. This doesn't affect anything and I don't think i can suppress it without a client side mod.
If you run into other issues, PLEASE jump in my discord and let me know.
