General Configuration

Plugin Configuration

Global settings and fixes available in the plugin's config.yml file.

Fixes & Patches

fixes.fakeinternaldataBoolean
Enables a patch for Denizen's fakeinternaldata command on Minecraft 1.21 and higher. This patch is provided because the Denizen developers still haven't fixed this command on newer game versions. Default is true.
config.yml
fixes:
  # Fix for Denizen 'fakeinternaldata' command on MC 1.21+
  fakeinternaldata: true
Containers Dialog

Overview & Core Setup

Dialog script containers allow you to define native Paper API UI screens rendered on the client side.

Anatomy of a Script

Structure
my_dialog:
    type: dialog
    base:
        type: multi
        title: <gold>Header Title
    bodies: ...
    inputs: ...
    buttons: ...

Universal Base Properties

typeRequired
The layout engine: multi, list, confirm, or notice.
titleRequired
The main header. Supports tags and MiniMessage.
external titleOptional
The window title in the client's OS frame.
can close with escapeOptional
Boolean. If true (default), ESC closes the window.
Containers Dialog

Layout: Multi

A versatile form layout. Supports multiple inputs and custom buttons.

Multi-specific `base:` Properties

columnsOptional
Integer. Arrange elements into grid columns.
exit buttonOptional
A button definition block used as a dedicated close button.

Multi-specific Root Properties

buttons:Required
A map of action buttons at the bottom.
Containers Dialog

Layout: List

Designed to display buttons that open other dialog scripts.

List-specific `base:` Properties

columnsOptional
Integer. Columns in the grid.
button widthOptional
Integer. Sets a fixed pixel width for auto-generated buttons.
exit buttonOptional
A button definition block used as a dedicated close button.

List-specific Root Properties

dialogs:Required
A list of script names to display.
Containers Dialog

Layout: Confirm

A simple confirmation box with two actions.

Confirm-specific Root Properties

yes:Root
Affirmative ActionButton definition.
no:Root
Negative ActionButton definition.
Containers Dialog

Layout: Notice

A simple alert box.

Notice-specific Root Properties

button:Root
Optional ActionButton definition. If omitted, creates a default "OK" button.
Containers Dialog

Components: Inputs

Inputs defined under inputs:. Values available via <context.key_name>.

Text Input (type: text)

width
Field width.
max length
Limit characters.
initial
Default text.
label visible
Boolean. Show/Hide the label.
multiline options
Section with max lines and height.

Boolean Input (type: boolean)

initial
Default state (true/false).
on true / on false
Labels for ON/OFF states.

Number Input (type: number)

start / endReq
Range bounds (Float).
step
Increment step.
initial
Starting value.
width
Slider width.
label format
Format string (e.g. "Val: %s").

Single Choice (type: single)

options:Req
Map of options (id, display, initial).
label visible
Boolean.
Containers Dialog

Components: Bodies

Defined under bodies: root key.

type: message
message: The text.
width: Fixed width.
type: item
item: ItemTag.
width / height: Visual size.
show tooltip / decorations: Booleans.
description: Nested message-type body.
Containers Dialog

Buttons & Actions

Common properties and action types.

labelReq
Button text.
tooltip
Hover text.
width
Button width.

Action Types (type:)

SCRIPT
Key: script:. Runs Denizen commands.
RUN_COMMAND
Key: command:. Runs a player command. Must include slash (/).
OPEN_URL
Key: url:. Opens a link.
COPY_TO_CLIPBOARD
Key: text:. Copies text.
Containers Dialog

Full Example

staff_application.dsc
st:
    type: dialog
    base:
        type: multi
        title: <yellow>Staff Application
        columns: 1
    bodies:
        header:
            type: message
            message: <gray>Please fill out the form below carefully.
    inputs:
        1:
            type: text
            label: Your Real Name
            key: applicant_name
        2:
            type: number
            label: Your Age
            start: 13
            end: 99
            initial: 18
            step: 1
            key: applicant_age
        has_experience:
            type: boolean
            label: Previous Experience?
    buttons:
        1:
            label: <green>Submit Application
            script:
            - narrate "Name: <context.applicant_name>"
            - narrate "Age: <context.applicant_age>"
            - narrate "Experience: <context.has_experience>"
        2:
            type: OPEN_URL
            label: Join Support Discord
            url: https://discord.gg/example
Preview
Events

player connection configure

Triggers when a player's connection is being configured (Paper specific).

Contexts

<context.connection>
Returns the ConnectionTag associated with the joining player.

Determinations

WAIT
Determine
Delays the configuration process for up to 1 minute. During this time, you can show Dialogs or process backend tasks. If not finished manually via connect mechanism within 1 minute, the connection will be dropped.
Objects

BiomeTag

Additions for interacting with Biomes.

Tags

<BiomeTag.sky_color>
Returns the ColorTag of the biome's sky color.
<BiomeTag.sky_light_color>
Returns the ColorTag of the biome's skylight color.

Mechanisms

sky_color
Input: ColorTag
Sets the biome's sky color permanently.
sky_light_color
Input: ColorTag
Sets the biome's skylight color permanently.
Objects

ConnectionTag

Methods and properties for interacting with client connections.

Tags

<ConnectionTag.uuid>
Returns the ElementTag containing the player profile's UUID associated with this connection.
<ConnectionTag.name>
Returns the ElementTag containing the player profile's name associated with this connection.

Mechanisms

connect
Input: None
Confirms the connection and allows the player to continue the login process.
disconnect
Input: ElementTag
Disconnects the connection with a specified reason. Supports Paper-formatted text (MiniMessage/Legacy).
show_dialog
Input: ElementTag
Shows a specific dialog to the connection using the exact name of a Dialog script container.
close_dialog
Input: None
Closes any currently open dialog for this specific connection.
Objects

PlayerTag

Additions for interacting with Players.

Mechanisms

show_dialog
Input: ElementTag
Shows a specific dialog to the online player using the exact name of a Dialog script container.
close_dialog
Input: None
Closes any currently open dialog for the online player.
Bridges BetterModel Commands

- bmmodel

bmmodel [entity:<entity>] [model:<model>] (remove)

Attaches a specific BetterModel to an entity or removes an existing one. An entity can have multiple models at once.

entity:Required
The target entity to attach or detach the model from.
model:Required
The model name (must exist in BetterModel's loaded models).
removeSwitch
If present, removes the model instead of adding it.
Usage
- bmmodel entity:<context.entity> model:dragon
- bmmodel entity:<context.entity> model:dragon remove
Bridges BetterModel Commands

- bmlimb

bmlimb [target:<player>] [model:<limb_model>] [animation:<animation>] (loop:<mode>)

Plays a specific limb animation for a player or NPC. Target must be a player-type entity.

target:Required
The player or NPC target.
model:Required
The limb model name (e.g. player_arm from BetterModel's limbs list).
animation:Required
The animation name to play on the limb.
loop:Optional
Playback mode. Valid options: PLAY_ONCE (default), LOOP, or HOLD.
Usage
- bmlimb target:<player> model:player_arm animation:wave loop:PLAY_ONCE
Bridges BetterModel Commands

- bmstate

bmstate [model:<BMModelTag>] [state:<animation>] (bones:<list>) (loop:<mode>) (speed:<#.#>) (remove)

Starts, stops, or modifies animations on a model. Optionally targets specific bones.

model:Required
The BMModelTag instance to target.
state:Required*
The animation name. Required to start. Optional when stopping all animations via remove.
bones:Optional
List of bone names to target. Omit to affect all bones.
loop:Optional
Playback mode: PLAY_ONCE (default), LOOP, or HOLD.
speed:Optional
Playback speed multiplier. Default: 1.0.
removeSwitch
Stops the animation. No state given stops all animations.
Usage
- bmstate model:<[my_model]> state:walk loop:LOOP speed:1.2
- bmstate model:<[my_model]> state:nod bones:head|waist loop:PLAY_ONCE
- bmstate model:<[my_model]> state:walk remove
Bridges BetterModel Commands

- bmpart

bmpart [model:<BMModelTag>] [bone:<bone>] [part:<limb_name>] [from:<player>]

Applies a limb texture from an online player's skin to a specific bone. Useful for player-skin-based models.

model:Required
The BMModelTag to modify.
bone:Required
The destination bone name in your model (e.g. head, chest, right_arm).
part:Required
Source limb name from the player skin. Valid names are defined in BetterModel/players templates (e.g. HEAD, TORSO).
from:Required
An online PlayerTag whose skin provides the texture source.
Usage
- bmpart model:<[my_model]> bone:head part:HEAD from:<player>
- bmpart model:<[my_model]> bone:chest part:TORSO from:<player[PlayerName]>
Bridges BetterModel Events

bm start reload

on bm start reload:

Triggers when the BetterModel plugin begins the reload process (before models and resource packs are regenerated).

Bridges BetterModel Events

bm end reload

on bm end reload:

Triggers when the BetterModel plugin finishes reloading models and generating the resource pack.

<context.result>ElementTag
Returns the reload result details: SUCCESS, FAILURE, or RELOAD.
Bridges BetterModel Objects

BMModelTag

Prefix: bmmodel@. Represents an active BetterModel tracker instance attached to an entity.

Format: bmmodel@<entity_uuid>/<model_name>

Tags

<EntityTag.model[(<name>)]>BMModelTag
Returns the BetterModel tracker with the specified name from the entity. If no name provided, gets the first active model.
<BMModelTag.name>ElementTag
Returns the name of the model tracker.
<BMModelTag.bone[<name>]>BMBoneTag
Returns a specific bone from this model by name.

Mechanisms

billboardElementTag
Globally sets the billboard mode for all bones (CENTER, VERTICAL, HORIZONTAL).
view_rangeDecimal
Globally sets the view range for all bones in the model.
glowBoolean
Globally toggles glow on the entire model.
glow_colorColorTag
Globally sets glow color for all bones.
tintColorTag
Globally sets tint color for all bones.
visibleBoolean
Globally toggles visibility of the entire model.
itemItemTag
Globally overrides the item displayed on all bones.
scaleLocationTag
Globally overrides the scale for all bones (XYZ vector).
rotationQuaternionTag
Globally sets a custom rotation modifier for all bones.
hide_fromListTag(PlayerTag)
Hides the entire model from the specified list of players.
show_toListTag(PlayerTag)
Makes the model visible again to the specified list of players.
force_updateNone
Manually forces a full synchronization update (bones, metadata, and hitboxes) for the model.
Bridges BetterModel Objects

BMBoneTag

Prefix: bmbone@. Represents a specific bone within an active model.

Format: bmbone@<entity_uuid>/<model_name>/<bone_name>

Tags

<BMBoneTag.name>ElementTag
The name of the bone.
<BMBoneTag.location>LocationTag
Current world location of the bone (entity + relative offset).
<BMBoneTag.euler>LocationTag
Returns the rotation of the bone as Euler angles.
<BMBoneTag.passengers>ListTag(EntityTag)
List of entities mounted on this bone's seat.

Mechanisms

billboardElementTag
Sets billboard mode for the bone (CENTER, VERTICAL, HORIZONTAL).
view_rangeDecimal
Sets the view range for this bone.
glowBoolean
Sets whether the bone should glow.
glow_colorColorTag
Sets the glow color for the bone.
tintColorTag
Sets the tint color for the bone.
visibleBoolean
Sets whether the bone is visible.
rotationQuaternionTag
Sets a custom rotation modifier for the bone.
mountEntityTag
Mounts an entity onto this bone (bone must have a seat configured in Blockbench).
dismountEntityTag
Dismounts a specific entity from this bone.
dismount_allNone
Dismounts all entities from this bone.
itemItemTag
Changes the item display of this bone.
scaleLocationTag
Sets the scale of the bone's item.
translationLocationTag
Sets the translation of the bone's item.
Bridges SkinsRestorer Commands

- skin

skin [<name>/<url>/<texture>] (<player>|...)

Changes the skin of the specified player(s). If no targets are specified, the player attached to the script queue will be used.

skin valueRequired
A player name, an http URL, or raw texture data in value;signature format.
targetsOptional
One or more PlayerTag objects.
Usage
- skin Notch
- skin https://minesk.in/7db... targets:<[some_player]>
- skin <player.skin_blob> targets:<server.online_players>
Bridges SkinsRestorer Events

player skin apply

on player skin apply:

Triggers when a player's skin is being applied via SkinsRestorer.

Contexts

<context.value>ElementTag
The Base64 texture value of the skin being applied.

Determinations

TEXTURE:<val>;<sig>Determine
Override with raw texture data in value;signature format.
NAME:<name>Determine
Override with a skin fetched by player name.
URL:<url>Determine
Override with a skin fetched from a URL.
Bridges SkinsRestorer Tags

PlayerTag (SkinsRestorer)

Tags injected into standard Player objects by the bridge.

<PlayerTag.skin_url>ElementTag
Returns the URL of the player's current skin texture.
<PlayerTag.skin_type>ElementTag
Returns the skin type. Possible values: CUSTOM (linked to custom value/sig), LEGACY (pre-v15 skin), PLAYER (linked to a player UUID), or URL.
Bridges DiscordSRV Tags

PlayerTag (DiscordSRV)

Tags injected into standard Player objects by the bridge.

<PlayerTag.discord_id>ElementTag
Returns the Discord snowflake ID associated with the Minecraft player's account via DiscordSRV. Returns null if the player has not linked their Discord account.