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

  1. /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.
  2. Wait in the lobby; use /sf ready / /sf skip when enabled; host may buy locked floors if any exist.
  3. Vote on a weakness if offered (/sf vote <number> or chat clicks).
  4. 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.
  5. On victory, collect rewards; /sf leave anytime exits to the room exit (or leaves the quick-join queue). /sf lives shows the shared party pool during a run.
  6. /sf stats for personal records.

Staff how-to

  1. Create rooms (Room Creation Guide).
  2. Tune default-room-settings, anti-cheese, victory, and quick-join in config.yml.
  3. Assign /sf setreward <room> <table> or Room Settings → Reward table when using reward tables.
  4. Test with /sf join / /sf start (host, when auto-start is off).
  5. /sf reload after 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:

  1. Waiting timer starts (waiting-timer-seconds, default 30).
  2. More fighters can join until the room locks or max players is reached. Lobby spectators use spectator-max and do not count toward fighter max.
  3. If min-players is above the current fighter count, the timer holds.
  4. 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:

  1. Starter countdown before GO
  2. 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

  1. Mobs spawn at configured locations.
  2. Mob counter shows on actionbar, chat, or bossbar.
  3. When all mobs die, a clear message plays.
  4. After the countdown delay, the current floor schematic is removed.
  5. Next floor pastes below. Falling hazard pauses during the drop, then resumes at the same world height if enabled (catch-up if far above).
  6. Repeat until all floors are cleared.

Climb

  1. 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 uses climb-overhead-fail-blocks.
  2. 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.
  3. 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-mythic is true)
  • Reward tables get fractional extra rolls (weakness × rewards.roll-multiplier-per-player)
  • Optional max-extra-players caps 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:

  1. Status becomes celebrating; hazard stops; players get brief invulnerability.
  2. Victory title, sound, particles, messages, and rewards play on the last floor.
  3. victory.reward-commands run from console (message: / broadcast: prefixes; placeholders include {players}, {total_kills}), unless the room table sets append-to-global: false.
  4. Room reward table rolls if assigned via /sf setreward or Room Settings. Weakness × party scaling change weighted roll count only (fractional extras). Table broadcast: is one-shot per clear.
  5. Optional player line from rewards.roll-summary shows how many weighted rolls were granted.
  6. After victory.teleport-delay seconds, everyone is evacuated to the room exit (fallback: entry), then floor schematics are removed so nobody drops into the shaft.
  7. 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-protection in config.yml (unless soapsfloor.bypass.protection)
  • PvP off unless enabled on the room (Room Settings / room YAML pvp-enabled)
  • Non-/sf commands blocked for non-admins during countdown / in-progress / celebrating (see Integrations)

Stats and leaderboards

  • /sf stats opens 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