SinceDungeon Documentation
Dungeon Files
Each dungeon is a YAML file:
plugins/SinceDungeon/dungeons/<dungeon_id>.yml
The filename without .yml is the dungeon ID used by commands, leaderboards, API calls, and Premium affix
configuration.
Top-Level Structure
template-world: "ForgottenCrypt_Template"
public: true
settings: { }
conditions: { }
rewards: { }
stages: { }
Template World
template-world: "ForgottenCrypt_Template"
In Core WORLD mode, the value must match the source world folder name. SinceDungeon creates temporary instance worlds
from this template. In Premium SCHEMATIC mode, which works on Paper and Folia, the same template-world value names
the schematic file. On Folia, Core world-copy mode is not supported, so use schematic mode with a preloaded shared
world.
Public Visibility
public: true
Public dungeons appear in tab completion for player-facing commands such as /dungeon join and /dungeon top.
When public: false, normal members cannot join the dungeon, even if they manually type the dungeon ID. Admins with
SinceDungeon.admin can still see private dungeons in tab completion and can join them for testing.
Settings
settings:
max-players: 6
required-lives-to-join: 1
lives-deducted-per-death: 1
lives-deducted-on-leave: 0
lives-deducted-on-fail: 0
lives-deducted-on-clear: 0
keep-inventory-on-death: true
prevent-item-dropping: true
block-ender-pearls: true
kick-delay-after-finish: 15
force-daylight-and-clear-weather: true
save-and-restore-stats: true
death-action: "RESPAWN"
clear-mob-drops: true
randomize-stages: false
cooldown-seconds: 1800
cooldown-on-leave: true
required-item: "NONE"
consume-required-item: true
Death actions:
RESPAWN: respawn at the dungeon start or checkpoint.FAIL: fail the entire run.SPECTATE: let the player watch remaining teammates.
Life costs:
lives-deducted-per-deathis charged each time a player dies inside the run.lives-deducted-on-leaveis charged when a player leaves or disconnects before the run clears.lives-deducted-on-failis charged to participants when the dungeon ends as failed.lives-deducted-on-clearis charged to participants when the dungeon is cleared.- Set any outcome cost to
0to disable that outcome penalty. Outcome costs are separate from per-death costs. cooldown-on-leaveonly controls whether cooldowns are applied on leave/fail; it does not change life deductions.
Command hooks:
settings:
commands:
on-start:
- "lp user %player% permission set dungeon.in_game true"
on-finish:
- "lp user %player% permission unset dungeon.in_game"
on-first-finish:
- "eco give %player% 5000"
Conditions
Conditions are checked before the player enters.
conditions:
level_check:
name: "Level Requirement"
check: "%player_level%;>=;10"
msg: "<red>You must be at least Level 10 to enter this raid!"
Default condition processor:
PAPI: PlaceholderAPI expression checks.
Condition format:
<left>;<operator>;<right>
Supported numeric operators:
>=<=><==!=
Supported string operators:
==!=equalsIgnoreCase
Stages
Stages are numeric and run in order unless randomize-stages or Premium branching/jump actions alter flow.
stages:
1:
chance: 100.0
commands:
- "say Stage 1 completed by %player%"
actions:
arrival:
type: "REACH_LOCATION"
target: "10,64,10"
radius: 3.0
| Key | Meaning |
|---|---|
chance |
Chance for the stage to appear. |
commands |
Console commands after stage completion. |
actions |
Named action blocks. |
Coordinates
Most locations use:
x,y,z
Example:
target: "10,64,-5"
Lists of locations:
locations:
- "15,64,20"
- "5,64,20"
Start Location
settings:
start-location: "0,65,0"
Use NONE to keep the provider/world spawn.
For schematic dungeons, this is a local schematic coordinate. It also supports yaw and pitch:
settings:
start-location: "0,65,0,180,0"
Stage Insertion
Admins can insert a stage into an existing dungeon file and shift later stage numbers:
/sincedungeon stage insert <map_id> <position>
/sdp stage insert <map_id> <position>
Complete Example
See Example Dungeon for a compact full YAML file using conditions, rewards, stages, wave combat, loot chests, keys, doors, and a boss.