Compatibility
Minecraft: Java Edition
1.21.7โ1.21.11
Platforms
Tags
Creators
Details
Licensed MIT
Published 6 months ago
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 commandcustommenu.open.<menu>- Open specific menucustommenu.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)

