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.