CustomMenu
Create beautiful menus for both Bedrock and Java players!
CustomMenu is a powerful Paper plugin that lets you create custom menus using simple YAML files. It automatically shows the right UI for each player - Bedrock players see native forms, Java players see the new Dialog API.
✨ Features
| Feature |
Description |
| 🎮 Cross-Platform |
Works for both Bedrock (via Floodgate) and Java players |
| 📋 Easy YAML Config |
Simple, readable menu configuration files |
| 🔄 Hot Reload |
Reload menus without restarting the server |
| 🖼️ Button Images |
Add icons to buttons (Bedrock only) |
| 📝 Input Forms |
Text fields, dropdowns, toggles, sliders |
| 🔐 Permissions |
Per-menu permission control |
| ⚡ Lightweight |
No dependencies required |
📦 Installation
- Download the JAR file
- Place it in your
/plugins/ folder
- Restart your server
- Edit menus in
/plugins/CustomMenu/menu/
🎮 Commands
| Command |
Permission |
Description |
/cmenu open <menu> |
custommenu.open |
Open a menu |
/cmenu reload |
custommenu.reload |
Reload all menus |
/cmenu list |
custommenu.list |
List available menus |
Permissions
custommenu.open - Use the open command
custommenu.open.<menu> - Open specific menu
custommenu.reload - Reload menus (default: op)
custommenu.list - List menus (default: true)
📝 Menu Configuration
Create .yml files in /plugins/CustomMenu/menu/
Simple Button Menu
title: "Server Menu"
content: "Welcome! Choose an option:"
buttons:
- text: "Spawn"
action: command
value: spawn
- text: "Shop"
action: command
value: shop
- text: "Close"
action: close
Button with Image (Bedrock)
buttons:
- text: "Spawn"
action: command
value: spawn
image: "https://example.com/icon.png"
image_type: url
Form with Inputs
title: "Player Report"
content: "Fill out the form:"
inputs:
- type: input
id: player
label: "Player Name"
placeholder: "Enter name..."
- type: dropdown
id: reason
label: "Reason"
options:
- Cheating
- Griefing
- Spam
- type: toggle
id: urgent
label: "Urgent"
default: "false"
submit:
text: "Submit Report"
action: console
value: "report {player} {reason} {urgent}"
🔧 Actions
| Action |
Description |
Example |
command |
Run as player |
spawn |
console |
Run as console |
give {player} diamond 1 |
message |
Send message |
Hello {player}! |
menu |
Open menu |
settings |
close |
Close menu |
- |
📌 Placeholders
| Placeholder |
Description |
{player} |
Player name |
{uuid} |
Player UUID |
{input_id} |
Value from input |
🎨 Input Types
| Type |
Description |
Platform |
input / text |
Text field |
Both |
dropdown |
Select list |
Both |
toggle / bool |
On/Off switch |
Both |
slider |
Number range |
Both |
label |
Display text |
Both |
🔗 Platform-Specific Settings
title: "Menu"
content: "Select option:"
buttons:
- text: "Option"
action: command
value: test
# Override for Bedrock players
form:
title: "Bedrock Menu"
content: "Tap to select!"
# Override for Java players
dialog:
title: "Java Menu"
content: "Click to select!"
📋 Requirements
- Paper 1.21.7+ (required for Dialog API)
- Floodgate (optional, for Bedrock support)