-
Notifications
You must be signed in to change notification settings - Fork 84
Signs
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.
| 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.
/ = 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"
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 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 |
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.
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 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.
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.
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)
Wiki: © 2015-2026 Daniel Saukel and contributors, licensed under CC BY-SA (only unless otherwise stated)
- General information
- General setup and usage
- Dungeon setup
- Signs
- Game rules
- Dungeon world configuration
- Details
- Examples (WIP)
- Simple dungeon
- Bedwars TODO
- PVP arena TODO
- Mob arena TODO
- Tutorial TODO
- Data structure guide
- FAQ
- License
- API tutorial
- JavaDoc (currently defunct)
- Contributions