Compatibility
Minecraft: Java Edition
Platforms
Links
Creators
Details
🐱 MiaoMenu — The menu plugin that actually gets it right
Do what suits you best, make the difficult simple. That's the idea.
Sound familiar?
| Frustrating stuff | Other plugins | MiaoMenu |
|---|---|---|
| Bedrock players can't see menus | Need a separate plugin | Auto-detected, native support |
| Every config change means a reload | /reload over and over |
Save the file, you're done — 0.5-second hot-reload |
| Cross-server menus are a pain | Complex setups required | BungeeCord / Velocity built in |
| Players lose the menu item | No protection | NBT-tagged clock, survives death |
| Folia breaks everything | Console spam | Runs natively on Folia |
What it does
🎯 One config, both editions
MiaoMenu checks whether a player is on Java or Bedrock and serves the right UI automatically:
- Java players get the classic chest inventory (1–6 rows, up to 54 slots)
- Bedrock players get a native form UI designed for touch screens(need Floodgate)
You write the menu logic once. The plugin handles the rest.

⚡ Hot-reload that actually works
Powered by Java's WatchService with a 0.5-second debounce. Edit a YAML file, hit save — the changes go live immediately. No commands needed.
(There's still a /dgm reload command if you prefer doing things manually.
Moreover, tested with over 10 reloads, no memory leaks detected.)
🕰️ The Time Mirror (menu clock)
Every player receives a clock item tagged with NBT data:
- Checked on login — if it's missing from their inventory, it gets replaced automatically. No duplicates.
- Protected on death — the clock never drops, and it reappears after respawn.
- Right-click to open the default menu instantly.
- Uniquely identified via NBT, so it won't clash with other items.
🔗 Cross-server teleportation
Built-in support for BungeeCord and Velocity proxy setups. The plugin detects which one you're running and configures itself.
# config.yml — one line to enable
settings:
velocity-network: true
Pair it with a server-selector menu and players can hop between servers in one click:
# server-selector.yml
survival:
slot: 12
material: DIAMOND_SWORD
display_name: "&c&lSurvival"
left_click_commands:
- "[player] server survival"
- "[message] &aConnecting to survival..."
- "[close]"
🎨 Flexible menu configuration
Java Edition — straightforward YAML:
menu_title: "&6&lMain Menu &7| &fServer Name"
rows: 6
items:
server_info:
slot: 10
material: KNOWLEDGE_BOOK
display_name: "&e&lServer Info"
lore:
- "&7Click to view server information"
- "&fOnline: &a%server_online%&f/&a%server_max_players%"
left_click_commands:
- "[message] &6=== Server Info ==="
- "[player] list"
- "[close]"
Bedrock Edition — native forms:
menu:
title: "§6§lMain Menu"
items:
- text: "§e§lServer Info\n§7Click for details"
icon: "textures/items/book_enchanted"
icon_type: "path"
command: "dgeysermenu open info"
execute_as: "player"
🛠 Action system
Five built-in action types cover the usual interactions:
| Action | Syntax | What it does |
|---|---|---|
| Run as player | [player] spawn |
The player executes the command |
| Run as console | [cmd] give %player% diamond 1 |
Console executes the command |
| Send a message | [message] &aWelcome back! |
Sends chat text to the player |
| Close the menu | [close] |
Closes the current menu |
| Open another menu | [menu] shop |
Opens a different menu (nesting supported) |
You can bind separate actions to left-click and right-click:
left_click_commands:
- "[player] spawn"
right_click_commands:
- "[close]"
🧩 Plugin integrations
| Plugin | What you get |
|---|---|
| PlaceholderAPI | Full PAPI variable support — player stats, economy, online count, whatever you need |
| Floodgate / Geyser | Automatic Bedrock detection, no extra setup |
| CraftEngine | Use custom items as menu icons |
| bStats | Anonymous usage metrics, bundled in |
🎵 Menu sounds
Pick any Minecraft sound to play when a menu opens:
settings:
open-menu-sound:
enabled: true
sound: "entity.experience_orb.pickup"
volume: 1.0
pitch: 1.0
🍃 Lightweight & Folia-ready
- Minimal footprint — core features only, no bloat.
- Detects Folia at startup and switches to the correct scheduler automatically.
- Built on Paper 1.21.8+ API.
Getting started
Installation
- Drop the JAR into your server's
pluginsfolder. - Restart the server.
- Open
plugins/MiaoMenu/— sample menus are generated automatically. - Edit configs to match your server; changes apply on save.
Commands
| Command | Description | Permission |
|---|---|---|
/dgm open <menu> |
Opens a menu | dgeysermenu.use |
/dgm reload |
Reloads configs (rarely needed) | dgeysermenu.reload |
/dgm help |
Shows help | dgeysermenu.use |
/getmenuclock |
Gives you a Time Mirror | dgeysermenu.admin |
Every command has Tab completion — no need to type the whole thing out.
Permissions
dgeysermenu.use # Basic access (everyone by default)
dgeysermenu.admin # Admin tools (OP by default)
dgeysermenu.reload # Reload command (OP by default)
dgeysermenu.menu.* # Per-menu access control
File layout
MiaoMenu/
├── java_menus/ # Java Edition menus
│ ├── test.yml # Sample main menu
│ └── server-selector.yml # Server selector
├── bedrock_menus/ # Bedrock Edition menus
│ └── test.yml # Sample main menu
└── config.yml # Plugin settings

Going further
PlaceholderAPI variables
items:
player_stats:
slot: 22
material: PLAYER_HEAD
display_name: "&b%player_name%"
lore:
- "&fLevel: &e%player_level%"
- "&fBalance: &6%vault_eco_balance%"
- "&fPlaytime: &b%player_time_hours% hours"
Nested menus
left_click_commands:
- "[menu] shop"
- "[message] &2Welcome to the shop!"
CraftEngine custom items
# config.yml
settings:
craftengine:
enabled: true
fallback-material: STONE
# In a menu file
items:
custom_sword:
material: "my_pack:custom_sword"
display_name: "&d&lLegendary Sword"
Why MiaoMenu?
| MiaoMenu | Typical alternative | |
|---|---|---|
| Java + Bedrock | Both, out of the box | One or the other |
| Hot-reload | 0.5s, automatic | Manual /reload |
| Menu item | Managed automatically | Hand it out yourself |
| Cross-server | BungeeCord + Velocity built in | Needs another plugin |
| Folia | Native support | Errors everywhere |
| Custom items | CraftEngine integration | Vanilla materials only |
| Performance | Lightweight | Heavy |
| Price | Free, GPL v3 | Some are paid |

Try it now
/dgm open test # Open the sample menu
/getmenuclock # Get a Time Mirror
/dgm help # See what's available
Java + Bedrock. No reload headaches. Five minutes to set up.
If MiaoMenu saves you some time, a ⭐ on GitHub goes a long way.
GPL v3 · by MingLi


