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

Quick challenge

How far can you run before the mobs catch you?

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