Skip to content
Daniel Saukel edited this page Jul 23, 2026 · 100 revisions

Dungeon signs are DungeonsXL's native method to do make things happen inside dungeons.

The principle is easy: A dungeon builder enters an edit world, puts a sign somewhere and writes a specific code on it. Whenever a player enters an instance of the dungeon, the signs turn into air and do things, such as summoning NPCs, sending messages to the player, serving as checkpoints or ending the game and sending the players back into the main world. When exactly that happens is determined by a trigger code. For example, a checkpoint may be triggered when a player is in range, a door is opened when a key item is used and so forth.


  1. Signs
  1. List of triggers
  2. Groups

Signs

By purpose

Name Purpose
ActionBar Sends an action bar message to the player.
BossShop Opens a BossShop GUI
MSG Sends a chat message to the player.
Checkpoint Creates a checkpoint where players respawn on death.
Classes Allows the selection of an item kit (for dungeons that players don't play with their own items).
End Ends the dungeon game.
Leave Allows a player to leave a dungeon without finishing it. They won't get rewards.
Lives Gives extra lives or takes them away.
Ready Dungeons aren't fully initialized until all players have triggered this sign.
ResourcePack Asks the player to download and use a specific resource pack.
SoundMSG Plays a sound.
Teleport Teleports a player within the dungeon.
Title Sends a title to the player.
Bed Like in bed wars, marks a bed that allows group members to respawn on death until it's destroyed by another group.
DungeonChest Marks a chest as one that players can open and take items from in the dungeon. This isn't necessary for signs to work, but it can also populate chests with loottables where items have specific spawn chances.
Flag A group's flag for capture the flag type games.
Hologram Spawns a hologram provided by HolographicDisplays.
Interact Creates a sign that fires an interact trigger when it's touched.
Lobby Marks the location where players initially spawn.
Note Does literally nothing. Editors can use it to remind themselves/each other of things. Like other signs, it won't be visible to players playing the dungeon.
Place Allows specific blocks to be placed where the sign is even if the dungeon's game rules normally forbid block placement.
Protection Protects a block from being broken even if the dungeon's game rules normally allow block placement.
RewardChest Marks a chest as a reward chest. Players don't get items in the dungeon from such a chest, but when it's opened, the chest contents are given to players of the group once they successfully finish the dungeon.
Script Loads its contents from a text file. Can be used when not enough symbols fit on the sign or when multiple signs should be at the same block location.
Start Marks the location where players are teleported after everyone has triggered the ready sign.
Block The sign turns into a block when triggered.
Door If attached to a door, the door can be opened through a DXL trigger.
Trigger Creates a sign trigger.
Command Executes commands. Basically a command block except it's triggered by a DXL trigger.
Drop Spawns an item drop at the sign's location once or regularly.
Mob Spawns an entity.
Redstone Turns into a redstone block.

Instead of turning into air if no trigger is specified, some signs like ready, end, BossShop signs auto-generate an interact trigger on their location.

Syntax and groups

/ = or

() = Optional

{} = Nonterminal

{}* = Nonterminal may occur multiple times with "," as a separator, e.g. "{Item ID}*" -> "IRON_SWORD,APPLE,STICK"

everything else = Terminal

Group Name 2nd line syntax 3rd line syntax
Button ActionBar {MSG ID} N/A
Button BossShop {Shop name} N/A
Button MSG {MSG ID} N/A
Button Checkpoint N/A N/A
Button Classes {Class name} N/A
Button End {Floor in the dungeon} N/A
Button Leave N/A N/A
Button Lives {Modifier} GAME/GROUP/PLAYER
Button Ready N/A {Seconds to auto start}
Button ResourcePack {ResourcePack ID}/reset N/A
Button SoundMSG {Vanilla sound name}/{Sound enum value} {Category},{volume},{pitch}
Button Teleport {x coordinate},{y},{z} {compass direction[1]}
Button Title {MSG ID for the title}(,{subtitle}) N/A
Passive Bed {Team ID} N/A
Passive DungeonChest N/A ({Loottable name})
Passive Flag {Team ID} N/A
Passive Hologram {MSG ID} {Height}
Passive Interact {ID of fired I trigger} Line 3&4 contain the text that will be showed on line 2&3 of the clickable sign.
Passive Lobby N/A N/A
Passive Note N/A N/A
Passive Place {Block ID} ({Rotation}*,{fired sign triggers}*)
Passive Protection N/A N/A
Passive RewardChest ({Money reward, level reward}) ({Loottable name})
Passive Script {Script name} N/A
Passive Start ({Team ID}) N/A
Rocker Block {Block ID} {Block ID}
Rocker Door N/A N/A
Rocker Trigger {ID of fired T trigger} N/A
Windup Command {Command script ID} {Delay in sec.},OP/CONSOLE/DEFAULT
Windup Drop {Item ID} {Stack size}(,{Drop rate})
Windup Mob {Mob ID = fired M trigger} {Delay in sec.},{Amount}(,{external mob plugin tag})
Windup Redstone {Delay in decisec.} ({Repeats}/0)

[1]: E.g. "N", "NE", "NNE", "E", "ENE"

How to copy a sign

You can copy a sign and its configuration by right-clicking it with a stick. To paste it, you just have to right click an empty sign with the stick.

Triggers

Triggers are entered in the last line and determine when a sign's action is fired.

Symbol Name Usage Trigger condition Annotation
D Distance D{distance in blocks} One time when one player is in distance Use e.g. for mob signs
F Fortune F{chance} On initialization by chance ".75" = 75%
I Interact I{ID} The interaction block is clicked
M Mob M{spawn ID} A mob with the spawn ID has been killed Mob needs to be spawned through a mob sign. Spawn ID is whatever was used there.
P Presence P{distance in blocks} Every time for each player in distance Use e.g. for checkpoints
R Redstone R Block is powered For wall signs, the block to power is the block the sign is attached to
T Sign T{ID} Generic ID trigger See trigger sign
U Use item U{item ID} Click with item in hand

Groups

API note: Each group is represented by an abstract class in the de.erethon.dungeonsxl.api.sign package. The method DungeonSign#trigger(Player) is defined for every group, but may refer to different actions depending on the sign.

Button

A sign that performs a specific action every time it is triggered. For example, a classes sign with the default interact trigger sets your class every time you punch it.

Operations:

public void trigger(Player) - =push(Player)
public void push() - When the button is pushed.
public void push(Player) - When the button is pushed (player-sensitive).

Passive

Passive signs don't do anything on their own. Their function is mostly to mark locations or blocks, like lobby or bed signs.

As the name says, passive signs don't have any operations.

public void trigger(Player) - Overridden with an empty method.

Rocker

A sign that has a deactivated and an activated state and can switch between these two is called a rocker. For example, if a door sign is activated, the door opens - if it is deactivated, the door closes. The state may be set for the whole game world or for the player who triggered the sign depending on the context.

Operations:

public void trigger(Player) - Activates the sign if it is not yet activated;
                              deactivates it if it is already activated.
public void activate() - Activates the sign for the game world.
public boolean activate(Player) - Activates the sign for the player.
                                  Returns true if successful.
public boolean deactivate() - Deactivates the sign for the game world.
public boolean deactivate(Player) - Deactivates the sign for the player.
                                    Returns true if successful.
public boolean isActive() - Returns if the sign is activated for the game world.
public boolean isActive(Player player) - Returns if the sign is activated
                                         for the player.

Windup

A windup sign is a sign with an attached task that does actions in a set interval n times, like a mob sign that spawns n mobs. It is similar to a rocker as it expires (=is deactivated).

Additional operations:

public double getIntervalSeconds() - Returns the interval time in seconds
public long getIntervalTicks() - Returns the interval time in ticks (20/s)

Clone this wiki locally