BedrockDialog

BedrockDialog is a Dialog wrapper for both Paper 1.21.8+ and Geyser (or Floodgate)

38

BedrockDialog

BedrockDialog

A Paper plugin library that lets you show interactive dialogs to players on both Java Edition and Bedrock Edition (via Geyser/Floodgate) through a single unified API.

Intended to be used as a dependency library by other plugins. The bundled `/bdialog` command and `config.yml` dialog definitions are provided as a demo and for simple use cases only.

Requirements

- Paper 1.21.8+ - Java 21+ - Geyser and/or Floodgate (optional, for Bedrock Edition support)

API Usage

See API.md) for details on using BedrockDialog as a library in your own plugin.

Demo / Standalone Usage

The plugin ships with a built-in command and `config.yml` for testing dialogs without writing code. This is intended for demonstration and simple use cases.

Commands

| Command | Description | Permission | |-----------------------|-----------------------------------|---------------------------------| | `/bdialog open <id>` | Open a dialog defined in config | `bedrockdialog.dialog.open` | | `/bdialog reload` | Reload `config.yml` | `bedrockdialog.dialog.reload` |

Both permissions default to OP only.

config.yml Example

```yaml dialogs: welcome: type: multi_button title: "Welcome!" body: "Welcome, <player>!" buttons: - label: "Go to Spawn" actions: - type: run_as_player command: "spawn" - label: "Check Rules" actions: - type: open_dialog dialog_id: "notice_rules" - label: "Close" actions: []

confirm_pvp: type: confirm title: "Join PVP?" body: "<player>, do you want to join PVP?" yes_label: "Join" no_label: "Cancel" on_yes: - type: run_as_console command: "pvp join {player}" on_no: []

notice_rules: type: notice title: "Server Rules" body: "1. No griefingn2. No cheatingn3. Have fun!" dismiss_label: "Got it" on_dismiss: []

item_form: type: input title: "Item Distribution Form" body: "Select what you want to receive" submit_label: "Submit" inputs: - type: text key: player_name label: "Target Player Name" placeholder: "e.g. Steve" default: "" - type: slider key: amount label: "Amount" min: 1 max: 64 step: 1 default: 1 - type: boolean key: checkbox label: "Checkbox Test" default: true - type: dropdown key: item label: "Item" default: 0 options: - id: diamond label: "Diamond" - id: gold_ingot label: "Gold Ingot" on_submit: - type: run_as_console command: "give {input.player_name} {input.item} {input.amount}" on_close: [] ```

Config Actions

| Type | Description | Fields | |-----------------|--------------------------------------|-------------| | `run_as_player` | Execute a command as the player | `command` | | `run_as_console`| Execute a command as the console | `command` | | `open_dialog` | Open another dialog by config ID | `dialog_id` |

Placeholders: `{player}` (player name), `{input.<key>}` (input field value, available in `on_submit`)

License

MIT License. See LICENSE for details.

ADS