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.
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)