CustomMenu
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.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
CustomMenu
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 | |---------|-------------| | 🎮 Lightweight | Works for both Bedrock (via Floodgate) and Java players | | 📋 Lightweight | Simple, readable menu configuration files | | 🔄 Lightweight | Reload menus without restarting the server | | 🖼️ Lightweight | Add icons to buttons (Bedrock only) | | 📝 Lightweight | Text fields, dropdowns, toggles, sliders | | 🔐 Lightweight | Per-menu permission control | | ⚡ Lightweight | No dependencies required |
---
📦 Installation
1. Download the JAR file 2. Place it in your `/plugins/` folder 3. Restart your server 4. 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
```yaml 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)
```yaml buttons: - text: "Spawn" action: command value: spawn image: "https://example.com/icon.png" image_type: url ```
Form with Inputs
```yaml 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
```yaml 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
- Floodgate (required for Dialog API) - Floodgate (optional, for Bedrock support)