Default config.yml

Last updated Oct 28, 2026

Default config.yml

Shipped defaults from SoapsFloor 1.2.4. After first run, this file lives under plugins/SoapsFloor/.

Updating the jar does not overwrite your live copy. Use this page to compare or reset.

See also: Config Reference · Configuration

# ################################################
#                                                #
#        SoapsFloor - Configuration               #
#                                                #
#   Created by AlternativeSoap                   #
#   Website: www.SoapsUniverse.com               #
#   Support: https://discord.gg/mawAzwFq         #
#                                                #
# ################################################
#
# Dungeon floor-drop plugin for Paper 26.1+ (26.1 / 26.2 / 26.3)
# Messages: messages.yml  |  GUI layouts: gui.yml

# ──────────────────────────────────────────────────────────────
#  General
# ──────────────────────────────────────────────────────────────

# Inventory-based menus (all features still work via commands / chat when disabled)
gui:
  enabled: true


# ──────────────────────────────────────────────────────────────
#  Room Defaults
# ──────────────────────────────────────────────────────────────
# Applied when creating new rooms. Each room can override these.

default-room-settings:
  max-floors-per-room: 50
  void-y-level: -64               # Y-level that counts as void (instant fail)

  # Vertical mode: down = classic drop tower; up = climb + rising flood
  direction: down                 # down | up
  climb-reveal-distance: 8        # Blocks below next climb segment before it pastes
  climb-overhead-fail-blocks: 2   # Fail if flood is this many blocks above eye height
  climb-mob-fall-damage: false    # Climb rooms: floor mobs take fall damage (default off)
  # Clear mode only (Rising Flood Off): path after a floor clears
  climb-after-clear: ladder       # stay | ladder | stair-pack
  climb-connector-pack: ""        # Pack id when climb-after-clear is stair-pack
  climb-retire-lower-floor: true  # Wipe the cleared floor once the party is upstairs
  climb-ladder-support: STONE     # Solid block behind clear-mode climb ladders

  # Void enclosure: black shell outside the paste footprint (air only; wiped on session end)
  enclosure:
    enabled: false
    material: BLACK_CONCRETE
    walls: true
    roof: true
    padding: 0                    # Extra blocks outside play AABB before shell faces

  # Floor spacing (blocks)
  starter-to-floor-gap: 5         # Gap between starter room and first floor
  floor-to-floor-gap: 3           # Gap between consecutive floors

  # Countdown (starter run-start AND delay before a cleared floor drops)
  countdown-seconds: 3
  countdown-sound: BLOCK_NOTE_BLOCK_PLING
  countdown-sound-volume: 1.0
  countdown-sound-pitch: 1.0      # Pitch increases per tick automatically
  countdown-final-sound: ENTITY_ENDER_DRAGON_GROWL
  countdown-final-volume: 1.0
  countdown-final-pitch: 1.2

  auto-start-enabled: true        # Auto-start when a player enters the starter room
  pvp-enabled: false              # Default for new rooms (toggle per room in Room Settings)
  keep-inventory-on-death: false  # Keep items on death inside this room
  keep-experience-on-death: false # Keep XP/levels on death inside this room
  weakness-voting-enabled: true   # New rooms run weakness voting before countdown (toggle in Room Settings)

  # Waiting timer (before countdown begins)
  waiting-timer-enabled: true
  waiting-timer-seconds: 30       # Time to wait for more players before locking
  ready-check-enabled: true       # /sf ready: all fighters ready ends the wait early
  skip-vote-enabled: true         # /sf skip: majority vote ends the wait early
  spectator-max: 4                # Lobby spectators via /sf spectate (0 = unlimited)

  # Player limits
  min-players: 1                  # Minimum to auto-start (0 = disabled, solo-friendly)
  max-players: 4                  # Max fighters per session (0 = unlimited; spectators use spectator-max)
  allow-join-in-progress: false   # Allow joining an active session


# ──────────────────────────────────────────────────────────────
#  Quick Join & Queue
# ──────────────────────────────────────────────────────────────
# /sf quickjoin (and GUI Quick Join) picks a joinable room.
# Prefer open waiting lobbies, then empty rooms, then in-progress (if allowed).
# When every room is full/locked, players enter a FIFO queue until a slot opens.

quick-join:
  enabled: true
  queue-enabled: true
  queue-timeout-seconds: 300      # 0 = no timeout


# ──────────────────────────────────────────────────────────────
#  Join Signs
# ──────────────────────────────────────────────────────────────
# Place a sign matching the pattern below to create a clickable join sign.
# Default layout:
#   line 1: (empty)
#   line 2: [SF]
#   line 3: <room name>
#   line 4: (empty)
# Use {room} for the room-id line. Other lines must match exactly (case-insensitive).
# Blank pattern lines must be left empty on the sign.

join-signs:
  enabled: true
  lines:
    - ""
    - "[SF]"
    - "{room}"
    - ""
  # Applied after a valid join sign is created (MiniMessage). Use {room}.
  formatted-lines:
    - ""
    - "<gradient:#f59e0b:#fbbf24><bold>[SF]</bold></gradient>"
    - "<#fbbf24>{room}"
    - "<#6b7280>Click to join"


# ──────────────────────────────────────────────────────────────
#  Party Scaling (multiplayer difficulty)
# ──────────────────────────────────────────────────────────────
# More players = harder dungeon. Locked when the waiting timer ends.
# Per-room on/off: Room Settings (wand hotbar) or room YAML party-scaling.enabled

party-scaling:
  enabled: true
  base-players: 1                 # Scaling starts above this count
  lock-at-room-lock: true         # Snapshot player count when room locks
  max-extra-players: 0            # Cap extras used for scaling (0 = no cap)

  mobs:
    extra-min-per-player: 0
    extra-max-per-player: 1         # +1 max mob per extra player
    count-multiplier-per-player: 0.15

  health:
    multiplier-per-player: 0.20     # 4 players @ base 1 = +60% HP
    apply-to-vanilla: true
    apply-to-mythic: true           # Same HP multiplier on MythicMobs
    mythic-level-per-player: 1

  rewards:
    roll-multiplier-per-player: 0.10  # Stacks with weakness multiplier


# ──────────────────────────────────────────────────────────────
#  Mob Spawning
# ──────────────────────────────────────────────────────────────

mob-spawning:
  default-min-mobs: 3
  default-max-mobs: 8
  default-mob-type: vanilla:husk     # Format: vanilla:<type> or mythicmobs:<id>
  default-spread-radius: 3            # Min blocks between spawns
  spawn-delay-ticks: 0                # Ticks between each mob spawn (0 = all at once)

  # How to show remaining mob count: "actionbar", "chat", or "bossbar"
  mob-counter-display: actionbar

  # On spawn: target nearest fighter, bump follow range, keep AI aware (Paper).
  # Makes dungeon mobs engage faster instead of idling first.
  instant-aggro:
    enabled: true
    follow-range: 48                  # 0 = do not change follow range
    # false = leave MythicMobs targeting to Mythic config (ThreatTable / AlwaysAggressive / etc.)
    apply-to-mythicmobs: true


# ──────────────────────────────────────────────────────────────
#  Block Protection
# ──────────────────────────────────────────────────────────────
# Built-in protection so rooms stay intact without WorldGuard.
# Turn the master switch or individual flags off if another plugin
# already protects the area. soapsfloor.bypass.protection is exempt.

block-protection:
  enabled: true
  prevent-block-break: true
  prevent-block-place: true
  prevent-explosions: true          # TNT / creeper / bed / etc. block damage
  prevent-bucket-use: true          # Empty / fill buckets
  prevent-fire: true                # Ignite, burn, and snuff leftover fire on session end
  prevent-mob-grief: true           # Endermen, ravagers, and other EntityChangeBlock
  prevent-trampling: true           # Farmland / crop trampling
  prevent-pistons: true             # Pistons pushing or pulling room blocks
  prevent-dispensers: true          # Dispense water / lava / flint & steel / TNT into rooms
  prevent-hanging-break: true       # Item frames, paintings, armor stands
  protect-from-outsiders: true      # Block edits by players not in that room's session
  protect-inactive-rooms: false     # Also protect room bounds when no session is running


# ──────────────────────────────────────────────────────────────
#  Anti-Cheese
# ──────────────────────────────────────────────────────────────
# Prevents players from circumventing room progression.
# Admins with soapsfloor.admin are exempt from all restrictions.

anti-cheese:
  disable-elytra: true
  block-ender-pearls: true
  block-chorus-fruit: true          # Block Chorus Fruit random teleportation
  block-flying: true
  fall-damage-multiplier: 0.0       # 0.0 = no fall damage, 1.0 = normal
  remove-invisibility-on-join: true  # Strip invisibility effect when entering a room

  # Force survival mode when entering a room
  # When enabled, remembers the player's gamemode before joining and
  # restores it after the game ends (victory, leave, wipe, quit).
  force-survival: true

  # Shared party lives for the run (mid-run deaths only; lobby deaths do not spend).
  # 0 = unlimited respawns on the current floor.
  # >0 = shared pool for the whole party. Each death spends 1 while any remain,
  # then that player spectates. When nobody is left fighting, the run ends.
  # Rooms can override this in Room Settings / room YAML.
  lives: 3

  # How far spectators may roam from the current floor bounds (blocks).
  spectator-leash-blocks: 16

  # Keep a disconnected player in the session this many seconds (0 = remove immediately).
  reconnect-grace-seconds: 60

  # Blacklisted items: materials that cannot be used inside dungeon rooms.
  # Players will be unable to interact with these items while in a session.
  # Use Bukkit Material names: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html
  blacklisted-items:
    - ENDER_EYE
    # - TNT
    # - FIRE_CHARGE


# ──────────────────────────────────────────────────────────────
#  Effects
# ──────────────────────────────────────────────────────────────

# Victory
victory:
  teleport-to-exit: true           # After victory delay, move winners to the room exit (always evacuate before floor cleanup)
  teleport-delay: 3                # Seconds to celebrate on the last floor before evacuate (0 = instant)

  # Title display (shown on screen)
  title-enabled: true
  title: "<gradient:#f59e0b:#fbbf24>Dungeon Cleared</gradient>"
  subtitle: "<#9ca3af>{room} <#6b7280>·</#6b7280> <gradient:#10b981:#34d399>{time}</gradient>"
  title-fade-in: 10               # Ticks (10 = 0.5 seconds)
  title-stay: 70                   # Ticks (70 = 3.5 seconds)
  title-fade-out: 20               # Ticks (20 = 1.0 seconds)

  # Victory sound
  sound: entity.player.levelup      # Accepts Minecraft namespaced keys or Bukkit enum names
  sound-volume: 1.0
  sound-pitch: 1.0

  # Particle effect
  victory-particle: FIREWORK       # FIREWORK, TOTEM_OF_UNDYING, EXPLOSION, DRAGON_BREATH
  victory-particle-count: 100

  # Reward commands (run from console for each active player, unless noted)
  # Placeholders: {player}, {players}, {room}, {time}, {kills}, {total_kills}, {floors}
  # Special prefixes:
  #   broadcast:<text>  server-wide broadcast (once per clear). Use & legacy colors.
  #   message:<text>    private message to that player. Use & legacy colors.
  reward-commands:
    - "broadcast:&8[&6SoapsFloor&8] &e{players} &7cleared &6{room} &7· &a{time} &7· &6{floors} &7floors · &c{total_kills} &7kills"
    # - "xp add {player} 50 points"
    # - "sa economy give {player} 100"
    # - "sq sigils give {player} 2"
    # - "give {player} diamond 1"

# Floor drop
floor-drop:
  particle-effect: EXPLOSION     # EXPLOSION, CLOUD, LARGE_SMOKE, CAMPFIRE_COSY_SMOKE
  particle-count: 50
  sound-effect: entity.generic.explode    # Accepts Minecraft namespaced keys or Bukkit enum names
  sound-volume: 1.0
  sound-pitch: 0.8


# ──────────────────────────────────────────────────────────────
#  Editor Mode
# ──────────────────────────────────────────────────────────────
# Wand-based room editor for admins.

editor-mode:
  # Structure previews
  enable-previews: true
  enable-glow-outline: false     # Scoreboard glow on thousands of displays is slow; brightness tint is enough
  preview-view-range: 1.0        # Chunk render distance (1.0 = normal)

  # Particle borders around previews
  show-particle-borders: false
  particle-type: END_ROD
  particle-interval: 10          # Ticks between updates

  # Standalone schematic browser preview (/sf schematics)
  # Targeting stays eye + look direction × distance (block-snapped, centered).
  schematic-preview-max-blocks: 5000     # Cap ghost blocks sent to client (prevents crashes)
  schematic-preview-blocks-per-tick: 150 # Spawn rate while preview loads (enter editor / floors)
  schematic-preview-teleport-per-tick: 400  # Floor ghost moves on direction/gap change (batched)
  schematic-preview-remove-per-tick: 400 # Batched destroy on leave / finish
  schematic-preview-glow: false          # Scoreboard glow on thousands of displays crashes clients
  schematic-preview-particles: true      # Particle AABB around standalone paste preview
  schematic-preview-skip-decorative: false  # Skip leaves/carpets/foliage in ghosts (paste still full)
  schematic-preview-min-distance: 3
  schematic-preview-max-distance: 50
  schematic-preview-default-distance: 10
  schematic-preview-update-ticks: 4      # How often the ghost follows look direction
  schematic-preview-editor-max-blocks: 5000  # Cap for editor floor ghosts (same crash protection)
  schematic-preview-floor-tint: true     # Per-floor brightness tint colors in editor previews

  # Wand selection preview
  wand-selection:
    show-particles: true           # Show particle outline when selecting pos1/pos2
    max-selection-volume: 100000   # Max total blocks in selection (W×H×L)
    max-selection-dimension: 200   # Max blocks per axis (width, height, or length)

  # Player state
  restore-location: true         # Restore location on editor exit
  restore-gamemode: true         # Restore gamemode on editor exit

  # Protection
  prevent-block-break: true
  prevent-block-place: true

  # Action bar hints
  show-actionbar-hints: true
  actionbar-interval: 60         # Ticks (60 = 3 seconds)

# Schematic packs (weighted floor pools)
schematic-packs:
  min-entries: 2
  default-weight: 10


# ──────────────────────────────────────────────────────────────
#  Admin Visualization
# ──────────────────────────────────────────────────────────────
# Particle markers shown to admins for room elements.

visualization:
  enabled: true
  show-bounds: true              # Floor bounds wireframe
  show-spawns: true              # Entry/exit spawn points


# ──────────────────────────────────────────────────────────────
#  Schematic Settings
# ──────────────────────────────────────────────────────────────

schematic-settings:
  floor-removal-inset: 1         # Blocks from edge kept on floor drop; also keeps mob spawns off walls
  spawn-height-offset: 1.0       # Blocks above the solid surface under the mob's feet


# ──────────────────────────────────────────────────────────────
#  Integrations
# ──────────────────────────────────────────────────────────────

integrations:
  soaps-hunger-stamina:
    # When SoapsHungerStamina is installed, turn stamina off for fighters
    # during a run (fight enter → leave). Uses SHS runtime API.
    disable-stamina-in-game: true


# ──────────────────────────────────────────────────────────────
#  Debug Mode
# ──────────────────────────────────────────────────────────────
# Fast testing features for development. Not for production use.

debug-mode:
  enabled: false
  instant-start: true            # Skip countdown
  instant-floor-drop: true       # No delay between floors
  instant-mob-spawn: true        # No spawn delay
  verbose-logging: false          # Extra console output

Still stuck? Ask about this page