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.

84

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)

ADS