Default Config Files

Last updated Jul 6, 2026

Default Config Files

Shipped defaults from SoapsFloor 1.0.5. After first run, copies live in plugins/SoapsFloor/.

config.yml

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

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

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

# Players keep their inventory and XP on death inside rooms
dont-drop-inventory: false


# ──────────────────────────────────────────────────────────────
#  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)

  # 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 (starts in the starter room)
  countdown-seconds: 10
  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

  # Floor progression
  floor-drop-delay: 3             # Seconds before floor drops after mobs cleared
  auto-start-enabled: true        # Auto-start when a player enters the starter room

  # Waiting timer (before countdown begins)
  waiting-timer-enabled: true
  waiting-timer-seconds: 30       # Time to wait for more players before locking

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


# ──────────────────────────────────────────────────────────────
#  Party Scaling (multiplayer difficulty)
# ──────────────────────────────────────────────────────────────
# More players = harder dungeon. Locked when the waiting timer ends.

party-scaling:
  enabled: true
  base-players: 1                 # Scaling starts above this count
  lock-at-room-lock: true           # Snapshot player count when room locks

  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
    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:ZOMBIE    # Format: VANILLA:<type> or MYTHIC:<id>
  default-spread-radius: 3            # Min blocks between spawns
  spawn-delay-ticks: 0                # Ticks between each mob spawn (0 = all at once)
                                      # Example: 10 = 0.5s delay between each mob

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


# ──────────────────────────────────────────────────────────────
#  Block Protection
# ──────────────────────────────────────────────────────────────
# Built-in block protection for dungeon rooms.
# Prevents players from breaking, placing, or interacting with blocks.
# Admins with soapsfloor.bypass.protection are exempt.

block-protection:
  enabled: true
  prevent-block-break: true
  prevent-block-place: true
  prevent-explosions: true          # Block TNT/creeper/etc. damage inside rooms
  prevent-bucket-use: true          # Block bucket placement inside rooms


# ──────────────────────────────────────────────────────────────
#  PvP Settings
# ──────────────────────────────────────────────────────────────

pvp-enabled: false                  # Allow player-vs-player damage inside dungeons


# ──────────────────────────────────────────────────────────────
#  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, death-kick, quit).
  force-survival: true

  # What happens when a player dies
  # "kick" = removed from room | "spectate" = spectator mode | "respawn" = respawn on current floor
  death-behavior: respawn

  # Blacklisted items — items 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


# ──────────────────────────────────────────────────────────────
#  Falling Hazard
# ──────────────────────────────────────────────────────────────
# A descending plane of particles that damages/kills players.
# Players above the plane are instakilled; players inside take damage;
# players below are safe. Resets on each new floor.

falling-hazard:
  enabled: false

  # Movement
  speed: 1.0                      # Blocks per fall-interval
  fall-interval: 100              # Ticks between drops (100 = every 5 sec)

  # Damage
  damage: 2.0                    # Half-hearts per render tick (inside the slice)
  slice-height: 1.0              # Thickness of the damage zone in blocks

  # Rendering
  render-interval: 4             # Ticks between particle refreshes (4 = 5 fps)
  particle-density: 30           # Grid points across the floor (total ≈ density²)
  particles-per-point: 5         # Particles spawned at each grid point
  spread-horizontal: 0.8         # Horizontal spread per point (blocks)
  spread-vertical: 0.3           # Vertical spread per point (blocks)

  # Particle appearance
  # Simple types (no extra config): FLAME, SOUL_FIRE_FLAME, END_ROD, SMOKE, CLOUD
  # Color types (use 'color' + 'particle-size'): DUST, DUST_COLOR_TRANSITION, ENTITY_EFFECT
  particle: DUST
  color: "#FF3300"               # Hex color for DUST / color-based particles
  particle-size: 1.5             # Size multiplier (DUST only, 1.0 = normal)


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

# Victory
victory:
  teleport-to-spawn: true
  teleport-delay: 3                # Seconds to wait after victory before teleporting players out (0 = instant)

  # Title display (shown on screen)
  title-enabled: true
  title: "<gold><bold>DUNGEON CLEARED!</bold></gold>"
  subtitle: "<gray>Completed in <white>{time}</white></gray>"
  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)
  # Placeholders: {player}, {room}, {time}, {kills}, {floors}
  reward-commands:
    - "say {player} completed {room} in {time}!"
    # - "eco give {player} 500"
    # - "crate givekey {player} dungeon_key 1"
    # - "xp add {player} 100 points"
    # - "give {player} diamond 3"

# 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: true
  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 wand schematics)
  schematic-preview-max-blocks: 5000     # Cap ghost blocks sent to client (prevents crashes)
  schematic-preview-blocks-per-tick: 30  # Spawn rate while preview loads
  schematic-preview-glow: false          # Scoreboard glow on thousands of displays crashes clients

  # 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)


# ──────────────────────────────────────────────────────────────
#  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 intact on floor drop
  spawn-height-offset: 2.0       # Blocks above floor surface to spawn mobs


# ──────────────────────────────────────────────────────────────
#  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

messages.yml

# ################################################
#                                                #
#     SoapsFloor - Messages                       #
#                                                #
#   Created by AlternativeSoap                   #
#   Website: www.SoapsUniverse.com               #
#   Support: https://discord.gg/mawAzwFq         #
#                                                #
# ################################################
#
# Format: MiniMessage (https://docs.advntr.dev/minimessage)
# Placeholders: {key} — auto-replaced at runtime

# ─── Plugin Prefix ───────────────────────────────────────────────
prefix: "<gradient:#1a1a1a:#3b3b3b>[</gradient><gradient:#f59e0b:#fbbf24>SoapsFloor</gradient><gradient:#3b3b3b:#1a1a1a>]</gradient> "

# ═════════════════════════════════════════════════════════════════
#  WAND — Room creation & editing tool
# ═════════════════════════════════════════════════════════════════
wand:

  # Wand Item ─────────────────────────────────────────
  received: "<gradient:#10b981:#34d399>✓ You received the Room Setup Wand!</gradient>"

  # Position Selection ────────────────────────────────
  pos1-set: "<gradient:#10b981:#34d399>Position 1</gradient> <#9ca3af>set at <gradient:#f59e0b:#fbbf24>{x}, {y}, {z}</gradient>"
  pos2-set: "<gradient:#10b981:#34d399>Position 2</gradient> <#9ca3af>set at <gradient:#f59e0b:#fbbf24>{x}, {y}, {z}</gradient>"
  pos2-hint: "<#9ca3af>Now left-click to set position 2"
  pos-step-invalid: "<gradient:#ef4444:#dc2626>✘ You cannot set positions at this step!</gradient>"
  pos1-required: "<gradient:#ef4444:#dc2626>✘ You must set position 1 first!</gradient>"
  set-entry-point: "<gradient:#10b981:#34d399>✓ Entry point set!</gradient> <#9ca3af>Now right-click to set the <gradient:#ef4444:#dc2626>exit point</gradient>"
  set-exit-point: "<gradient:#10b981:#34d399>✓ Exit point set!</gradient> <#9ca3af>Starter room defined. Add floors via chat."
  set-exit-point-gui: "<gradient:#10b981:#34d399>✓ Exit point set!</gradient> <#9ca3af>Starter room defined. Use the schematic browser to add floors."

  # Schematics & Floors ──────────────────────────────
  schematic-not-found: "<gradient:#ef4444:#dc2626>✘ Schematic '<#fbbf24>{schematic}</#fbbf24>' not found!</gradient> <#9ca3af>Check schematics folder"
  floor-created: "<gradient:#10b981:#34d399>✓ Floor {floor} created successfully!</gradient>"
  floor-applied: "<gradient:#10b981:#34d399>✓ Floor {floor} updated with schematic '<#fbbf24>{schematic}</#fbbf24>'</gradient>"
  floor-removed: "<gradient:#10b981:#34d399>✓ Floor {floor} removed</gradient>"

  # Session Management ───────────────────────────────
  session-complete: "<gradient:#10b981:#34d399>✓ Room '<gradient:#f59e0b:#fbbf24>{room}</gradient>' created and saved!</gradient>"
  session-cancelled: "<gradient:#ef4444:#dc2626>✘ Room creation cancelled</gradient>"
  no-session: "<gradient:#ef4444:#dc2626>✘ No active wand session!</gradient> <#9ca3af>Use <gradient:#f59e0b:#fbbf24>/sf wand create <name></gradient>"
  already-in-session: "<gradient:#ef4444:#dc2626>✘ Already in wand session!</gradient> <#9ca3af>Finish current session first"
  room-exists: "<gradient:#ef4444:#dc2626>✘ Room '<#fbbf24>{room}</#fbbf24>' already exists!</gradient>"
  room-load-failed: "<gradient:#ef4444:#dc2626>✘ Failed to load room '<#fbbf24>{room}</#fbbf24>'!</gradient>"
  session-active: "<gradient:#ef4444:#dc2626>✘ You must finish or cancel your current wand session first!</gradient>"
  delete-success: "<gradient:#10b981:#34d399>✓ Successfully deleted room: <#fbbf24>{room}</gradient>"

  # Edit Info ─────────────────────────────────────────
  edit-info-header: "<gradient:#10b981:#34d399><bold>✓ EDITING EXISTING ROOM</bold></gradient>"
  edit-info-room: "<#9ca3af>You are now editing room: <gradient:#f59e0b:#fbbf24>{room}</gradient>"
  edit-info-floors: "<#9ca3af>• <gradient:#f59e0b:#fbbf24>{floors}</gradient> <#9ca3af>floor(s) configured"
  edit-info-hotbar: "<#9ca3af>• Use hotbar items to adjust settings"
  edit-info-list: "<#9ca3af>• Type '<gradient:#f59e0b:#fbbf24>list</gradient>' to see current floors"
  edit-info-done: "<#9ca3af>• Type '<gradient:#f59e0b:#fbbf24>done</gradient>' to save changes"
  edit-info-cancel: "<#9ca3af>• Use <gradient:#f59e0b:#fbbf24>/sf wand cancel</gradient> <#9ca3af>to discard changes"

  # Input Prompts ─────────────────────────────────────
  prompt-floor-input: "<gradient:#06b6d4:#3b82f6>📝 Enter floor information</gradient>\n<#9ca3af>Format: <gradient:#f59e0b:#fbbf24><schematic> <layer></gradient>\n<#6b7280>Examples: <#d1d5db>boss_arena 5</#d1d5db> or <#d1d5db>castle_hall 1-10</#d1d5db>\n<#6b7280>Type '<gradient:#10b981:#34d399>done</gradient>' to finish, '<gradient:#06b6d4:#3b82f6>list</gradient>' to see floors"
  prompt-floor-input-gui: "<gradient:#06b6d4:#3b82f6>📝 Select a schematic</gradient>\n<#9ca3af>Use the <gradient:#f59e0b:#fbbf24>schematic browser</gradient> to pick a schematic\n<#9ca3af>Then enter the <gradient:#f59e0b:#fbbf24>layer number</gradient> in chat\n<#6b7280>Type '<gradient:#10b981:#34d399>done</gradient>' to finish, '<gradient:#06b6d4:#3b82f6>list</gradient>' to see floors"
  prompt-set-positions: "<gradient:#f59e0b:#fbbf24>⚡ Select starter room area</gradient>\n<#9ca3af>Right-click: <gradient:#10b981:#34d399>Position 1</gradient>\n<#9ca3af>Left-click: <gradient:#ef4444:#dc2626>Position 2</gradient>"

  # Confirmation ──────────────────────────────────────
  confirm-overwrite: "<gradient:#f59e0b:#fbbf24>⚠ Floor {floor} already has schematic</gradient>\n<#9ca3af>Type '<gradient:#10b981:#34d399>confirm {schematic} {floor}</gradient>' to replace"
  confirmed-overwrite: "<gradient:#10b981:#34d399>✓ Confirmed! Replacing floor {floor}</gradient>"

  # Validation ────────────────────────────────────────
  validation-no-starter: "<gradient:#ef4444:#dc2626>✘ You must set the starter room positions first!</gradient>"
  validation-no-floors: "<gradient:#ef4444:#dc2626>✘ You must create at least one floor!</gradient>"
  validation-not-in-mode: "<gradient:#ef4444:#dc2626>✘ You must be in wand editor mode to use this command!</gradient>"
  validation-use-create: "<#9ca3af>Use <gradient:#f59e0b:#fbbf24>/sf wand create <room></gradient> <#9ca3af>or <gradient:#f59e0b:#fbbf24>/sf wand edit <room></gradient> <#9ca3af>first"

  # Status Output ─────────────────────────────────────
  status-divider: "<gradient:#3b3b3b:#1a1a1a>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
  status-header: "<gradient:#f59e0b:#fbbf24><bold>Wand Session Status</bold></gradient>"
  status-room-id: "<#9ca3af>Room ID: <#fbbf24>{room}"
  status-step: "<#9ca3af>Current Step: <#fbbf24>{step}"
  status-floors: "<#9ca3af>Floors Created: <#fbbf24>{count}"
  status-starter-configured: "<#9ca3af>Starter Room: <gradient:#10b981:#34d399>Configured</gradient>"
  status-starter-not-configured: "<#9ca3af>Starter Room: <#ef4444>Not configured"

  # List Output ───────────────────────────────────────
  list-divider: "<gradient:#3b3b3b:#1a1a1a>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
  list-header: "<gradient:#f59e0b:#fbbf24><bold>Floors in {room}</bold></gradient>"
  list-no-floors: "<#9ca3af>No floors created yet."
  list-floor-entry: "<#9ca3af>Floor <#fbbf24>{index}<#9ca3af>: <gradient:#10b981:#34d399>{mobs} mob spawn(s)</gradient>"

  # Floor Configuration Output ────────────────────────
  floors-divider: "<gradient:#3b3b3b:#1a1a1a>━━━━━━━━━━━━━━━━━━━━</gradient>"
  floors-header: "<gradient:#f59e0b:#fbbf24><bold>Floor Configuration - {room}</bold></gradient>"
  floors-total: "<#9ca3af>Total Floors: <#fbbf24>{count}"
  floors-no-floors: "<#ef4444>No floors created yet!"
  floors-no-floors-hint: "<#9ca3af>Enter a schematic name in chat to create the first floor."
  floors-no-floors-hint-gui: "<#9ca3af>Use the schematic browser to select a schematic for the first floor."
  floors-entry: "<#fbbf24>Floor {index}<#9ca3af>: <#d1d5db>{schematic}{marker} <#9ca3af>({spawns} spawns)"
  floors-marker-custom: " <gradient:#10b981:#34d399>(custom)</gradient>"
  floors-marker-default: " <#9ca3af>(default)"
  floors-customize-hint: "<#9ca3af>Type '<#fbbf24><schematic> <floor#><#9ca3af>' to customize"
  floors-customize-hint-gui: "<#9ca3af>Use the schematic browser or type '<#fbbf24><schematic> <floor#><#9ca3af>' to customize"
  floors-done-hint: "<#9ca3af>Type '<#fbbf24>done<#9ca3af>' when finished"

  # Wand Settings Help ───────────────────────────────
  settings-divider: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"
  settings-header: "<gradient:#f59e0b:#fbbf24><bold>Wand Editor Settings</bold></gradient>"
  settings-cmd-feedback: "<#fbbf24>/sf wand settings toggle feedback"
  settings-cmd-feedback-desc: "  <#9ca3af>Toggle between chat and actionbar messages"
  settings-cmd-actionbar: "<#fbbf24>/sf wand settings toggle actionbar"
  settings-cmd-actionbar-desc: "  <#9ca3af>Toggle actionbar hints on/off"
  settings-cmd-preview: "<#fbbf24>/sf wand settings toggle preview"
  settings-cmd-preview-desc: "  <#9ca3af>Toggle floor preview ghost blocks"

  # Setting Toggles ──────────────────────────────────
  toggle-feedback-enabled: "<gradient:#10b981:#34d399>✔ Editor feedback mode:</gradient> <#fbbf24>Chat"
  toggle-feedback-enabled-desc: "<#9ca3af>Item adjustments will now appear in chat"
  toggle-feedback-disabled: "<gradient:#10b981:#34d399>✔ Editor feedback mode:</gradient> <#fbbf24>Actionbar"
  toggle-feedback-disabled-desc: "<#9ca3af>Item adjustments will now appear in actionbar"
  toggle-actionbar-enabled: "<gradient:#10b981:#34d399>✔ Actionbar hints:</gradient> <#fbbf24>Enabled"
  toggle-actionbar-enabled-desc: "<#9ca3af>Hints will be shown in actionbar"
  toggle-actionbar-disabled: "<#ef4444>✘ Actionbar hints: <#fbbf24>Disabled"
  toggle-actionbar-disabled-desc: "<#9ca3af>Hints will no longer be shown"
  toggle-preview-enabled: "<gradient:#10b981:#34d399>✔ Floor previews:</gradient> <#fbbf24>Enabled"
  toggle-preview-enabled-desc: "<#9ca3af>Ghost blocks will be shown for floor layouts"
  toggle-preview-disabled: "<#ef4444>✘ Floor previews: <#fbbf24>Disabled"
  toggle-preview-disabled-desc: "<#9ca3af>Ghost blocks will no longer be shown"
  toggle-unknown-setting: "<gradient:#ef4444:#dc2626>✘ Unknown setting: {setting}</gradient>"

  # Wand Help ────────────────────────────────────────
  help-divider: "<gradient:#3b3b3b:#1a1a1a>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
  help-header: "<gradient:#f59e0b:#fbbf24><bold>SoapsFloor Wand Commands</bold></gradient>"
  help-create: "<#fbbf24>/sf wand create <room_id> <#9ca3af>- Start room creation"
  help-edit: "<#fbbf24>/sf wand edit <room_id> <#9ca3af>- Edit existing room"
  help-remove: "<#fbbf24>/sf wand remove <room_id> <#9ca3af>- Delete a room"
  help-status: "<#fbbf24>/sf wand status <#9ca3af>- View current session status"
  help-list: "<#fbbf24>/sf wand list <#9ca3af>- List all created rooms"
  help-floors: "<#fbbf24>/sf wand floors <#9ca3af>- Show floor configuration"
  help-settings: "<#fbbf24>/sf wand settings <#9ca3af>- View editor settings"
  help-schematics: "<#fbbf24>/sf wand schematics <#9ca3af>- Browse & paste schematics"
  help-finish: "<#fbbf24>/sf wand finish <#9ca3af>- Complete and save room"
  help-cancel: "<#fbbf24>/sf wand cancel <#9ca3af>- Cancel current session"

# ═════════════════════════════════════════════════════════════════
#  GAMEPLAY — In-dungeon messages
# ═════════════════════════════════════════════════════════════════
gameplay:

  # Protection ───────────────────────────────────────
  block-break-denied: "<gradient:#ef4444:#dc2626>✘ You cannot break blocks during a dungeon run!</gradient>"
  block-place-denied: "<gradient:#ef4444:#dc2626>✘ You cannot place blocks during a dungeon run!</gradient>"
  item-blacklisted: "<gradient:#ef4444:#dc2626>✘ That item cannot be used inside a dungeon!</gradient>"

  # Waiting & Lobby ──────────────────────────────────
  waiting-started: "<gradient:#06b6d4:#3b82f6>⏱ Waiting for players...</gradient> <#9ca3af>({remaining}s remaining)"
  waiting-player-joined: "<gradient:#10b981:#34d399>✓</gradient> <gradient:#f59e0b:#fbbf24>{player}</gradient> <#9ca3af>joined! <#6b7280>({count}/{max} players)"
  waiting-timer-tick: "<gradient:#f59e0b:#fbbf24>⏱ {remaining}s</gradient> <#9ca3af>until room locks..."
  waiting-room-locked: "<gradient:#ef4444:#dc2626>🔒 Room locked!</gradient> <#9ca3af>Starting countdown..."
  waiting-need-more-players: "<gradient:#f59e0b:#fbbf24>⏳ Waiting for players...</gradient> <#9ca3af>({current}/{min} required)"
  party-scaling-active: "<gradient:#a855f7:#c084fc>⚔ Party scaling active</gradient> <#9ca3af>({players} players — harder mobs & better loot)"
  waiting-room-full: "<gradient:#ef4444:#dc2626>✘ Room is full!</gradient> <#9ca3af>({max} players max)"
  waiting-room-locked-join: "<gradient:#ef4444:#dc2626>✘ Room is locked!</gradient> <#9ca3af>Game is starting..."

  # Countdown ─────────────────────────────────────────
  countdown-title: "<red><bold>{seconds}</bold></red>"
  countdown-subtitle: "<#9ca3af>Floor drops in..."
  countdown-actionbar: "<#fbbf24>Floor drops in <#ef4444>{seconds} <#fbbf24>seconds..."
  countdown-go-title: "<red><bold>GO!</bold></red>"
  countdown-go-subtitle: "<#9ca3af>Good luck!"

  # Floor Progression ─────────────────────────────────
  floor-starting: "<gradient:#10b981:#34d399>✓ Floor {floor} started!</gradient> <#9ca3af>Clear all mobs to proceed"
  floor-cleared: "<gradient:#10b981:#34d399>✓ Floor {floor} cleared!</gradient> <#9ca3af>Dropping to next floor..."
  floor-next: "<gradient:#f59e0b:#fbbf24>⚡ Floor {floor}</gradient> <#6b7280>•</#6b7280> <gradient:#ef4444:#dc2626>{mobs} mobs</gradient> <#9ca3af>to clear!"

  # Victory ───────────────────────────────────────────
  victory-header: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"
  victory-title: "<gradient:#f59e0b:#fbbf24>✦ CONGRATULATIONS! ✦</gradient>"
  victory-completed: "<gradient:#10b981:#34d399>You completed the dungeon!</gradient>"
  victory-time: "<#9ca3af>Time: <gradient:#f59e0b:#fbbf24>{time}</gradient>"
  victory-stats-header: "<gradient:#06b6d4:#3b82f6>━━━ STATISTICS ━━━</gradient>"
  victory-mobs-defeated: "<#9ca3af>Mobs Defeated: <gradient:#f59e0b:#fbbf24>{kills}</gradient>"
  victory-total-mobs: "<#9ca3af>Total Mobs Defeated: <gradient:#f59e0b:#fbbf24>{kills}</gradient>"
  victory-contributions: "<gradient:#f59e0b:#fbbf24>Player Contributions:</gradient>"
  victory-player-kills: "<#9ca3af>{player}: <gradient:#f59e0b:#fbbf24>{kills}</gradient> <#9ca3af>kills <#6b7280>({percentage}%)"
  victory-floors-cleared: "<#9ca3af>Floors Cleared: <gradient:#f59e0b:#fbbf24>{floors}</gradient>"
  victory-footer: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"

  # Failure ───────────────────────────────────────────
  dungeon-failed: "<gradient:#ef4444:#dc2626>✘ You fell into the void! Dungeon failed.</gradient>"
  player-died: "<gradient:#ef4444:#dc2626>☠ {player} has fallen!</gradient>"
  removed-from-dungeon: "<gradient:#ef4444:#dc2626>✘ You were removed from the dungeon.</gradient>"

  # Mob Counter ───────────────────────────────────────
  mobs-remaining-actionbar: "<#fbbf24>⚔ <#9ca3af>Mobs Remaining: <#ef4444>{remaining}"
  mobs-remaining-chat: "<#f59e0b>⚔ <#9ca3af>Mobs Remaining: <gradient:#ef4444:#dc2626>{remaining}</gradient>"
  mobs-remaining-bossbar: "<#fbbf24>⚔ <#9ca3af>Mobs Remaining: <#ef4444>{remaining}"
  mobs-cleared-actionbar: "<gradient:#10b981:#34d399>✓ Floor Cleared!</gradient>"
  mobs-cleared-chat: "<gradient:#10b981:#34d399>✓</gradient> <#9ca3af>Floor Cleared!"
  mobs-cleared-bossbar: "<gradient:#10b981:#34d399>✓ Floor Cleared!</gradient>"

# ═════════════════════════════════════════════════════════════════
#  WEAKNESS — Challenge modifier voting system
# ═════════════════════════════════════════════════════════════════
weakness:
  # Voting presentation ──────────────────────────────
  vote-header: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"
  vote-title: "      <gradient:#ef4444:#dc2626><bold>☠ CHOOSE YOUR WEAKNESS ☠</bold></gradient>"
  vote-subtitle: "<#9ca3af>Vote for a challenge modifier to earn bonus rewards!"
  vote-option: "  <click:run_command:/sf vote {index}><hover:show_text:'<#9ca3af>Click to vote for {name}'><gradient:#f59e0b:#fbbf24>[{index}]</gradient> {name} <#6b7280>— <#9ca3af>{description} <#6b7280>(x{multiplier})</hover></click>"
  vote-no-weakness: "  <click:run_command:/sf vote {index}><hover:show_text:'<#9ca3af>Click to vote for No Weakness'><gradient:#10b981:#34d399>[{index}]</gradient> <gradient:#10b981:#34d399>✓ No Weakness</gradient> <#6b7280>— <#9ca3af>Standard rewards <#6b7280>(x1.0)</hover></click>"
  vote-footer: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"
  vote-timer: "<#9ca3af>⏱ Vote ends in <gradient:#f59e0b:#fbbf24>{remaining}s</gradient>"
  vote-cast: "<gradient:#10b981:#34d399>✓</gradient> <#9ca3af>Voted for {name}!"
  vote-changed: "<gradient:#f59e0b:#fbbf24>↻</gradient> <#9ca3af>Changed vote to {name}!"
  vote-already: "<#9ca3af>You already voted for this option."
  vote-invalid: "<gradient:#ef4444:#dc2626>✘ Invalid vote option!</gradient>"
  vote-not-active: "<gradient:#ef4444:#dc2626>✘ No active vote in your room!</gradient>"

  # Vote results ─────────────────────────────────────
  result-header: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"
  result-title: "       <gradient:#ef4444:#dc2626><bold>☠ WEAKNESS SELECTED ☠</bold></gradient>"
  result-winner: "  {name} <#6b7280>— <#9ca3af>{description}"
  result-multiplier: "  <#9ca3af>Reward Multiplier: <gradient:#f59e0b:#fbbf24>x{multiplier}</gradient>"
  result-votes: "  <#6b7280>({votes} vote{plural})"
  result-no-weakness: "       <gradient:#10b981:#34d399><bold>✓ NO WEAKNESS</bold></gradient>"
  result-no-weakness-desc: "  <#9ca3af>Standard rewards, no modifiers."
  result-footer: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"

  # Active weakness display ──────────────────────────
  applied: "<gradient:#ef4444:#dc2626>☠ Weakness active:</gradient> {name} <#6b7280>(x{multiplier} rewards)"
  removed: "<gradient:#10b981:#34d399>✓ Weakness effects removed.</gradient>"

# ═════════════════════════════════════════════════════════════════
#  ROOM — Join/leave/list commands
# ═════════════════════════════════════════════════════════════════
room:
  joined: "<gradient:#10b981:#34d399>✓ Joined room '<gradient:#f59e0b:#fbbf24>{room}</gradient>'</gradient>"
  started: "<gradient:#10b981:#34d399>✓ Starting room '<gradient:#f59e0b:#fbbf24>{room}</gradient>'...</gradient>"
  left: "<gradient:#06b6d4:#3b82f6>← Left room</gradient>"
  left-session: "<gradient:#10b981:#34d399>✓ You have left the room session.</gradient>"
  not-in-session: "<gradient:#ef4444:#dc2626>✘ You are not in a room session!</gradient>"
  room-in-use: "<gradient:#ef4444:#dc2626>✘ Cannot delete room — it is currently in use!</gradient>"
  deleted: "<gradient:#10b981:#34d399>✓ Room '<gradient:#f59e0b:#fbbf24>{room}</gradient>' has been deleted!</gradient>"
  failed-to-load: "<gradient:#ef4444:#dc2626>✘ Failed to load room data!</gradient>"
  waiting-for-players: "<#9ca3af>Waiting for more players..."

  # Welcome Block ────────────────────────────────────
  welcome-header: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"
  welcome-title: "<gradient:#f59e0b:#fbbf24><bold>✦ ENTERING DUNGEON ✦</bold></gradient>"
  welcome-room: "<gradient:#f59e0b:#fbbf24><bold>► {room}</bold></gradient>"
  welcome-floors: "<#9ca3af>Challenge: <#d1d5db>{floors} floors"
  welcome-mobs: "<#9ca3af>Total Enemies: <gradient:#ef4444:#dc2626>~{mobs} mobs</gradient>"
  welcome-difficulty: "<#9ca3af>Difficulty: {difficulty}"
  welcome-luck: "<gradient:#10b981:#34d399><bold>⚔ Good luck, warrior!</bold></gradient>"
  welcome-footer: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"

  # Difficulty Labels ─────────────────────────────────
  difficulty-easy: "<gradient:#10b981:#34d399>Easy</gradient>"
  difficulty-medium: "<gradient:#f59e0b:#fbbf24>Medium</gradient>"
  difficulty-hard: "<gradient:#f59e0b:#d97706>Hard</gradient>"
  difficulty-extreme: "<gradient:#ef4444:#dc2626>Extreme</gradient>"
  difficulty-nightmare: "<gradient:#ef4444:#991b1b><bold>NIGHTMARE</bold></gradient>"

  # List ──────────────────────────────────────────────
  list-header: "<gradient:#f59e0b:#fbbf24>━━━ Available Rooms ━━━</gradient>"
  list-entry: "<#f59e0b>• <gradient:#f59e0b:#fbbf24>{room}</gradient> <#6b7280>• <#9ca3af>{floors} floors <#6b7280>• {difficulty}"
  list-empty: "<#9ca3af>No rooms available. <#6b7280>Create one with <gradient:#f59e0b:#fbbf24>/sf wand create <name></gradient>"
  list-hint: "<#9ca3af>Use <gradient:#f59e0b:#fbbf24>/sf room list</gradient> <#9ca3af>to see all rooms"
  list-footer: "<gradient:#f59e0b:#fbbf24>━━━━━━━━━━━━━━━━━━━━━</gradient>"
  list-join-hint: "<#9ca3af>Use <gradient:#f59e0b:#fbbf24>/sf room <room_id></gradient> <#9ca3af>to join!"

  # Info ──────────────────────────────────────────────
  info-header: "<gradient:#06b6d4:#3b82f6>━━━ Room Info: {room} ━━━</gradient>"
  info-floors: "<#9ca3af>Floors: <gradient:#f59e0b:#fbbf24>{floors}</gradient>"
  info-difficulty: "<#9ca3af>Difficulty: {difficulty}"
  info-max-players: "<#9ca3af>Max Players: <gradient:#f59e0b:#fbbf24>{max}</gradient>"
  info-status: "<#9ca3af>Status: {status}"
  info-footer: "<gradient:#06b6d4:#3b82f6>━━━━━━━━━━━━━━━━━━━━━━</gradient>"

  # Help ──────────────────────────────────────────────
  help-header: "<gradient:#3b3b3b:#1a1a1a>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
  help-title: "<gradient:#f59e0b:#fbbf24><bold>Room Commands</bold></gradient>"
  help-join: "<gradient:#f59e0b:#fbbf24>/sf room <room_id></gradient> <#6b7280>• <#9ca3af>Join a room"
  help-list: "<gradient:#06b6d4:#3b82f6>/sf room list</gradient> <#6b7280>• <#9ca3af>List all rooms"
  help-leave: "<gradient:#06b6d4:#3b82f6>/sf room leave</gradient> <#6b7280>• <#9ca3af>Leave current room"
  help-info: "<gradient:#06b6d4:#3b82f6>/sf room info <room_id></gradient> <#6b7280>• <#9ca3af>View room details"
  help-delete: "<gradient:#ef4444:#dc2626>/sf room delete <room_id></gradient> <#6b7280>• <#9ca3af>Delete a room"
  help-footer: "<gradient:#3b3b3b:#1a1a1a>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"

# ═════════════════════════════════════════════════════════════════
#  ERRORS — Shared error messages
# ═════════════════════════════════════════════════════════════════
error:
  only-players: "<gradient:#ef4444:#dc2626>✘ This command can only be used by players!</gradient>"
  console-only: "<gradient:#ef4444:#dc2626>✘ This command can only be used by players!</gradient> <#9ca3af>Use: /sf reload, /sf help"
  console-help: "<gradient:#f59e0b:#fbbf24>SoapsFloor Commands:</gradient> <#9ca3af>/sf reload, /sf help"
  no-permission: "<gradient:#ef4444:#dc2626>✘ No permission!</gradient>"
  invalid-usage: "<gradient:#ef4444:#dc2626>✘ Invalid usage!</gradient>\n<#9ca3af>Usage: <gradient:#f59e0b:#fbbf24>{usage}</gradient>"
  room-not-found: "<gradient:#ef4444:#dc2626>✘ Room '<#fbbf24>{room}</#fbbf24>' not found!</gradient>"
  room-not-found-hint: "<#9ca3af>Use <gradient:#f59e0b:#fbbf24>/sf room list</gradient> <#9ca3af>to see available rooms."
  already-in-room: "<gradient:#ef4444:#dc2626>✘ Already in a dungeon!</gradient>"
  already-in-session: "<gradient:#ef4444:#dc2626>✘ You are already in a room session!</gradient>"
  already-in-session-hint: "<#9ca3af>Use <gradient:#f59e0b:#fbbf24>/sf room leave</gradient> <#9ca3af>to leave your current session."
  room-full: "<gradient:#ef4444:#dc2626>✘ Room is full!</gradient> <#9ca3af>Maximum <gradient:#f59e0b:#fbbf24>{max}</gradient> players allowed"
  session-in-progress: "<gradient:#ef4444:#dc2626>✘ Session already started!</gradient> <#9ca3af>Join-in-progress is disabled"
  player-not-found: "<gradient:#ef4444:#dc2626>✘ Player not found!</gradient>"
  editor-no-floors: "<gradient:#ef4444:#dc2626>✘ Add floors before configuring!</gradient>"
  editor-select-floor: "<gradient:#f59e0b:#fbbf24>⚠ Select a floor first!</gradient> <#9ca3af>Use the floor selector"
  editor-preview-disabled: "<gradient:#f59e0b:#fbbf24>⚠ Enable previews to adjust gaps!</gradient>"
  unknown-setting: "<gradient:#ef4444:#dc2626>✘ Unknown setting: <#fbbf24>{setting}</gradient>"
  delete-usage: "<gradient:#ef4444:#dc2626>✘ Usage:</gradient> <gradient:#f59e0b:#fbbf24>/sf room delete <room_id></gradient>"

# ═════════════════════════════════════════════════════════════════
#  EDITOR MODE — Room editor UI & feedback
# ═════════════════════════════════════════════════════════════════
editor:

  # Item Display Names ───────────────────────────────
  item-wand: "<gradient:#f59e0b:#fbbf24>⚡ Room Setup Wand</gradient>"
  item-starter-gap: "<gradient:#06b6d4:#0891b2>⬆ Starter Gap Adjuster</gradient>"
  item-floor-gap: "<gradient:#06b6d4:#0891b2>⬇ Floor Gap Adjuster</gradient>"
  item-max-players: "<gradient:#8b5cf6:#a78bfa>👥 Max Players Adjuster</gradient>"
  item-countdown: "<gradient:#f59e0b:#fbbf24>⏱ Countdown Adjuster</gradient>"
  item-info: "<gradient:#10b981:#34d399>📖 Settings Info</gradient>"
  item-floor-selector: "<gradient:#d946ef:#ec4899>🧭 Floor Selector</gradient>"
  item-mob-settings: "<gradient:#ef4444:#dc2626>☠ Mob Settings</gradient>"
  item-custom-commands: "<gradient:#3b82f6:#60a5fa>⌨ Custom Commands</gradient>"

  # Activation ────────────────────────────────────────
  activated-header: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"
  activated-title: "<gradient:#d946ef:#ec4899>✦ EDITOR MODE ACTIVATED ✦</gradient>"
  activated-room: "<#9ca3af>» <gradient:#f59e0b:#fbbf24>{room}</gradient>"
  activated-steps-header: "<gradient:#06b6d4:#3b82f6>━━━ Creation Steps ━━━</gradient>"
  activated-step-1: "<#f59e0b>1.</#f59e0b> <#d1d5db>Select starter room area <#6b7280>(Right/Left-click with wand)"
  activated-step-2: "<#f59e0b>2.</#f59e0b> <#d1d5db>Set entry & exit spawn points <#6b7280>(Right-click blocks)"
  activated-step-3: "<#f59e0b>3.</#f59e0b> <#d1d5db>Add floor schematics <#6b7280>(Type in chat: <#d1d5db><schematic> <layer></#d1d5db><#6b7280>)"
  activated-step-3-gui: "<#f59e0b>3.</#f59e0b> <#d1d5db>Add floor schematics <#6b7280>(Shift + Right-Click the <#d1d5db>wand</#d1d5db><#6b7280>)"
  activated-step-4: "<#f59e0b>4.</#f59e0b> <#d1d5db>Configure mobs & settings <#6b7280>(Use hotbar items)"
  activated-step-5: "<#f59e0b>5.</#f59e0b> <#d1d5db>Finish and save <#6b7280>(Type <#d1d5db>'done'</#d1d5db> or <gradient:#10b981:#34d399>/sf wand finish</gradient><#6b7280>)"
  activated-help: "<#9ca3af>💡 Need help? Check the <gradient:#d946ef:#ec4899>guide book</gradient> <#9ca3af>in your hotbar!"
  activated-slot1: "<#f59e0b>⚡ <gradient:#f59e0b:#fbbf24>Slot 1</gradient> <#6b7280>» <#d1d5db>Room Setup Wand"
  activated-slot3: "<#d946ef>📖 <gradient:#d946ef:#ec4899>Slot 3</gradient> <#6b7280>» <#d1d5db>How-To Guide Book"
  activated-slots: "<#06b6d4>⚙ <gradient:#06b6d4:#0891b2>Slot 4-9</gradient> <#6b7280>» <#d1d5db>Setting Adjusters"
  activated-hint: "<#9ca3af>Right-click the wand to start!"
  activated-footer: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"

  # Deactivation ─────────────────────────────────────
  deactivated-header: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"
  deactivated-title: "<gradient:#ec4899:#d946ef>✦ EDITOR MODE DEACTIVATED ✦</gradient>"
  deactivated-saved: "<gradient:#10b981:#34d399>✔</gradient> <#9ca3af>Room '<gradient:#f59e0b:#fbbf24>{room}</gradient>' <gradient:#10b981:#34d399>saved successfully!</gradient>"
  deactivated-usage: "<#9ca3af>Use <gradient:#f59e0b:#fbbf24>/sf room <roomId></gradient> <#9ca3af>to play"
  deactivated-cancelled: "<gradient:#ef4444:#991b1b>✘ Room creation cancelled</gradient>"
  deactivated-no-changes: "<#9ca3af>No changes were saved"
  deactivated-footer: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"

  # Actionbar Hints ──────────────────────────────────
  hint-pos1: "<#fbbf24>[Editor] <#9ca3af>Right-click wand to set Position 1"
  hint-pos2: "<#fbbf24>[Editor] <#9ca3af>Right-click wand to set Position 2"
  hint-entry: "<#fbbf24>[Editor] <#9ca3af>Right-click to set entry spawn point"
  hint-exit: "<#fbbf24>[Editor] <#9ca3af>Right-click to set exit spawn point"
  hint-floors: "<#fbbf24>[Editor] <#9ca3af>Type '<schematic> <layer>' to add floors"
  hint-floors-gui: "<#fbbf24>[Editor] <#9ca3af>Shift + Right-Click wand to open the schematic browser"
  hint-floors-added: "<#fbbf24>[Editor] <#10b981>{count} floor(s) added <#9ca3af>— Shift + Right-Click for more, or type 'done'"
  hint-default: "<#fbbf24>[Editor Mode]"

  # Adjuster Feedback ─────────────────────────────────
  starter-gap-adjusted: "<gradient:#06b6d4:#0891b2>Starter Gap:</gradient> <#9ca3af>{gap} blocks"
  floor-gap-adjusted: "<gradient:#06b6d4:#0891b2>Floor Gap:</gradient> <#9ca3af>{gap} blocks"
  max-players-adjusted: "<gradient:#8b5cf6:#a78bfa>Max Players:</gradient> <#9ca3af>{players}"
  countdown-adjusted: "<gradient:#f59e0b:#fbbf24>Countdown:</gradient> <#9ca3af>{seconds} seconds"
  min-mobs-adjusted: "<gradient:#ef4444:#dc2626>☠ Floor {floor} Min Mobs:</gradient> <#9ca3af>{min}"
  max-mobs-adjusted: "<gradient:#ef4444:#dc2626>☠ Floor {floor} Max Mobs:</gradient> <#9ca3af>{max}"
  mob-type-set: "<gradient:#f59e0b:#fbbf24>Floor {floor} mob type:</gradient> <#9ca3af>{type} <#fbbf24>{mob}"

  # Settings Info Panel ──────────────────────────────
  settings-header: "<gradient:#3b3b3b:#1a1a1a>━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
  settings-title: "<gradient:#d946ef:#ec4899><bold>Current Room Settings</bold></gradient>"
  settings-structural: "<gradient:#f59e0b:#fbbf24>Structural Settings:</gradient>"
  settings-starter-gap: "  <#9ca3af>Starter → Floor 1 Gap: <gradient:#f59e0b:#fbbf24>{gap} blocks</gradient>"
  settings-floor-gap: "  <#9ca3af>Floor → Floor Gap: <gradient:#f59e0b:#fbbf24>{gap} blocks</gradient>"
  settings-max-floors: "  <#9ca3af>Max Floors: <gradient:#f59e0b:#fbbf24>{max}</gradient>"
  settings-void-y: "  <#9ca3af>Void Y-Level: <gradient:#f59e0b:#fbbf24>{y}</gradient>"
  settings-gameplay: "<gradient:#f59e0b:#fbbf24>Gameplay Settings:</gradient>"
  settings-countdown: "  <#9ca3af>Countdown: <gradient:#f59e0b:#fbbf24>{seconds} seconds</gradient>"
  settings-floor-drop-delay: "  <#9ca3af>Floor Drop Delay: <gradient:#f59e0b:#fbbf24>{seconds} seconds</gradient>"
  settings-auto-start: "  <#9ca3af>Auto-start: <gradient:#f59e0b:#fbbf24>{status}</gradient>"
  settings-min-players: "  <#9ca3af>Min Players: <gradient:#f59e0b:#fbbf24>{min}</gradient>"
  settings-max-players: "  <#9ca3af>Max Players: <gradient:#f59e0b:#fbbf24>{max}</gradient>"
  settings-join-in-progress: "  <#9ca3af>Join in Progress: <gradient:#f59e0b:#fbbf24>{status}</gradient>"
  settings-mobs: "<gradient:#f59e0b:#fbbf24>Mob Settings (Default):</gradient>"
  settings-default-min-mobs: "  <#9ca3af>Default Min Mobs: <gradient:#f59e0b:#fbbf24>{min}</gradient>"
  settings-default-max-mobs: "  <#9ca3af>Default Max Mobs: <gradient:#f59e0b:#fbbf24>{max}</gradient>"
  settings-default-mob-type: "  <#9ca3af>Default Mob Type: <gradient:#f59e0b:#fbbf24>{type}</gradient>"
  settings-mob-counter-display: "  <#9ca3af>Mob Counter Display: <gradient:#f59e0b:#fbbf24>{display}</gradient>"
  settings-per-floor: "<gradient:#f59e0b:#fbbf24>Per-Floor Mob Settings:</gradient>"
  settings-floor-entry: "  <gradient:#f59e0b:#fbbf24>Floor {floor}:</gradient> <#9ca3af>{min}-{max} {type}</#9ca3af>{marker}"
  settings-floor-entry-custom: " <gradient:#10b981:#34d399>✓</gradient>"
  settings-floor-entry-default: " <#9ca3af>(default)</#9ca3af>"
  settings-footer: "<gradient:#3b3b3b:#1a1a1a>━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"

  # Mob Input ─────────────────────────────────────────
  mob-input-header: "<gradient:#f59e0b:#fbbf24><bold>⚔ MOB TYPE INPUT</bold></gradient>"
  mob-input-prompt: "<#9ca3af>Enter mob type for <gradient:#f59e0b:#fbbf24>Floor {floor}</gradient>:"
  mob-input-format: "<gradient:#f59e0b:#fbbf24>Format:</gradient>"
  mob-input-vanilla: "  <gradient:#10b981:#34d399>vanilla:<entity></gradient> <#6b7280>• <#9ca3af>Vanilla Minecraft mob"
  mob-input-mythic: "  <gradient:#d946ef:#ec4899>mythicmobs:<mobid></gradient> <#6b7280>• <#9ca3af>MythicMobs custom mob"
  mob-input-vanilla-title: "<gradient:#10b981:#34d399>Vanilla Hostile Mobs (Click to select):</gradient>"
  mob-input-examples: "<#6b7280>Examples: <#d1d5db>vanilla:zombie</#d1d5db>, <#d1d5db>mythicmobs:FireDemon"
  mob-input-cancel: "<#6b7280>Type '<gradient:#ef4444:#dc2626>cancel</gradient>' to abort"

  # Editor Feedback ──────────────────────────────────
  feedback-preview-disabled: "<gradient:#f59e0b:#fbbf24>⚠ Enable previews to adjust gaps!</gradient>"
  feedback-item-drop-denied: "<#ef4444>✘ You cannot drop editor items!"
  feedback-add-floor-first: "<#ef4444>✘ Add a floor first!"
  feedback-select-floor-first: "<gradient:#f59e0b:#fbbf24>⚠ Select a floor first!</gradient> <#9ca3af>Use the floor selector"
  feedback-mob-floor-selected: "<gradient:#06b6d4:#3b82f6>Mob Settings:</gradient> <#9ca3af>Floor {floor}"
  feedback-commands-none: "<#ef4444>✘ Floor {floor} has no commands to clear"
  feedback-commands-cleared: "<gradient:#10b981:#34d399>✓ Cleared {count} commands from floor {floor}</gradient>"

  # Custom Commands Input ─────────────────────────────
  command-input-header: "<gradient:#3b82f6:#60a5fa>━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
  command-input-title: "<gradient:#3b82f6:#60a5fa><bold>Custom Commands - Floor {floor}</bold></gradient>"
  command-input-desc: "<#9ca3af>Enter commands that execute when this floor starts"
  command-input-format: "<#9ca3af>Type one per line, then '<gradient:#10b981:#34d399>done</gradient>' to finish"
  command-input-placeholders: "<gradient:#f59e0b:#fbbf24>Available placeholders:</gradient>"
  command-placeholder-player: "  <#6b7280>• <gradient:#f59e0b:#fbbf24>{player}</gradient> <#9ca3af>- Player name"
  command-placeholder-floor: "  <#6b7280>• <gradient:#f59e0b:#fbbf24>{floor}</gradient> <#9ca3af>- Floor number"
  command-placeholder-room: "  <#6b7280>• <gradient:#f59e0b:#fbbf24>{room}</gradient> <#9ca3af>- Room ID"
  command-input-footer: "<gradient:#3b82f6:#60a5fa>━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"

  # Command List ──────────────────────────────────────
  command-list-header: "<gradient:#3b82f6:#60a5fa>━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
  command-list-title: "<gradient:#3b82f6:#60a5fa><bold>Commands - Floor {floor}</bold></gradient>"
  command-list-empty: "<#9ca3af>No commands configured\n<#6b7280>Right-click the Command Block to add commands"
  command-list-entry: "<gradient:#f59e0b:#fbbf24>{index}.</gradient> <#d1d5db>{command}"
  command-list-footer: "<gradient:#3b82f6:#60a5fa>━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"

# ═════════════════════════════════════════════════════════════════
#  DEBUG — Debug mode status display
# ═════════════════════════════════════════════════════════════════
debug:
  header: "<gradient:#3b3b3b:#1a1a1a>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
  title: "<gradient:#f59e0b:#fbbf24><bold>Debug Mode Status</bold></gradient>"
  enabled: "<#9ca3af>Enabled: {status}"
  features-title: "<gradient:#f59e0b:#fbbf24>Active Features:</gradient>"
  instant-start: "<#6b7280>• <#9ca3af>Instant Start: {status}"
  instant-floor: "<#6b7280>• <#9ca3af>Instant Floor Drop: {status}"
  instant-mob: "<#6b7280>• <#9ca3af>Instant Mob Spawn: {status}"
  verbose-log: "<#6b7280>• <#9ca3af>Verbose Logging: {status}"
  enable-hint: "<#6b7280>To enable: Set <gradient:#f59e0b:#fbbf24>debug-mode.enabled: true</gradient> <#6b7280>in config.yml"
  reload-hint: "<#6b7280>Then use <gradient:#f59e0b:#fbbf24>/sf reload</gradient> <#6b7280>to apply changes"
  footer: "<gradient:#3b3b3b:#1a1a1a>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
  toggle-hint: "<gradient:#f59e0b:#fbbf24>⚠ Debug mode can only be toggled in config.yml</gradient>"
  toggle-set: "<#9ca3af>Set <gradient:#f59e0b:#fbbf24>debug-mode.enabled</gradient> <#9ca3af>to true/false"
  toggle-reload: "<#9ca3af>Then use <gradient:#f59e0b:#fbbf24>/sf reload</gradient> <#9ca3af>to apply changes"
  status-yes: "<gradient:#10b981:#34d399>YES</gradient>"
  status-no: "<gradient:#ef4444:#dc2626>NO</gradient>"
  status-on: "<gradient:#10b981:#34d399>ON</gradient>"
  status-off: "<gradient:#ef4444:#dc2626>OFF</gradient>"

# ═════════════════════════════════════════════════════════════════
#  HELP — Main /sf help output
# ═════════════════════════════════════════════════════════════════
help:
  header: "<gradient:#3b3b3b:#1a1a1a>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
  title: "<gradient:#f59e0b:#fbbf24><bold>SoapsFloor Commands</bold></gradient>"
  menu: "<gradient:#10b981:#34d399>/sf menu</gradient> <#6b7280>• <#9ca3af>Open main menu (GUI)"
  stats: "<gradient:#3b82f6:#60a5fa>/sf stats</gradient> <#6b7280>• <#9ca3af>Open your statistics"
  wand-create: "<gradient:#f59e0b:#fbbf24>/sf wand create <name></gradient> <#6b7280>• <#9ca3af>Create new room"
  wand-edit: "<gradient:#f59e0b:#fbbf24>/sf wand edit <name></gradient> <#6b7280>• <#9ca3af>Edit existing room"
  wand-finish: "<gradient:#f59e0b:#fbbf24>/sf wand finish</gradient> <#6b7280>• <#9ca3af>Save and exit editor"
  wand-cancel: "<gradient:#f59e0b:#fbbf24>/sf wand cancel</gradient> <#6b7280>• <#9ca3af>Cancel without saving"
  wand-status: "<gradient:#f59e0b:#fbbf24>/sf wand status</gradient> <#6b7280>• <#9ca3af>Check session status"
  wand-schematics: "<gradient:#f59e0b:#fbbf24>/sf wand schematics</gradient> <#6b7280>• <#9ca3af>Browse & paste schematics"
  room-join: "<gradient:#06b6d4:#3b82f6>/sf room <name></gradient> <#6b7280>• <#9ca3af>Join a room"
  room-list: "<gradient:#06b6d4:#3b82f6>/sf room list</gradient> <#6b7280>• <#9ca3af>List all rooms"
  room-info: "<gradient:#06b6d4:#3b82f6>/sf room info <name></gradient> <#6b7280>• <#9ca3af>Room details"
  room-leave: "<gradient:#06b6d4:#3b82f6>/sf room leave</gradient> <#6b7280>• <#9ca3af>Leave current room"
  settings-feedback: "<gradient:#8b5cf6:#a78bfa>/sf settings feedback</gradient> <#6b7280>• <#9ca3af>Toggle feedback type"
  debug: "<gradient:#ef4444:#dc2626>/sf debug</gradient> <#6b7280>• <#9ca3af>Debug mode info"
  reload: "<gradient:#10b981:#34d399>/sf reload</gradient> <#6b7280>• <#9ca3af>Reload configuration"
  footer: "<gradient:#3b3b3b:#1a1a1a>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"

# ═════════════════════════════════════════════════════════════════
#  RELOAD — Config reload feedback
# ═════════════════════════════════════════════════════════════════
reload:
  success: "<gradient:#10b981:#34d399>✓ Configuration reloaded successfully!</gradient>"
  failed: "<gradient:#ef4444:#dc2626>✘ Failed to reload configuration!</gradient> <#9ca3af>Check console for errors"

# ═════════════════════════════════════════════════════════════════
#  SETTINGS — Player settings feedback
# ═════════════════════════════════════════════════════════════════
settings:
  feedback-chat: "<gradient:#10b981:#34d399>✓ Feedback mode:</gradient> <gradient:#f59e0b:#fbbf24>Chat Messages</gradient>"
  feedback-actionbar: "<gradient:#10b981:#34d399>✓ Feedback mode:</gradient> <gradient:#06b6d4:#3b82f6>Action Bar</gradient>"
  help-header: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"
  help-title: "<gradient:#f59e0b:#fbbf24><bold>SoapsFloor Settings</bold></gradient>"
  help-toggle-feedback: "<gradient:#f59e0b:#fbbf24>/sf settings toggle feedback</gradient>"
  help-toggle-feedback-desc: "  <#9ca3af>Toggle between chat and actionbar for item feedback"
  help-footer: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"

# ═════════════════════════════════════════════════════════════════
#  GUI — Menu system messages
# ═════════════════════════════════════════════════════════════════
gui:
  disabled: "<gradient:#ef4444:#dc2626>✘ GUI system is currently disabled!</gradient> <#9ca3af>Use commands instead: /sf help"
  opened: "<gradient:#10b981:#34d399>✓ Opening menu...</gradient>"
  not-implemented: "<gradient:#f59e0b:#fbbf24>⚠ This menu is not yet available!</gradient> <#9ca3af>Coming soon"
  error: "<gradient:#ef4444:#dc2626>✘ An error occurred while opening the menu!</gradient>"
  click-error: "<gradient:#ef4444:#dc2626>✘ An error occurred. GUI closed for safety.</gradient>"

# ═════════════════════════════════════════════════════════════════
#  LEADERBOARD — Leaderboard display
# ═════════════════════════════════════════════════════════════════
leaderboard:
  no-data: "<#9ca3af>No leaderboard data available for this room yet."
  header: "<gradient:#f59e0b:#fbbf24>━━━ 🏆 Leaderboard: {room} ━━━</gradient>"

# ═════════════════════════════════════════════════════════════════
#  HAZARD — Falling hazard warnings
# ═════════════════════════════════════════════════════════════════
hazard:
  started: "<gradient:#ef4444:#dc2626>⚠ Falling hazard activated!</gradient> <#9ca3af>Stay below the descending particles!"
  warning: "<gradient:#ef4444:#dc2626>⚠ The hazard is approaching!</gradient>"

# ═════════════════════════════════════════════════════════════════
#  SCHEMATIC PREVIEW — Standalone schematic browser & paste
# ═════════════════════════════════════════════════════════════════
schematic-preview:
  started: "<gradient:#d946ef:#ec4899>✓ Previewing schematic '<#fbbf24>{schematic}</#fbbf24>'</gradient> <#9ca3af>(Size: {width}x{height}x{length})"
  simplified: "<#f59e0b>⚠ Large schematic — preview shows {shown}/{total} blocks to protect your client.</#f59e0b>"
  too-large: "<gradient:#ef4444:#dc2626>✘ Schematic has {total} blocks (max preview {max}). Paste still works via chat.</gradient>"
  actionbar: "<gradient:#d946ef:#ec4899>📐 {schematic}</gradient> <#9ca3af>| Distance: <white>{distance}</white> | Scroll to adjust | Type '<#fbbf24>done</#fbbf24>' to paste, '<#ef4444>cancel</#ef4444>' to abort"
  pasted: "<gradient:#10b981:#34d399>✓ Schematic '<#fbbf24>{schematic}</#fbbf24>' pasted at {x}, {y}, {z}!</gradient>"
  cancelled: "<gradient:#ef4444:#dc2626>✘ Schematic preview cancelled.</gradient>"
  undo-hint: "<#9ca3af>Type '<#fbbf24>undo</#fbbf24>' in chat to revert the paste."
  undone: "<gradient:#10b981:#34d399>✓ Undo complete!</gradient> <#9ca3af>Restored {blocks} blocks."
  no-undo: "<gradient:#ef4444:#dc2626>✘ Nothing to undo!</gradient>"

gui.yml

# ============================================
#       SoapsFloor GUI Configuration
# ============================================
#
# Suite GUI: config.yml -> gui.enabled is the master kill-switch for this plugin's
# inventory UIs. This file defines menu layout (titles, sizes, items). Text may use
# MiniMessage; legacy & and § are accepted where documented.
# SoapsAdmin uses a gui/ folder for many menus (advanced suite layout).
#
# All text supports MiniMessage format.
# Placeholders: {player}, {rooms_available}, {in_session},
#   {current_room}, {total_kills}, {games_completed},
#   {best_time_current_room}, {best_time_overall}, {best_room_name},
#   {rooms_with_best}, {feedback_mode}, {actionbar_state}, {preview_state},
#   {room_id}, {floors}, {players}, {max_players}, {status}, {best_time},
#   {room}, {tab}, {rank}, {value}, {schematic}, {size}, {page}
#
# Actions:
#   [close]                  - Close the GUI
#   [open_menu] <id>         - Open another menu (main_hub, room_browser, stats,
#                              settings, admin, leaderboards, leaderboard_view,
#                              schematic_browser)
#   [command] <cmd>          - Player runs /<cmd> (supports placeholders)
#   [prev_page]              - Previous page (paginated GUIs)
#   [next_page]              - Next page (paginated GUIs)
#   [refresh]                - Refresh current GUI
#   [join_random]            - Join a random available room
#   [leave_session]          - Leave current session
#   [help]                   - Show help commands
#   [toggle] feedback        - Toggle feedback mode
#   [toggle] actionbar       - Toggle actionbar hints
#   [toggle] preview         - Toggle floor preview
#   [reload]                 - Reload plugin configuration
#   [debug]                  - Show debug info
#   [tab] time               - Switch to time tab (leaderboard)
#   [tab] kills              - Switch to kills tab (leaderboard)
#   [none]                   - No action (decorative item)
#
# Slot numbers start at 0. Multi-slot: "0,1,2"
# permission: soapsfloor.some.perm  - item only shown/clickable with permission
# material-active / name-active / lore-active are used for toggled states.
# ============================================

settings:
  # Enable or disable all GUI panels (true/false)
  enabled: true
  # Material used to fill empty slots in all GUIs
  filler-material: GRAY_STAINED_GLASS_PANE
  filler-name: " "
  # Sound played on GUI open
  open-sound: BLOCK_CHEST_OPEN
  open-sound-volume: 0.7
  open-sound-pitch: 1.2
  # Sound played on GUI click (set to NONE to disable)
  click-sound: UI_BUTTON_CLICK
  click-sound-volume: 0.5
  click-sound-pitch: 1.0

# ============================================
#               Menu Definitions
# ============================================
# size = ROW count (3–6), NOT total slot count. 4 rows = 36 slots.
menus:

  # ------------------------------------------
  #          Main Hub (4 rows)
  # ------------------------------------------
  main-hub:
    title: "<gradient:#f59e0b:#fbbf24><bold>🧼 SoapsFloor Hub</bold></gradient>"
    size: 4
    items:
      border:
        slot: "0,1,2,3,4,5,6,7,8,9,17,18,26,27,35"
        material: GRAY_STAINED_GLASS_PANE
        name: " "

      background:
        slot: "10,12,14,16,19,21,23,25,28,30,32"
        material: LIGHT_GRAY_STAINED_GLASS_PANE
        name: " "

      # ── Action items ──
      leaderboards:
        slot: 11
        material: GOLD_INGOT
        name: "<gradient:#f59e0b:#fbbf24><bold>🏆 Leaderboards</bold></gradient>"
        lore:
          - ""
          - "<gray>View top players for"
          - "<gray>each dungeon room."
          - ""
          - "<gradient:#f59e0b:#fbbf24>▸ Click to view</gradient>"
        action: "[open_menu] leaderboards"

      stats:
        slot: 13
        material: PLAYER_HEAD
        name: "<gradient:#3b82f6:#60a5fa><bold>📊 Your Stats</bold></gradient>"
        lore:
          - ""
          - "<gray>Total kills, wins, and"
          - "<gray>best times per room."
          - ""
          - "<gradient:#f59e0b:#fbbf24>▸ Click to view</gradient>"
        action: "[open_menu] stats"

      help:
        slot: 15
        material: BOOK
        name: "<gradient:#f59e0b:#fbbf24><bold>📖 Commands</bold></gradient>"
        lore:
          - ""
          - "<gray>List all available commands"
          - "<gray>and usage tips."
          - ""
          - "<gradient:#f59e0b:#fbbf24>▸ Click for help</gradient>"
        action: "[help]"

      join_random:
        slot: 20
        material: EMERALD
        name: "<gradient:#10b981:#34d399><bold>⚡ Quick Join</bold></gradient>"
        lore:
          - ""
          - "<gray>Instantly join the best"
          - "<gray>available dungeon room."
          - ""
          - "<gradient:#f59e0b:#fbbf24>▸ Click to join</gradient>"
        action: "[join_random]"

      browse_rooms:
        slot: 22
        material: COMPASS
        name: "<gradient:#06b6d4:#3b82f6><bold>🗺 Room Browser</bold></gradient>"
        lore:
          - ""
          - "<gray>Browse every room and"
          - "<gray>pick your challenge."
          - ""
          - "<yellow>Rooms: <gold>{rooms_available}"
          - ""
          - "<gradient:#f59e0b:#fbbf24>▸ Click to browse</gradient>"
        action: "[open_menu] room_browser"

      current_session:
        slot: 24
        material: NETHER_STAR
        name: "<gradient:#a855f7:#c084fc><bold>📍 Session Status</bold></gradient>"
        lore:
          - ""
          - "<gray>Player: <white>{player}"
          - "<gray>In Session: <white>{in_session}"
          - "<gray>Room: <white>{current_room}"
          - ""
          - "<#9ca3af>Live status overview."
        action: "[none]"

      admin_control:
        slot: 29
        material: REDSTONE_TORCH
        name: "<gradient:#ef4444:#dc2626><bold>🛠 Admin Control</bold></gradient>"
        lore:
          - ""
          - "<gray>Open admin panel for"
          - "<gray>server management."
          - ""
          - "<red>Requires permission</red>"
        permission: soapsfloor.admin.gui
        action: "[open_menu] admin"

      leave_session:
        slot: 31
        material: RED_BED
        name: "<gradient:#ef4444:#dc2626><bold>🚪 Leave Session</bold></gradient>"
        lore:
          - ""
          - "<gray>Exit your current room"
          - "<gray>and return to spawn."
          - ""
          - "<red><bold>⚠</bold> Progress will be lost</red>"
          - ""
          - "<gradient:#f59e0b:#fbbf24>▸ Click to leave</gradient>"
        action: "[leave_session]"

      settings:
        slot: 33
        material: COMPARATOR
        name: "<gradient:#8b5cf6:#a78bfa><bold>⚙ Settings</bold></gradient>"
        lore:
          - ""
          - "<gray>Customize your experience"
          - "<gray>and editor options."
          - ""
          - "<gradient:#f59e0b:#fbbf24>▸ Click to open</gradient>"
        permission: soapsfloor.admin.gui
        action: "[open_menu] settings"

      close:
        slot: 34
        material: BARRIER
        name: "<gradient:#ef4444:#dc2626><bold>✖ Close</bold></gradient>"
        lore:
          - ""
          - "<gray>Close this menu."
        action: "[close]"


  # ------------------------------------------
  #          Room Browser (Paginated, 5 rows)
  # ------------------------------------------
  room-browser:
    title: "<gradient:#06b6d4:#3b82f6><bold>🗺 Room Browser</bold></gradient>"
    size: 5

    room-slots:
      - 10
      - 11
      - 12
      - 13
      - 14
      - 15
      - 16
      - 19
      - 20
      - 21
      - 22
      - 23
      - 24
      - 25

    room-item:
      material: PAPER
      name: "<gradient:#10b981:#34d399><bold>{room_id}</bold></gradient>"
      lore:
        - ""
        - "<gray>Floors: <white>{floors}"
        - "<gray>Players: <white>{players}<gray>/<white>{max_players}"
        - "<gray>Status: <white>{status}"
        - ""
        - "<gray>Your Best: <gold>{best_time}"
        - ""
        - "<gradient:#f59e0b:#fbbf24>▸ Click to join</gradient>"

    items:
      border:
        slot: "0,1,2,3,4,5,6,7,8,9,17,18,26,27,35,37,38,39,42,43"
        material: GRAY_STAINED_GLASS_PANE
        name: " "

      prev-page:
        slot: 36
        material: ARROW
        name: "<gradient:#f59e0b:#fbbf24><bold>◀ Previous</bold></gradient>"
        lore:
          - ""
          - "<gray>Go to previous page"
        action: "[prev_page]"

      refresh:
        slot: 40
        material: CLOCK
        name: "<gradient:#10b981:#34d399><bold>⟳ Refresh</bold></gradient>"
        lore:
          - ""
          - "<gray>Refresh room list"
        action: "[refresh]"

      back:
        slot: 41
        material: BARRIER
        name: "<gradient:#ef4444:#dc2626><bold>✖ Back</bold></gradient>"
        lore:
          - ""
          - "<gray>Return to main menu"
        action: "[open_menu] main_hub"

      next-page:
        slot: 44
        material: ARROW
        name: "<gradient:#f59e0b:#fbbf24><bold>Next ▶</bold></gradient>"
        lore:
          - ""
          - "<gray>Go to next page"
        action: "[next_page]"


  # ------------------------------------------
  #          Player Stats (3 rows)
  # ------------------------------------------
  player-stats:
    title: "<gradient:#3b82f6:#60a5fa><bold>📊 Your Statistics</bold></gradient>"
    size: 3
    items:
      border:
        slot: "0,1,2,3,4,5,6,7,8,9,17,18,26"
        material: GRAY_STAINED_GLASS_PANE
        name: " "

      background:
        slot: "10,12,14,16,19,20,21,23"
        material: LIGHT_GRAY_STAINED_GLASS_PANE
        name: " "

      total-kills:
        slot: 10
        material: IRON_SWORD
        name: "<gradient:#ef4444:#dc2626><bold>Monsters Killed</bold></gradient>"
        lore:
          - ""
          - "<gray>Total: <white>{total_kills}"
          - "<gray>Across all runs"

      games-completed:
        slot: 13
        material: EMERALD
        name: "<gradient:#10b981:#34d399><bold>Games Completed</bold></gradient>"
        lore:
          - ""
          - "<gray>Total: <white>{games_completed}"
          - "<gray>All rooms combined"

      best-time-current:
        slot: 16
        material: CLOCK
        name: "<gradient:#f59e0b:#fbbf24><bold>Best Time (Current Room)</bold></gradient>"
        lore:
          - ""
          - "<gray>Best: <white>{best_time_current_room}"
          - "<gray>Room you are in now"

      best-time-overall:
        slot: 22
        material: GOLD_INGOT
        name: "<gradient:#f59e0b:#fbbf24><bold>Best Time (Overall)</bold></gradient>"
        lore:
          - ""
          - "<gray>Best: <white>{best_time_overall}"
          - "<gray>Room: <white>{best_room_name}"

      rooms-with-best:
        slot: 19
        material: BOOK
        name: "<gradient:#06b6d4:#3b82f6><bold>Rooms Tracked</bold></gradient>"
        lore:
          - ""
          - "<gray>Best times set: <white>{rooms_with_best}"

      back:
        slot: 20
        material: ARROW
        name: "<gradient:#f59e0b:#fbbf24><bold>↩ Back</bold></gradient>"
        lore:
          - ""
          - "<gray>Return to main menu"
        action: "[open_menu] main_hub"

      close:
        slot: 24
        material: BARRIER
        name: "<gradient:#ef4444:#dc2626><bold>✖ Close</bold></gradient>"
        lore:
          - ""
          - "<gray>Close this menu"
        action: "[close]"


  # ------------------------------------------
  #          Player Settings (3 rows)
  # ------------------------------------------
  player-settings:
    title: "<gradient:#8b5cf6:#a78bfa><bold>⚙ Settings</bold></gradient>"
    size: 3
    items:
      border:
        slot: "0,1,2,3,4,5,6,7,8,9,17,18,26"
        material: GRAY_STAINED_GLASS_PANE
        name: " "

      background:
        slot: "10,12,14,16,19,20,21,22,23"
        material: LIGHT_GRAY_STAINED_GLASS_PANE
        name: " "

      toggle-feedback:
        slot: 11
        material: COMPARATOR
        name: "<gradient:#8b5cf6:#a78bfa><bold>Feedback Mode</bold></gradient>"
        lore:
          - ""
          - "<gray>Switch between <white>Chat</white> and"
          - "<gray><white>Actionbar</white> for editor feedback."
          - ""
          - "<gray>Current: <white>{feedback_mode}"
          - ""
          - "<gradient:#f59e0b:#fbbf24>▸ Click to toggle</gradient>"
        action: "[toggle] feedback"

      toggle-actionbar:
        slot: 13
        material: CLOCK
        name: "<gradient:#06b6d4:#3b82f6><bold>Actionbar Hints</bold></gradient>"
        lore:
          - ""
          - "<gray>Show or hide the actionbar"
          - "<gray>hints while using the wand."
          - ""
          - "<gray>Current: <white>{actionbar_state}"
          - ""
          - "<gradient:#f59e0b:#fbbf24>▸ Click to toggle</gradient>"
        action: "[toggle] actionbar"

      toggle-preview:
        slot: 15
        material: GLASS
        name: "<gradient:#10b981:#34d399><bold>Floor Preview</bold></gradient>"
        lore:
          - ""
          - "<gray>Toggle ghost-block previews"
          - "<gray>for floor placement in the"
          - "<gray>wand editor."
          - ""
          - "<gray>Current: <white>{preview_state}"
          - ""
          - "<gradient:#f59e0b:#fbbf24>▸ Click to toggle</gradient>"
        action: "[toggle] preview"

      back:
        slot: 20
        material: ARROW
        name: "<gradient:#f59e0b:#fbbf24><bold>↩ Back</bold></gradient>"
        lore:
          - ""
          - "<gray>Return to main menu"
        action: "[open_menu] main_hub"

      close:
        slot: 24
        material: BARRIER
        name: "<gradient:#ef4444:#dc2626><bold>✖ Close</bold></gradient>"
        lore:
          - ""
          - "<gray>Close this menu"
        action: "[close]"


  # ------------------------------------------
  #          Admin Control (3 rows)
  # ------------------------------------------
  admin-control:
    title: "<gradient:#ef4444:#dc2626><bold>🛠 Admin Control</bold></gradient>"
    size: 3
    items:
      border:
        slot: "0,1,2,3,4,5,6,7,8,9,17,18,26"
        material: GRAY_STAINED_GLASS_PANE
        name: " "

      background:
        slot: "10,12,14,16,19,21,23,25"
        material: LIGHT_GRAY_STAINED_GLASS_PANE
        name: " "

      reload:
        slot: 11
        material: LIME_DYE
        name: "<gradient:#10b981:#34d399><bold>Reload Config</bold></gradient>"
        lore:
          - ""
          - "<gray>Reload plugin configuration"
        permission: soapsfloor.admin.gui
        action: "[reload]"

      debug:
        slot: 13
        material: REDSTONE
        name: "<gradient:#ef4444:#dc2626><bold>Debug Info</bold></gradient>"
        lore:
          - ""
          - "<gray>Show debug status"
        permission: soapsfloor.admin.gui
        action: "[debug]"

      open-room-browser:
        slot: 15
        material: COMPASS
        name: "<gradient:#06b6d4:#3b82f6><bold>Room Browser</bold></gradient>"
        lore:
          - ""
          - "<gray>Open room browser"
        action: "[open_menu] room_browser"

      open-main-hub:
        slot: 12
        material: NETHER_STAR
        name: "<gradient:#f59e0b:#fbbf24><bold>Main Hub</bold></gradient>"
        lore:
          - ""
          - "<gray>Return to main hub"
        action: "[open_menu] main_hub"

      close:
        slot: 14
        material: BARRIER
        name: "<gradient:#ef4444:#dc2626><bold>✖ Close</bold></gradient>"
        lore:
          - ""
          - "<gray>Close this menu"
        action: "[close]"


  # ------------------------------------------
  #      Leaderboard Room Selector (Paginated, 5 rows)
  # ------------------------------------------
  leaderboard-rooms:
    title: "<gradient:#f59e0b:#fbbf24><bold>🏆 Leaderboards</bold></gradient>"
    size: 5

    room-slots:
      - 10
      - 11
      - 12
      - 13
      - 14
      - 15
      - 16
      - 19
      - 20
      - 21
      - 22
      - 23
      - 24
      - 25

    room-item:
      material: GOLDEN_APPLE
      name: "<gradient:#f59e0b:#fbbf24><bold>{room_id}</bold></gradient>"
      lore:
        - ""
        - "<gray>Floors: <white>{floors}"
        - ""
        - "<gradient:#f59e0b:#fbbf24>▸ Click to view leaderboard</gradient>"

    items:
      border:
        slot: "0,1,2,3,4,5,6,7,8,9,17,18,26,27,35,37,38,39,42,43"
        material: GRAY_STAINED_GLASS_PANE
        name: " "

      prev-page:
        slot: 36
        material: ARROW
        name: "<gradient:#f59e0b:#fbbf24><bold>◀ Previous</bold></gradient>"
        lore:
          - ""
          - "<gray>Go to previous page"
        action: "[prev_page]"

      back:
        slot: 40
        material: ARROW
        name: "<gradient:#f59e0b:#fbbf24><bold>↩ Back</bold></gradient>"
        lore:
          - ""
          - "<gray>Return to main hub"
        action: "[open_menu] main_hub"

      close:
        slot: 41
        material: BARRIER
        name: "<gradient:#ef4444:#dc2626><bold>✖ Close</bold></gradient>"
        lore:
          - ""
          - "<gray>Close this menu"
        action: "[close]"

      next-page:
        slot: 44
        material: ARROW
        name: "<gradient:#f59e0b:#fbbf24><bold>Next ▶</bold></gradient>"
        lore:
          - ""
          - "<gray>Go to next page"
        action: "[next_page]"


  # ------------------------------------------
  #      Leaderboard View (Per Room, 5 rows)
  # ------------------------------------------
  leaderboard-view:
    title: "<gradient:#f59e0b:#fbbf24><bold>🏆 {room} – {tab}</bold></gradient>"
    size: 5

    entry-slots:
      - 19
      - 20
      - 21
      - 22
      - 23
      - 24
      - 25
      - 28
      - 29
      - 30

    entry-item:
      name: "<gold>#{rank}</gold> <white>{player}</white>"
      lore:
        - ""
        - "<gray>Value: <gold>{value}</gold>"

    items:
      border:
        slot: "0,1,2,3,4,5,6,7,8,9,10,12,13,14,16,17,18,26,27,35,37,38,39,40,41,42,43"
        material: GRAY_STAINED_GLASS_PANE
        name: " "

      tab_time:
        slot: 11
        material: CLOCK
        name: "<gradient:#10b981:#34d399><bold>⏱ Best Time</bold></gradient>"
        lore:
          - ""
          - "<gray>Ranked by fastest"
          - "<gray>completion time."
          - ""
          - "<gradient:#f59e0b:#fbbf24>▸ Click to view</gradient>"
        action: "[tab] time"

      tab_kills:
        slot: 15
        material: DIAMOND_SWORD
        name: "<gradient:#ef4444:#dc2626><bold>⚔ Best Kills</bold></gradient>"
        lore:
          - ""
          - "<gray>Ranked by most kills"
          - "<gray>in a single run."
          - ""
          - "<gradient:#f59e0b:#fbbf24>▸ Click to view</gradient>"
        action: "[tab] kills"

      back:
        slot: 36
        material: ARROW
        name: "<gradient:#f59e0b:#fbbf24><bold>↩ Back to Rooms</bold></gradient>"
        lore:
          - ""
          - "<gray>Return to room list"
        action: "[open_menu] leaderboards"

      close:
        slot: 44
        material: BARRIER
        name: "<gradient:#ef4444:#dc2626><bold>✖ Close</bold></gradient>"
        lore:
          - ""
          - "<gray>Close this menu"
        action: "[close]"


  # ------------------------------------------
  #          Schematic Browser (Paginated, 5 rows)
  # ------------------------------------------
  schematic-browser:
    title: "<gradient:#d946ef:#ec4899><bold>📂 Schematic Browser</bold></gradient>"
    size: 5

    schematic-slots:
      - 10
      - 11
      - 12
      - 13
      - 14
      - 15
      - 16
      - 19
      - 20
      - 21
      - 22
      - 23
      - 24
      - 25

    schematic-item:
      material: PAPER
      name: "<gradient:#f59e0b:#fbbf24>{schematic}</gradient>"
      lore:
        - ""
        - "<gray>Size: <white>{size}</white> blocks"
        - ""
        - "<gray>Click to select this"
        - "<gray>schematic for a floor."
        - ""
        - "<gradient:#f59e0b:#fbbf24>▸ Click to select</gradient>"

    items:
      border:
        slot: "0,1,2,3,4,5,6,7,8,9,17,18,26,27,35,37,38,39,42,43"
        material: GRAY_STAINED_GLASS_PANE
        name: " "

      prev-page:
        slot: 36
        material: ARROW
        name: "<gradient:#f59e0b:#fbbf24><bold>◀ Previous</bold></gradient>"
        lore:
          - ""
          - "<gray>Go to previous page"
        action: "[prev_page]"

      next-page:
        slot: 44
        material: ARROW
        name: "<gradient:#f59e0b:#fbbf24><bold>Next ▶</bold></gradient>"
        lore:
          - ""
          - "<gray>Go to next page"
        action: "[next_page]"

      close:
        slot: 40
        material: BARRIER
        name: "<gradient:#ef4444:#dc2626><bold>✖ Close</bold></gradient>"
        lore:
          - ""
          - "<gray>Close this menu"
        action: "[close]"

      empty-notice:
        slot: 22
        material: BARRIER
        name: "<red><bold>No Schematics Found</bold></red>"
        lore:
          - ""
          - "<gray>Add <white>.schem</white> files to"
          - "<gray><white>plugins/SoapsFloor/schematics/</white>"
          - ""
          - "<gray>Default templates: ROOM, STARTER_ROOM"
        action: "[none]"

    floor-selector:
      size: 5
      title: "<gradient:#06b6d4:#3b82f6><bold>⚙ Select Layer Count</bold></gradient>"
      slots:
        decrement-five: 20
        decrement-one: 21
        count-display: 22
        increment-one: 23
        increment-five: 24
        back: 39
        confirm: 41

Other bundled files

File Purpose
weaknesses.yml Weakness definitions and voting settings
rewards.yml Weighted reward tables for /sf setreward
plugin.yml Command and permission definitions (inside JAR)

Reload with /sf reload after editing config.yml, messages.yml, gui.yml, weaknesses.yml, or rewards.yml.

Discord