Gameplay Guide
Last updated Oct 28, 2026
Gameplay Guide
How a dungeon run flows from join to victory. Version 1.2.4.
Player how-to
/sf join <room_id>,/sf quickjoin, clickable/sf list, a join sign, or/sf menu. Spectate with/sf spectate <room_id>(or/sf join <room> spectate) without taking a fighter slot.- Wait in the lobby; use
/sf ready//sf skipwhen enabled; host may buy locked floors if any exist. - Vote on a weakness if offered (
/sf vote <number>or chat clicks). - Survive voids and optional hazard. Drop rooms clear mobs, then floors fall away. Climb with flood On is an escape race to the top (mobs hinder you but do not gate the win). Flood Off clears mobs to advance: a ladder or stair opens, everyone climbs up, the hole closes, then mobs spawn. Floor layers may be a single schematic or a weighted pack.
- On victory, collect rewards;
/sf leaveanytime exits to the room exit (or leaves the quick-join queue)./sf livesshows the shared party pool during a run. /sf statsfor personal records.
Staff how-to
- Create rooms (Room Creation Guide).
- Tune
default-room-settings,anti-cheese,victory, andquick-joininconfig.yml. - Assign
/sf setreward <room> <table>or Room Settings → Reward table when using reward tables. - Test with
/sf join//sf start(host, when auto-start is off). /sf reloadafter config edits.
Session flow
Drop (direction: down, default):
Join room → Lobby unlocks (optional) → Waiting timer → Room locks → Weakness vote → Countdown → Floor 1 → Clear mobs → Floor drops → ... → Victory
Climb Escape (direction: up, Rising Flood On):
Join room → … → Countdown → GO at entry → Segments reveal ahead → Flood rises → Race to the top → Victory
Climb Clear (direction: up, Rising Flood Off):
Join room → … → Countdown → GO + connector → Party climbs up → Hole closes → Mobs spawn → Clear → Connector → … → Victory
Climb keeps the starter as run start. At GO, fighters stay at entry (no auto-teleport onto floor 1). Rising flood On means Escape: floors paste when the party approaches; revealed floors also spawn mobs; win at the top. Off means Clear: the next floor pastes on clear (not by proximity). Room Settings → After clear chooses Stay (authored stairs/ladders in the schematics), Ladder (temporary mid-wall shaft), or Stair pack (stair paste from walk floor through the next plate). For Ladder/Stair, everyone must reach the upper floor, then the hole closes and mobs spawn. Optional retire lower floor wipes the cleared segment after that. Stay spawns when the floor is ready. Flood styles are particles, water, or lava. Optional void enclosure builds walls and a roof around open towers. The lobby is sealed while waiting; the shell expands as climb floors paste.
Joining
| Method | Command / action |
|---|---|
| Direct join | /sf join <room_id> |
| Spectate | /sf spectate <room_id> or /sf join <room_id> spectate (lobby watcher; separate from fighter max) |
| Quick join | /sf quickjoin (GUI Quick Join uses the same path; queues if all rooms are full; fighters only) |
| List rooms | /sf list (click a line to join) |
| Join sign | Place a sign matching join-signs in config.yml, then right-click |
| GUI | /sf menu → Room Browser or Quick Join |
| Leave | /sf leave teleports to the wand exit point and also leaves the quick-join queue |
| Host start | /sf start (when auto-start is off) |
On join, players teleport to the optional lobby wait spawn if set, otherwise entry (or starter center if unset). Gamemode may switch to survival if anti-cheese.force-survival is true. When a lobby point is set, only the first countdown of a run teleports fighters to entry before GO (not between floors).
Quick join queue
When every room is full or locked, /sf quickjoin places you in a FIFO queue (quick-join in config.yml). Waiting lobbies are filled first, then empty rooms. Use /sf leave to exit the queue.
Lobby unlocks
If the room has locked floors, the host can buy them in the lobby before the run. See Locked Floors. Unbought locked floors are skipped.
Waiting lobby
When auto-start-enabled is true and a player is first to join:
- Waiting timer starts (
waiting-timer-seconds, default 30). - More fighters can join until the room locks or max players is reached. Lobby spectators use
spectator-maxand do not count toward fighter max. - If
min-playersis above the current fighter count, the timer holds. - When the timer ends, or when ready/skip ends it early, the room locks. Party scaling snapshots fighter count.
Ready check and skip vote
While the waiting timer is running (and the matching options are enabled in default-room-settings):
| Command | Effect |
|---|---|
/sf ready |
Toggle ready. When every online fighter is ready and min-players is met, the wait ends early |
/sf skip |
One vote per player. When votes reach a majority of online fighters and min-players is met, the wait ends early |
Spectators cannot ready or skip. New joiners start not ready. Keys: ready-check-enabled, skip-vote-enabled (both default true).
Reconnect grace
If a player disconnects during waiting, countdown, or an in-progress run, their slot is held for anti-cheese.reconnect-grace-seconds (default 60; 0 = remove immediately). Rejoining within the window restores them (floor spawn or entry; weakness reapplied if mid-run). When grace expires or the run ends, the hold is cleared.
Weakness vote
If weaknesses.yml has enabled: true, players vote before the countdown. See Weaknesses.
You can turn voting off for one dungeon in Room Settings (Weakness voting). That room skips the vote and goes straight to countdown.
Players click chat options or run /sf vote <number>.
Countdown
Default 3 seconds (default-room-settings.countdown-seconds). Used for:
- Starter countdown before GO
- Post-clear delay (Drop: before the floor drops; Climb clear-mode: before the next floor opens)
Per-floor overrides live in Floor Editor → Countdown. Room Settings edits the room default. Debug instant-start can skip the starter countdown.
Drop at GO
Starter is removed (same floor-drop particles/sound as mid-run drops) and floor 1 pastes below. Players drop onto the first challenge floor.
Climb at GO
Starter stays. Fighters remain at entry. Floor 1 (and further segments) paste upward as reveal distance allows. If a lobby wait spawn was set, fighters are teleported to entry when the countdown finishes.
Floor loop
Drop
- Mobs spawn at configured locations.
- Mob counter shows on actionbar, chat, or bossbar.
- When all mobs die, a clear message plays.
- After the countdown delay, the current floor schematic is removed.
- Next floor pastes below. Falling hazard pauses during the drop, then resumes at the same world height if enabled (catch-up if far above).
- Repeat until all floors are cleared.
Climb
- Escape (Rising Flood On): segments paste when players approach (
climb-reveal-distance). When a floor appears, its mobs spawn too. Win by reaching the top. Flood does not pause between floors. Overhead fail usesclimb-overhead-fail-blocks. - Clear (Rising Flood Off): after a clear (and on GO for floor 1), Stay / Ladder / Stair pack opens a path. Ladder and Stair wait until the whole party is upstairs, close the hole, then spawn mobs. Clear them to open the next floor (countdown uses “opens next” copy). No proximity reveal.
- Victory at the top (escape) or after the last clear (clear mode).
Party scaling
With more players:
- More mobs spawn (
mobs.*keys) - Mobs gain extra health (vanilla and Mythic when
health.apply-to-mythicis true) - Reward tables get fractional extra rolls (weakness ×
rewards.roll-multiplier-per-player) - Optional
max-extra-playerscaps how many extras count for scaling (0= no cap)
Scaling locks when the waiting timer ends. Disable globally in config.yml, or per room via Room Settings (nether star: Inherit / On / Off) or room YAML party-scaling.enabled.
Death and failure
| Event | Result |
|---|---|
Fall below the room’s void-y-level |
That player fails out (void message). If no fighters remain, the run ends |
Mid-run death with lives left (or lives: 0) |
Spend one shared life (if finite); respawn at the current floor spawn, snapped on top of that floor |
| Mid-run death with no lives left | Spectate at the current floor spawn if others still fight; otherwise wipe immediately (solo or party) |
| No fighters left | Wipe: one chat + title; exit teleport. Not the void failure text |
Lobby (WAITING) death |
Respawn at entry; does not spend a life |
Hazard instant kill uses the same lives rules. See Falling Hazard.
| Key | Default | Effect |
|---|---|---|
anti-cheese.lives |
3 |
Shared party lives (0 = unlimited). Rooms can override in Room Settings |
anti-cheese.spectator-leash-blocks |
16 |
How far spectators may roam from the current floor |
anti-cheese.reconnect-grace-seconds |
60 |
Hold disconnect slot during wait/countdown/run (0 = remove immediately) |
anti-cheese.fall-damage-multiplier |
0.0 |
Fall damage scale in sessions |
anti-cheese.force-survival |
true |
Force survival on join; restore after |
Per-room Keep inventory / Keep experience toggles in Room Settings control what is kept on death inside that dungeon. Party lives can inherit anti-cheese.lives or set a room override (lives in room YAML / golden apple in Room Settings).
Mid-run deaths use the current floor spawn (snapped on top of that floor), never the death spot or destroyed starter entry. Spectate uses the same spawn.
Foreign death chat (vanilla, SoapsAdmin, Essentials, CMI) is suppressed. Soft hooks also skip /back death points, Essentials death-info, and CMI /dback for session deaths. See Integrations.
Commands during a run
Waiting lobby allows normal commands. From countdown through celebrating, non-admins may only use /sf (and /soapsfloor). Message: error.command-blocked. Admins with soapsfloor.admin bypass.
Victory
When the last floor is cleared:
- Status becomes celebrating; hazard stops; players get brief invulnerability.
- Victory title, sound, particles, messages, and rewards play on the last floor.
victory.reward-commandsrun from console (message:/broadcast:prefixes; placeholders include{players},{total_kills}), unless the room table setsappend-to-global: false.- Room reward table rolls if assigned via
/sf setrewardor Room Settings. Weakness × party scaling change weighted roll count only (fractional extras). Tablebroadcast:is one-shot per clear. - Optional player line from
rewards.roll-summaryshows how many weighted rolls were granted. - After
victory.teleport-delayseconds, everyone is evacuated to the room exit (fallback: entry), then floor schematics are removed so nobody drops into the shaft. - Void fail is disabled during celebrate / ended states.
See Rewards · Weaknesses.
Difficulty labels
Shown in room list and welcome message:
| Floors | Label |
|---|---|
| 1-3 | Easy |
| 4-7 | Medium |
| 8-12 | Hard |
| 13-20 | Extreme |
| 21+ | Nightmare |
Join in progress
allow-join-in-progress: false by default (set in Room Settings or room YAML). When true, late joiners teleport to the current floor center.
Anti-cheese
Inside sessions (admins exempt):
- No elytra, pearls, chorus fruit, or flight
- Blacklisted items cannot be used
- Room protection (break/place, explosions, buckets, fire, mob grief, pistons, dispensers, hangings, trampling) via
block-protectionin config.yml (unlesssoapsfloor.bypass.protection) - PvP off unless enabled on the room (Room Settings / room YAML
pvp-enabled) - Non-
/sfcommands blocked for non-admins during countdown / in-progress / celebrating (see Integrations)
Stats and leaderboards
/sf statsopens personal stats GUI- Main hub → Leaderboards shows per-room best time and kills
Leaderboard cache refreshes every 60 seconds and invalidates on game completion.
Related: Weaknesses · Rewards · Falling Hazard · Defaults hub: Config Reference
Still stuck? Ask about this page