Default messages.yml

Last updated Oct 28, 2026

Default messages.yml

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

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

See also: Config Reference · Configuration

# ################################################
#                                                #
#     SoapsFloor - 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:

  # 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 right-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>"

  # Lobby spawn (optional wait marker) ───────────────
  lobby-prompt: "<gradient:#10b981:#34d399>Optional: set a lobby wait spawn.</gradient>"
  lobby-prompt-hint: "<#9ca3af>Right-click a block for join and waiting. Type <#fbbf24>skip</#fbbf24> to keep joins on entry. The run still starts at entry."
  lobby-set: "<gradient:#10b981:#34d399>✓ Lobby spawn set!</gradient> <#9ca3af>({x}, {y}, {z})"
  lobby-skipped: "<#9ca3af>Lobby skipped. Joins use the entry spawn."

  # Schematics & Floors ──────────────────────────────
  schematic-not-found: "<gradient:#ef4444:#dc2626>✘ Schematic '<#fbbf24>{schematic}</#fbbf24>' not found!</gradient> <#9ca3af>Check schematics folder"

  # Session Management ───────────────────────────────
  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>✓ Editing</gradient> <gradient:#f59e0b:#fbbf24>{room}</gradient> <#9ca3af>({floors} floors)"
  edit-info-room: ""
  edit-info-floors: ""
  edit-info-hotbar: "<#9ca3af>Hotbar: <#f59e0b>Floor Editor</#f59e0b> <#9ca3af>(mobs/locks), <#ef4444>Falling Hazard / rising flood</#ef4444><#9ca3af>, <#38bdf8>Room Settings</#38bdf8> <#9ca3af>(direction, enclosure, lives)."
  edit-info-list: "<#9ca3af>Shift+Right-click the wand to add floors from schematics or packs."
  edit-info-done: "<#9ca3af>Type <#fbbf24>list</#fbbf24> to review floors, <#10b981>done</#10b981> to save, or <#ef4444>/sf wand cancel</#ef4444> to discard."
  edit-info-cancel: ""

  # 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 type(s)</gradient>"

  # Floor Configuration Output ────────────────────────
  floors-divider: "<gradient:#3b3b3b:#1a1a1a>━━━━━━━━━━━━━━━━━━━━</gradient>"
  floors-customize-hint: "<#9ca3af>In chat, type <#fbbf24><schematic> <n></#fbbf24> or <#d946ef>pack:<id> <n></#d946ef>."
  floors-customize-hint-gui: "<#9ca3af>Use the browser to pick schematics or packs, or type <#fbbf24><schematic> <n></#fbbf24> / <#d946ef>pack:<id> <n></#d946ef> in chat."
  floors-done-hint: "<#9ca3af>Type <#fbbf24>done</#fbbf24> when you are 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-finish: "<#fbbf24>/sf finish <#9ca3af>or <#fbbf24>/sf wand finish|leave <#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..."
  lobby-to-entry: "<#9ca3af>Moved to entry. Countdown starts now."
  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 and 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>The 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-subtitle-climb: "<#9ca3af>Next floor opens in..."
  countdown-actionbar-climb: "<#fbbf24>Next floor opens 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-starting-climb-escape: "<gradient:#38bdf8:#0ea5e9>✓ Climb started!</gradient> <#9ca3af>Reach the top and escape the rising flood."
  floor-starting-climb-clear: "<gradient:#38bdf8:#0ea5e9>✓ Climb started!</gradient> <#9ca3af>Clear each floor's mobs to advance. There is no rising flood."
  floor-paste-failed: "<gradient:#ef4444:#dc2626>✘ Floor failed to paste.</gradient> <#9ca3af>The run was cancelled. Tell staff to check the schematic."
  floor-cleared: "<gradient:#10b981:#34d399>✓ Floor {floor} cleared!</gradient> <#9ca3af>Dropping to next floor..."
  floor-cleared-climb: "<gradient:#10b981:#34d399>✓ Floor {floor} cleared!</gradient> <#9ca3af>Opening the next floor..."
  floor-next: "<gradient:#f59e0b:#fbbf24>⚡ Floor {floor}</gradient> <#6b7280>•</#6b7280> <gradient:#ef4444:#dc2626>{mobs} mobs</gradient> <#9ca3af>to clear!"
  floor-next-climb-escape: "<gradient:#38bdf8:#0ea5e9>⚡ Segment {floor}</gradient> <#6b7280>•</#6b7280> <gradient:#ef4444:#dc2626>{mobs} mobs</gradient><#9ca3af>. Keep climbing!"
  connector-opened: "<gradient:#38bdf8:#0ea5e9>⬆ Path opened!</gradient> <#9ca3af>Climb up. The party needs to reach the next floor."
  connector-closed: "<gradient:#10b981:#34d399>✓ Party up.</gradient> <#9ca3af>Connector cleared."
  connector-stay: "<#9ca3af>After clear is Stay. Use the stairs or ladders built into your schematics."
  connector-stair-missing: "<gradient:#f59e0b:#fbbf24>⚠ No stair for this climb-height.</gradient> <#9ca3af>Falling back to a ladder."
  connector-stair-fallback-ladder: "<gradient:#f59e0b:#fbbf24>⚠ Stair pack had no match.</gradient> <#9ca3af>Placed a full ladder instead."
  connector-party-actionbar: "<#38bdf8>⬆ Upstairs <#fbbf24>{up}</#fbbf24><#6b7280>/</#6b7280><#fbbf24>{total}</#fbbf24>"
  connector-timeout-warn: "<gradient:#f59e0b:#fbbf24>⏱ Move up!</gradient> <#9ca3af>Stragglers will be teleported soon."
  connector-timeout: "<gradient:#f59e0b:#fbbf24>⏱ Time's up.</gradient> <#9ca3af>Teleported everyone to the next floor."

  # Victory ───────────────────────────────────────────
  victory-header: ""
  victory-title: "<gradient:#f59e0b:#fbbf24>✦ Dungeon cleared:</gradient> <gradient:#f59e0b:#fbbf24>{room}</gradient>"
  victory-room: ""
  victory-completed: ""
  victory-time: ""
  victory-stats-header: ""
  victory-summary: "<#9ca3af>Time <gradient:#f59e0b:#fbbf24>{time}</gradient>. <gradient:#f59e0b:#fbbf24>{floors}</gradient> floors. <gradient:#f59e0b:#fbbf24>{kills}</gradient> kills."
  victory-mobs-defeated: ""
  victory-total-mobs: ""
  victory-your-kills: "<#9ca3af>Your kills: <gradient:#f59e0b:#fbbf24>{kills}</gradient>"
  victory-contributions: ""
  victory-player-kills: "<#d1d5db>{player}: <gradient:#f59e0b:#fbbf24>{kills}</gradient> <#6b7280>({percentage}%)"
  victory-floors-cleared: ""
  victory-footer: ""

  # Failure / lives ───────────────────────────────────
  dungeon-failed: "<gradient:#ef4444:#dc2626>✘ You fell into the void! Dungeon failed.</gradient>"
  flood-overhead: "<gradient:#ef4444:#dc2626>✘ The flood closed over you!</gradient>"
  run-ended: "<gradient:#ef4444:#dc2626>✘ Run over.</gradient> <#9ca3af>No fighters left."
  lives-status: "<#9ca3af>Party lives <#6b7280>·</#6b7280> <gradient:#f59e0b:#fbbf24>{remaining}</gradient><#6b7280>/</#6b7280><#9ca3af>{total}"
  lives-status-unlimited: "<#9ca3af>Party lives <#6b7280>·</#6b7280> <gradient:#10b981:#34d399>Unlimited</gradient>"
  lives-start: "<#9ca3af>This run has <gradient:#f59e0b:#fbbf24>{remaining}</gradient> shared <#9ca3af>lives."
  lives-start-unlimited: "<#9ca3af>This run has <gradient:#10b981:#34d399>unlimited</gradient> <#9ca3af>lives."
  lives-spent: "<gradient:#f59e0b:#fbbf24>{player}</gradient> <#9ca3af>went down. Lives left: <gradient:#f59e0b:#fbbf24>{remaining}</gradient><#6b7280>/</#6b7280><#9ca3af>{total}"
  lives-spent-last: "<gradient:#f59e0b:#fbbf24>{player}</gradient> <#9ca3af>went down. <gradient:#ef4444:#dc2626>Last life used.</gradient> <#9ca3af>Next death is out."
  lives-spent-unlimited: "<gradient:#f59e0b:#fbbf24>{player}</gradient> <#9ca3af>went down and respawned."
  lives-last-title: "<gradient:#ef4444:#dc2626><bold>LAST LIFE</bold></gradient>"
  lives-last-subtitle: "<#9ca3af>One shared life left"
  lives-last-used-subtitle: "<#9ca3af>Next death is out"
  lives-spectate-title: "<gradient:#ef4444:#dc2626><bold>OUT OF LIVES</bold></gradient>"
  lives-spectate-subtitle: "<#9ca3af>Spectating until the run ends"
  lives-wipe-title: "<gradient:#ef4444:#dc2626><bold>OUT OF LIVES</bold></gradient>"
  lives-wipe-subtitle: "<#9ca3af>Run over"
  lives-wipe-title-party: "<gradient:#ef4444:#dc2626><bold>PARTY WIPED</bold></gradient>"
  lives-wipe-subtitle-party: "<#9ca3af>No fighters left"
  lives-out: "<gradient:#f59e0b:#fbbf24>{player}</gradient> <#9ca3af>is out. <gradient:#f59e0b:#fbbf24>{fighters}</gradient> <#9ca3af>still fighting."
  lives-fighters: "<#6b7280>·</#6b7280> <gradient:#f59e0b:#fbbf24>{fighters}</gradient><#6b7280>/</#6b7280><#9ca3af>{party} fighting"
  out-of-lives-spectate: "<gradient:#ef4444:#dc2626>✘ No lives left!</gradient> <#9ca3af>You are spectating until the run ends."
  party-wiped: "<gradient:#ef4444:#dc2626>✘ Party wiped!</gradient> <#9ca3af>No fighters left. Ending the run."
  solo-wiped: "<gradient:#ef4444:#dc2626>✘ Out of lives!</gradient> <#9ca3af>Run over."
  spectator-leash: "<#9ca3af>Stay near the current floor while spectating."
  lives-not-in-session: "<gradient:#ef4444:#dc2626>✘ You are not in a dungeon run.</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>"

# ═════════════════════════════════════════════════════════════════
#  LOBBY - Ready check, skip vote, spectate, reconnect
# ═════════════════════════════════════════════════════════════════
lobby:
  ready-hint: "<#9ca3af>Ready <#fbbf24>{ready}/{total}</#fbbf24>. Type <#fbbf24>/sf ready</#fbbf24> when you are set, or <#fbbf24>/sf skip</#fbbf24> to vote to end the wait."
  ready-actionbar: "<#9ca3af>Ready <#fbbf24>{ready}/{total}</#fbbf24>  <#6b7280>·</#6b7280>  <gradient:#f59e0b:#fbbf24>{remaining}s</gradient>"
  ready-actionbar-plain: "<#9ca3af>Ready <#fbbf24>{ready}/{total}</#fbbf24>"
  ready-on: "<gradient:#10b981:#34d399>✓ {player} is ready</gradient> <#6b7280>({ready}/{total})"
  ready-off: "<#9ca3af>{player} is no longer ready <#6b7280>({ready}/{total})"
  all-ready: "<gradient:#10b981:#34d399>✓ Everyone is ready.</gradient> <#9ca3af>Ending the wait."
  ready-disabled: "<#9ca3af>Ready check is disabled on this server."
  skip-disabled: "<#9ca3af>Skip voting is disabled on this server."
  skip-voted: "<#fbbf24>{player}</#fbbf24> <#9ca3af>voted to skip the wait <#6b7280>({votes}/{need})"
  skip-already: "<#9ca3af>You already voted to skip."
  skip-passed: "<gradient:#10b981:#34d399>✓ Skip vote passed.</gradient> <#9ca3af>Ending the wait."
  not-in-lobby: "<#ef4444>✘ You are not in a dungeon lobby."
  not-waiting: "<#9ca3af>You can only ready or skip while the waiting timer is running."
  spectators-cannot-vote: "<#9ca3af>Spectators cannot ready or skip."
  spectate-joined: "<gradient:#06b6d4:#3b82f6>✓ Spectating <#fbbf24>{room}</#fbbf24>.</gradient> <#9ca3af>Type /sf leave to exit."
  spectate-broadcast: "<#9ca3af>{player} is spectating this run."
  spectate-no-session: "<#ef4444>✘ That room has no active session to spectate."
  spectate-unavailable: "<#ef4444>✘ You cannot spectate this room right now."
  spectate-full: "<#ef4444>✘ Spectator slots are full.</#ef4444> <#9ca3af>({max} max)"
  reconnect-hold: "<#9ca3af>{player} disconnected. Holding their slot for <#fbbf24>{seconds}s</#fbbf24>."
  reconnect-success: "<gradient:#10b981:#34d399>✓ Reconnected to <#fbbf24>{room}</#fbbf24>.</gradient>"
  reconnect-broadcast: "<gradient:#10b981:#34d399>✓ {player} reconnected.</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>Harder challenges can grant extra reward table rolls."
  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} rolls)</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>Normal roll count <#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-spectators: "<#9ca3af>Spectators cannot vote on a weakness."
  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 roll 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>Normal reward roll count. No challenge modifier."
  result-footer: "<gradient:#3b3b3b:#1a1a1a>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"

  # Active weakness display ──────────────────────────
  applied: "<gradient:#ef4444:#dc2626>☠ Weakness active:</gradient> {name} <#6b7280>(x{multiplier} reward rolls)"

# ═════════════════════════════════════════════════════════════════
#  ROOM - Join/leave/list commands
# ═════════════════════════════════════════════════════════════════
room:
  left-session: "<gradient:#10b981:#34d399>✓ You have left the room session.</gradient>"
  no-exit-point: "<#fbbf24>⚠ No exit point set for this room.</#fbbf24> <#9ca3af>Re-edit and mark exit with the wand."
  not-in-session: "<gradient:#ef4444:#dc2626>✘ You are not in a room session!</gradient>"
  room-in-use: "<gradient:#ef4444:#dc2626>✘ Cannot delete this room while a session is active.</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>Floors: <#d1d5db>{floors}"
  welcome-locked: "<#9ca3af>{free} free floors, {locked} locked. The host can buy access in the lobby."
  welcome-mobs: "<#9ca3af>Estimated enemies: <gradient:#ef4444:#dc2626>~{mobs}</gradient>"
  welcome-difficulty: "<#9ca3af>Difficulty: {difficulty}"
  welcome-luck: "<gradient:#10b981:#34d399>Good luck.</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 list</gradient> <#9ca3af>to see all rooms"
  list-footer: "<gradient:#f59e0b:#fbbf24>━━━━━━━━━━━━━━━━━━━━━</gradient>"
  list-join-hint: "<#9ca3af>Click a room to join, or type <gradient:#f59e0b:#fbbf24>/sf join <room></gradient>"

  # 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 join <room></gradient> <#6b7280>• <#9ca3af>Join a room"
  help-spectate: "<gradient:#06b6d4:#3b82f6>/sf spectate <room></gradient> <#6b7280>• <#9ca3af>Watch without taking a fighter slot"
  help-ready: "<gradient:#f59e0b:#fbbf24>/sf ready</gradient> <#6b7280>• <#9ca3af>Toggle ready in the waiting lobby"
  help-skip: "<gradient:#f59e0b:#fbbf24>/sf skip</gradient> <#6b7280>• <#9ca3af>Vote to end the waiting timer early"
  help-quickjoin: "<gradient:#10b981:#34d399>/sf quickjoin</gradient> <#6b7280>• <#9ca3af>Join any open room (or queue if full)"
  help-list: "<gradient:#06b6d4:#3b82f6>/sf list</gradient> <#6b7280>• <#9ca3af>List all rooms"
  help-start: "<gradient:#f59e0b:#fbbf24>/sf start</gradient> <#6b7280>• <#9ca3af>Host: start the lobby when auto-start is off"
  help-leave: "<gradient:#06b6d4:#3b82f6>/sf leave</gradient> <#6b7280>• <#9ca3af>Leave room or leave the queue"
  help-info: "<gradient:#06b6d4:#3b82f6>/sf info <room></gradient> <#6b7280>• <#9ca3af>View room details"
  help-delete: "<gradient:#ef4444:#dc2626>/sf delete <room></gradient> <#6b7280>• <#9ca3af>Delete a room"
  help-footer: "<gradient:#3b3b3b:#1a1a1a>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"

# ═════════════════════════════════════════════════════════════════
#  JOIN SIGNS
# ═════════════════════════════════════════════════════════════════
sign:
  created: "<gradient:#10b981:#34d399>✓ Join sign created for '<gradient:#f59e0b:#fbbf24>{room}</gradient>'.</gradient>"
  removed: "<gradient:#10b981:#34d399>✓ Join sign for '<gradient:#f59e0b:#fbbf24>{room}</gradient>' removed.</gradient>"
  unknown-room: "<gradient:#ef4444:#dc2626>✘ Unknown room '<#fbbf24>{room}</#fbbf24>'.</gradient> <#9ca3af>Use /sf list."
  no-permission: "<gradient:#ef4444:#dc2626>✘ No permission to create join signs.</gradient>"
  break-denied: "<gradient:#ef4444:#dc2626>✘ You can't break this join sign.</gradient> <#9ca3af>Needs <gradient:#f59e0b:#fbbf24>soapsfloor.admin.sign.break</gradient>"

# ═════════════════════════════════════════════════════════════════
#  QUICK JOIN / QUEUE
# ═════════════════════════════════════════════════════════════════
queue:
  disabled: "<gradient:#ef4444:#dc2626>✘ Quick join is disabled.</gradient>"
  no-rooms: "<gradient:#ef4444:#dc2626>✘ No rooms available to join right now.</gradient>"
  joined: "<gradient:#10b981:#34d399>✓ Queued!</gradient> <#9ca3af>Position <gradient:#f59e0b:#fbbf24>{position}/{total}</gradient>"
  already: "<#9ca3af>Already in queue. Position <gradient:#f59e0b:#fbbf24>{position}/{total}</gradient>"
  left: "<gradient:#10b981:#34d399>✓ Left the queue.</gradient>"
  leave-hint: "<#9ca3af>Use <gradient:#f59e0b:#fbbf24>/sf leave</gradient> <#9ca3af>to leave the queue."
  matched: "<gradient:#10b981:#34d399>✓ Spot found!</gradient> <#9ca3af>Joining <gradient:#f59e0b:#fbbf24>{room}</gradient>..."
  position-update: "<#9ca3af>Queue position: <gradient:#f59e0b:#fbbf24>{position}/{total}</gradient>"
  timeout: "<gradient:#ef4444:#dc2626>✘ Removed from queue</gradient> <#9ca3af>(timed out). Use /sf quickjoin again."
  full-hint: "<#9ca3af>Use <gradient:#10b981:#34d399>/sf quickjoin</gradient> <#9ca3af>to queue for the next open spot."

# ═════════════════════════════════════════════════════════════════
#  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, /sf version"
  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 list</gradient> <#9ca3af>to see available rooms."
  already-in-session: "<gradient:#ef4444:#dc2626>✘ You are already in a room session!</gradient>"
  already-in-session-hint: "<#9ca3af>Use <gradient:#f59e0b:#fbbf24>/sf leave</gradient> <#9ca3af>to leave your current session."
  in-editor: "<gradient:#ef4444:#dc2626>✘ Finish the wand editor first.</gradient>"
  in-editor-hint: "<#9ca3af>Type <#10b981>done</#10b981> / <#fbbf24>/sf wand finish</#fbbf24> to save, or <#ef4444>/sf wand cancel</#ef4444> to discard."
  room-session-active: "<gradient:#ef4444:#dc2626>✘ Cannot edit '<#fbbf24>{room}</#fbbf24>' while a run is active.</gradient>"
  room-being-edited: "<gradient:#ef4444:#dc2626>✘ '<#fbbf24>{room}</#fbbf24>' is open in the wand editor.</gradient> <#9ca3af>Try again after they finish."
  session-ending: "<gradient:#ef4444:#dc2626>✘ This run is finishing or celebrating.</gradient> <#9ca3af>Wait for it to clear, then join again."
  session-in-progress: "<gradient:#ef4444:#dc2626>✘ Session already started!</gradient> <#9ca3af>Join-in-progress is disabled"
  editor-no-floors: "<gradient:#ef4444:#dc2626>✘ Add floors before configuring!</gradient>"
  unknown-setting: "<gradient:#ef4444:#dc2626>✘ Unknown setting: <#fbbf24>{setting}</gradient>"
  delete-usage: "<gradient:#ef4444:#dc2626>✘ Usage:</gradient> <gradient:#f59e0b:#fbbf24>/sf delete <room></gradient>"
  command-blocked: "<gradient:#ef4444:#dc2626>You cannot use that command during a dungeon run.</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-floor-settings: "<gradient:#38bdf8:#818cf8>⚙ Floor Editor</gradient>"
  item-room-settings: "<gradient:#fbbf24:#f59e0b>★ Room Settings</gradient>"
  item-falling-hazard: "<#ef4444>Falling Hazard"
  item-rising-flood: "<#38bdf8>Rising Flood"
  hazard-enabled: "<gradient:#10b981:#34d399>✓ Falling hazard:</gradient> <#fbbf24>Enabled"
  hazard-disabled: "<gradient:#10b981:#34d399>✓ Falling hazard:</gradient> <#9ca3af>Disabled"
  flood-enabled: "<gradient:#10b981:#34d399>✓ Rising flood:</gradient> <#fbbf24>Enabled"
  flood-disabled: "<gradient:#10b981:#34d399>✓ Rising flood:</gradient> <#9ca3af>Disabled"
  particle-input-title: "<gradient:#ef4444:#fbbf24>Hazard particle</gradient>"
  particle-input-current: "<#9ca3af>Current: <#fbbf24>{particle}"
  particle-input-hint: "<#9ca3af>Type a Bukkit particle name (e.g. <#fbbf24>FLAME</#fbbf24>, <#fbbf24>SOUL_FIRE_FLAME</#fbbf24>)."
  particle-input-cancel: "<#6b7280>Type '<gradient:#ef4444:#dc2626>cancel</gradient>' to abort"
  particle-input-cancelled: "<#9ca3af>Particle input cancelled."
  particle-input-invalid: "<gradient:#ef4444:#dc2626>✘ Unknown particle '</gradient><#fbbf24>{particle}</#fbbf24><gradient:#ef4444:#dc2626>'.</gradient>"
  particle-input-set: "<gradient:#10b981:#34d399>✓ Particle set to <#fbbf24>{particle}</#fbbf24>.</gradient>"
  ladder-support-input-title: "<gradient:#38bdf8:#0ea5e9>Ladder support block</gradient>"
  ladder-support-input-current: "<#9ca3af>Current: <#fbbf24>{material}"
  ladder-support-input-hint: "<#9ca3af>Type a solid block material (e.g. <#fbbf24>STONE</#fbbf24>, <#fbbf24>SPRUCE_PLANKS</#fbbf24>)."
  ladder-support-input-cancel: "<#6b7280>Type '<gradient:#ef4444:#dc2626>cancel</gradient>' to abort"
  ladder-support-input-cancelled: "<#9ca3af>Ladder support input cancelled."
  ladder-support-input-invalid: "<gradient:#ef4444:#dc2626>✘ '</gradient><#fbbf24>{material}</#fbbf24><gradient:#ef4444:#dc2626>' is not a solid block.</gradient>"
  ladder-support-input-set: "<gradient:#10b981:#34d399>✓ Ladder support set to <#fbbf24>{material}</#fbbf24>.</gradient>"
  floor-settings-no-session: "<gradient:#ef4444:#dc2626>✘ Open Floor Editor while editing a room.</gradient>"
  floor-settings-made-free: "<gradient:#10b981:#34d399>✓ Floor {floor} is free. No access cost.</gradient>"
  floor-settings-applied: "<gradient:#10b981:#34d399>✓ Floor {floor} access cost set to <#fbbf24>{cost}</#fbbf24>.</gradient>"
  floor-settings-need-free: "<gradient:#ef4444:#dc2626>✘ Add at least one free floor before any locked floors.</gradient>"

  # Activation ────────────────────────────────────────
  # Keep colors sparse: gold step numbers, gray body, one accent for the main action word.
  activated-header: ""
  activated-title: "<gradient:#d946ef:#ec4899>Editor</gradient> <#6b7280>·</#6b7280> <gradient:#f59e0b:#fbbf24>{room}</gradient>"
  activated-room: "<#9ca3af>Build in order. Watch the action bar for the current step."
  activated-steps-header: ""
  activated-steps: ""
  activated-steps-gui: ""
  activated-step-1: "<#fbbf24>1)</#fbbf24> <#9ca3af>Starter. Left and right click the wand for corners. Shift+Click clears."
  activated-step-2: "<#fbbf24>2)</#fbbf24> <#9ca3af>Spawns. Entry (run start), optional lobby (type skip), then exit."
  activated-step-3: "<#fbbf24>3)</#fbbf24> <#9ca3af>Floors. Chat: <#fbbf24><schematic> <n|#-#></#fbbf24> or <#d946ef>pack:<id> <n></#d946ef>"
  activated-step-3-gui: "<#fbbf24>3)</#fbbf24> <#9ca3af>Floors. Shift+Right-click the wand to open schematics and packs."
  activated-step-4: "<#fbbf24>4)</#fbbf24> <#9ca3af>Hotbar. Floor Editor, Falling Hazard / flood, Room Settings."
  activated-step-5: "<#fbbf24>5)</#fbbf24> <#9ca3af>Save with <#10b981>done</#10b981> or <#fbbf24>/sf wand finish</#fbbf24>. <#ef4444>cancel</#ef4444> discards."
  activated-help: "<#9ca3af>Drop: floors fall after clear. Climb: Direction Up, optional flood and enclosure."
  activated-footer: "<#6b7280>After save: <#fbbf24>/sf info {room}</#fbbf24>"

  # Deactivation ─────────────────────────────────────
  deactivated-header: ""
  deactivated-title: "<gradient:#ec4899:#d946ef>Editor off</gradient>"
  deactivated-saved: "<gradient:#10b981:#34d399>✓</gradient> <#9ca3af>Saved <gradient:#f59e0b:#fbbf24>{room}</gradient> · <#fbbf24>/sf join {room}</#fbbf24>"
  deactivated-usage: ""
  deactivated-cancelled: "<gradient:#ef4444:#991b1b>✘ Cancelled.</gradient> <#9ca3af>Nothing was saved."
  deactivated-no-changes: ""
  deactivated-footer: ""

  # Actionbar Hints ──────────────────────────────────
  hint-pos1: "<#fbbf24>[Editor] <#9ca3af>Left-click the wand to set Position 1. Shift+Click clears corners."
  hint-pos2: "<#fbbf24>[Editor] <#9ca3af>Right-click the wand to set Position 2. Shift+Click clears corners."
  hint-entry: "<#fbbf24>[Editor] <#9ca3af>Right-click the entry spawn (run start). Shift+Click clears starter corners."
  hint-lobby: "<#fbbf24>[Editor] <#9ca3af>Right-click a lobby wait spawn, or type skip. Shift+Click clears the starter."
  hint-exit: "<#fbbf24>[Editor] <#9ca3af>Right-click the exit spawn. Shift+Click clears starter corners."
  hint-floors: "<#fbbf24>[Editor] <#9ca3af>Type <schematic> <n> or pack:<id> <n>"
  hint-floors-gui: "<#fbbf24>[Editor] <#9ca3af>Shift + Right Click the wand to browse schematics and packs"
  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"
  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}"

  # 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 (start + floor drop): <gradient:#f59e0b:#fbbf24>{seconds} seconds</gradient>"
  settings-auto-start: "  <#9ca3af>Auto-start: <gradient:#f59e0b:#fbbf24>{status}</gradient>"
  settings-pvp: "  <#9ca3af>PvP: <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-keep-inventory: "  <#9ca3af>Keep Inventory on Death: <gradient:#f59e0b:#fbbf24>{status}</gradient>"
  settings-keep-experience: "  <#9ca3af>Keep Experience on Death: <gradient:#f59e0b:#fbbf24>{status}</gradient>"
  settings-lives: "  <#9ca3af>Party Lives: <gradient:#f59e0b:#fbbf24>{lives}</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-vanilla-title: "<gradient:#10b981:#34d399>Vanilla Hostile Mobs (Click to select):</gradient>"

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

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

# ═════════════════════════════════════════════════════════════════
#  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"
  finish: "<gradient:#f59e0b:#fbbf24>/sf finish</gradient> <#6b7280>• <#9ca3af>Save and exit editor (alias)"
  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"
  schematics: "<gradient:#f59e0b:#fbbf24>/sf schematics</gradient> <#6b7280>• <#9ca3af>Browse and paste schematics"
  schematics-pack: "<gradient:#d946ef:#ec4899>/sf schematics pack</gradient> <#6b7280>• <#9ca3af>Create and edit weighted packs"
  room-join: "<gradient:#06b6d4:#3b82f6>/sf join <room></gradient> <#6b7280>• <#9ca3af>Join a room"
  room-spectate: "<gradient:#06b6d4:#3b82f6>/sf spectate <room></gradient> <#6b7280>• <#9ca3af>Watch without taking a fighter slot"
  room-ready: "<gradient:#f59e0b:#fbbf24>/sf ready</gradient> <#6b7280>• <#9ca3af>Toggle ready in the waiting lobby"
  room-skip: "<gradient:#f59e0b:#fbbf24>/sf skip</gradient> <#6b7280>• <#9ca3af>Vote to end the waiting timer early"
  room-quickjoin: "<gradient:#10b981:#34d399>/sf quickjoin</gradient> <#6b7280>• <#9ca3af>Join any open room (or queue if full)"
  room-start: "<gradient:#f59e0b:#fbbf24>/sf start</gradient> <#6b7280>• <#9ca3af>Host: start the lobby when auto-start is off"
  room-list: "<gradient:#06b6d4:#3b82f6>/sf list</gradient> <#6b7280>• <#9ca3af>List all rooms"
  room-info: "<gradient:#06b6d4:#3b82f6>/sf info <room></gradient> <#6b7280>• <#9ca3af>Room details"
  room-leave: "<gradient:#06b6d4:#3b82f6>/sf leave</gradient> <#6b7280>• <#9ca3af>Leave room or leave the queue"
  lives: "<gradient:#06b6d4:#3b82f6>/sf lives</gradient> <#6b7280>• <#9ca3af>Show shared party lives for your run"
  version: "<gradient:#06b6d4:#3b82f6>/sf version</gradient> <#6b7280>• <#9ca3af>Show plugin version"
  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"
  setreward: "<gradient:#f59e0b:#fbbf24>/sf setreward <room> <table|none></gradient> <#6b7280>• <#9ca3af>Assign a reward table"
  rewards: "<gradient:#f59e0b:#fbbf24>/sf rewards list|info|test <table></gradient> <#6b7280>• <#9ca3af>Inspect or dry-run reward tables"
  footer: "<gradient:#3b3b3b:#1a1a1a>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"

# ═════════════════════════════════════════════════════════════════
#  REWARDS - Table payout and admin inspect
# ═════════════════════════════════════════════════════════════════
rewards:
  # Empty this string to hide the post-clear roll summary.
  roll-summary: "<#9ca3af>Table rolls: <#fbbf24>{rolls}</#fbbf24> <#6b7280>(x{multiplier}) · </#6b7280><#d1d5db>{grants}"
  list-header: "<gradient:#f59e0b:#fbbf24><bold>Reward tables</bold></gradient>"
  list-empty: "<#9ca3af>No tables found in rewards.yml."
  list-entry: "  <#fbbf24>{table}</#fbbf24> <#6b7280>·</#6b7280> <#9ca3af>{detail}"
  info-missing: "<gradient:#ef4444:#dc2626>✘ Reward table '{table}' was not found.</gradient>"
  info-header: "<gradient:#f59e0b:#fbbf24><bold>Table '{table}'</bold></gradient>"
  info-rolls: "  <#9ca3af>Rolls: <#fbbf24>{rolls}</#fbbf24> <#6b7280>{unique}"
  info-append: "  <#9ca3af>Append to global: <#fbbf24>{append}</#fbbf24>"
  info-counts: "  <#9ca3af>Always: <#fbbf24>{always}</#fbbf24> <#6b7280>·</#6b7280> <#9ca3af>Weighted: <#fbbf24>{weighted}</#fbbf24> <#6b7280>(total weight {weight})"
  info-entry: "  <#6b7280>#{index}</#6b7280> <#9ca3af>{detail}"
  set-cleared: "<gradient:#10b981:#34d399>✓ Cleared the reward table for room '{room}'.</gradient>"
  set-ok: "<gradient:#10b981:#34d399>✓ Room '{room}' now uses reward table '<#fbbf24>{table}</#fbbf24>'.</gradient>"
  set-missing: "<gradient:#ef4444:#dc2626>✘ Reward table '{table}' was not found.</gradient>"
  available: "<#9ca3af>Available tables: <#fbbf24>{tables}</#fbbf24>"
  usage-set: "<gradient:#ef4444:#dc2626>✘ Usage: /sf setreward <room> <table|none></gradient>"
  usage-rewards: "<gradient:#ef4444:#dc2626>✘ Usage: /sf rewards list|info <table>|test <table> [player] [times]</gradient>"
  test-header: "<gradient:#f59e0b:#fbbf24><bold>Dry-run '{table}'</bold></gradient> <#9ca3af>as <#fbbf24>{player}</#fbbf24> ×{times} <#6b7280>(commands are not run)"
  test-run: "  <#6b7280>#{run}</#6b7280> <#9ca3af>weighted {weighted}:</#9ca3af> <#d1d5db>{grants}"
  test-run-empty: "  <#6b7280>#{run}</#6b7280> <#9ca3af>weighted {weighted}:</#9ca3af> <#6b7280>(nothing)"
  test-footer: "<#6b7280>Assumes first clear, party size 1, 1 floor, and 0 kills. The subject player’s permissions still apply."
  test-player-missing: "<gradient:#ef4444:#dc2626>✘ Player '{player}' is not online.</gradient>"

# ═════════════════════════════════════════════════════════════════
#  VERSION - /sf version
# ═════════════════════════════════════════════════════════════════
version:
  info: "<gradient:#f59e0b:#fbbf24>SoapsFloor</gradient> <#9ca3af>v<#fbbf24>{version}</#fbbf24>"

# ═════════════════════════════════════════════════════════════════
#  SCHEMATIC PACKS - Weighted floor schematic pools
# ═════════════════════════════════════════════════════════════════
schematic-pack:
  created: "<gradient:#d946ef:#ec4899>✓ Created pack '<#fbbf24>{pack}</#fbbf24>'.</gradient> <#9ca3af>Set a play style, add floor schematics, then save."
  stair-created: "<#38bdf8>✓ Created stair pack '<#fbbf24>{pack}</#fbbf24>'.</#38bdf8> <#9ca3af>Add stairs, then save. Climb height is set from each schematic."
  editing: "<gradient:#d946ef:#ec4899>✓ Editing pack '<#fbbf24>{pack}</#fbbf24>'.</gradient>"
  saved: "<gradient:#10b981:#34d399>✓ Saved pack '<#fbbf24>{pack}</#fbbf24>'</gradient> <#9ca3af>with {count} schematics."
  deleted: "<gradient:#10b981:#34d399>✓ Deleted pack '<#fbbf24>{pack}</#fbbf24>'.</gradient>"
  delete-blocked: "<gradient:#ef4444:#dc2626>✘ Cannot delete pack '<#fbbf24>{pack}</#fbbf24>'.</gradient> <#9ca3af>It is used by: {rooms}"
  cancelled: "<#9ca3af>Pack edit cancelled. Nothing was saved."
  create-cancelled: "<#9ca3af>Pack create cancelled."
  stair-create-cancelled: "<#9ca3af>Returned to your room pack. Stair pack changes were not saved."
  stair-linked: "<#38bdf8>✓ Linked stair pack '<#fbbf24>{pack}</#fbbf24>' to this room pack."
  prompt-id: "<#9ca3af>Type a pack id in chat, or <#fbbf24>cancel</#fbbf24> to stop."
  prompt-stair-id: "<#9ca3af>Type a stair pack id in chat, or <#fbbf24>cancel</#fbbf24> to stop."
  prompt-rename: "<#9ca3af>Rename '<#fbbf24>{pack}</#fbbf24>'. Type a new id in chat, or <#fbbf24>cancel</#fbbf24>."
  renamed: "<#38bdf8>✓ Renamed pack '<#fbbf24>{old}</#fbbf24>' → '<#fbbf24>{pack}</#fbbf24>'."
  rename-cancelled: "<#9ca3af>Pack rename cancelled."
  too-few: "<#ef4444>✘ This pack needs at least {min} schematics. It currently has {count}."
  applied-style: "<#9ca3af>{summary}"
  added: "<gradient:#d946ef:#ec4899>✓ Added '<#fbbf24>{schematic}</#fbbf24>'</gradient> <#9ca3af>at weight {weight} ({percent}% chance). {count} in pack."
  added-stair: "<#38bdf8>✓ Added '<#fbbf24>{schematic}</#fbbf24>'</#38bdf8> <#9ca3af>at weight {weight}, climb height {height} ({percent}% chance). {count} in pack."
  footprint-too-large: "<gradient:#ef4444:#dc2626>✘ Pack '{pack}' is {packW}x{packL}</gradient> <#9ca3af>but the starter is {starterW}x{starterL} (width by length). Enlarge the starter or use a smaller pack."
  weight-updated: "<gradient:#d946ef:#ec4899>✓ '{schematic}' weight set to {weight}</gradient> <#9ca3af>({percent}% chance)."
  controls: "<#9ca3af>Pack <gradient:#d946ef:#ec4899>{pack}</gradient> <#6b7280>| <click:run_command:/sf schematics pack browser><hover:show_text:'<#fbbf24>Add schematics'><gradient:#06b6d4:#3b82f6>[add]</gradient></hover></click> <click:run_command:/sf schematics pack menu><hover:show_text:'<#fbbf24>Open weight menu'><gradient:#d946ef:#ec4899>[menu]</gradient></hover></click> <click:run_command:/sf schematics pack save><hover:show_text:'<#10b981>Save pack'><#10b981>[save]</#10b981></hover></click> <click:run_command:/sf schematics pack cancel><hover:show_text:'<#ef4444>Discard changes'><#ef4444>[cancel]</#ef4444></hover></click>"
  size-mismatch: "<gradient:#ef4444:#dc2626>✘ Size mismatch.</gradient> <#9ca3af>Pack is <#fbbf24>{packW}x{packL}</#fbbf24>, but '<#fbbf24>{schematic}</#fbbf24>' is <#fbbf24>{schemW}x{schemL}</#fbbf24>. Floor packs need matching width and length."
  stair-too-large: "<gradient:#ef4444:#dc2626>✘ Stair too large.</gradient> <#9ca3af>'<#fbbf24>{schematic}</#fbbf24>' is <#fbbf24>{schemW}x{schemL}</#fbbf24>, but this room pack fits stairs up to <#fbbf24>{roomW}x{roomL}</#fbbf24>. Use a smaller stair or a larger room."
  no-edit-session: "<#ef4444>✘ You are not editing a pack.</#ef4444> <#9ca3af>Run /sf schematics pack create or /sf schematics pack edit with a pack id."
  not-found-schematic: "<gradient:#ef4444:#dc2626>✘ Schematic not found:</gradient> <#fbbf24>{schematic}"
  add-failed: "<gradient:#ef4444:#dc2626>✘ {error}</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"

# ═════════════════════════════════════════════════════════════════
#  LOCKED FLOORS - Lobby access purchases
# ═════════════════════════════════════════════════════════════════
unlock:
  host-assigned: "<gradient:#10b981:#34d399>✓ You are the host</gradient> <#9ca3af>for this run."
  host-transferred: "<gradient:#f59e0b:#fbbf24>★ You are now the host.</gradient> <#9ca3af>You can buy access to locked floors."
  host-transferred-broadcast: "<#9ca3af>{player} is now the host."
  host-start-hint: "<#9ca3af>As host, run <gradient:#f59e0b:#fbbf24>/sf start</gradient> <#9ca3af>when your party is ready."
  host-started: "<gradient:#10b981:#34d399>✓ Lobby started.</gradient>"
  lobby-host-hint: "<#9ca3af>This room has locked floors. Buy deeper access in the menu before the lobby locks. Unbought floors are skipped."
  lobby-guest-hint: "<#9ca3af>This room has locked floors. The host can buy deeper access while you wait. Unbought floors are skipped."
  lobby-closed: "<gradient:#ef4444:#dc2626>✘ The lobby menu is not open right now.</gradient>"
  not-host: "<gradient:#ef4444:#dc2626>✘ Only the host can buy floor access.</gradient>"
  already-started: "<gradient:#ef4444:#dc2626>✘ This run has already started, or the lobby is locked.</gradient>"
  none-left: "<#9ca3af>There are no more locked floors to open."
  economy-unavailable: "<gradient:#ef4444:#dc2626>✘ That currency is unavailable.</gradient> <#9ca3af>Check SoapsAdmin, Vault, or SoapsQuest, or change the currency in Floor Settings."
  cannot-afford: "<gradient:#ef4444:#dc2626>✘ You cannot afford this floor.</gradient> <#9ca3af>Cost: {cost}"
  unlocked: "<gradient:#10b981:#34d399>✓ {host} opened Floor {floor}</gradient> <#9ca3af>for {cost}."
  no-playable-floors: "<gradient:#ef4444:#dc2626>✘ No floors are available for this run.</gradient> <#9ca3af>Buy locked floor access in the lobby next time."

# ═════════════════════════════════════════════════════════════════
#  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>"

# ═════════════════════════════════════════════════════════════════
#  CLIMB - Upward tower + rising flood
# ═════════════════════════════════════════════════════════════════
climb:
  segment-revealed: "<gradient:#38bdf8:#0ea5e9>✓ Floor <#fbbf24>{floor}</#fbbf24> is now open above you!</gradient>"
  flood-started: "<gradient:#ef4444:#dc2626>⚠ The flood is rising!</gradient> <#9ca3af>Climb higher. Do not let it pass your head!"

# ═════════════════════════════════════════════════════════════════
#  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 (paste is still full).</#f59e0b>"
  too-large: "<gradient:#ef4444:#dc2626>✘ Schematic has {total} blocks but preview is disabled (max {max}).</gradient> <#9ca3af>Raise <white>editor-mode.schematic-preview-max-blocks</white> or paste with WorldEdit."
  actionbar: "<gradient:#d946ef:#ec4899>📐 {schematic}</gradient> <#9ca3af>| Dist <white>{distance}</white> | Rot <white>{rotation}°</white>{ylock} | @{x},{y},{z} {loading}{overlap} | Scroll Wheel = distance · type <white>done</white> / <white>cancel</white>"
  actionbar-loading: "<#fbbf24>Loading {percent}%</#fbbf24> "
  actionbar-overlap: "<#ef4444>⚠ Overlap {percent}%</#ef4444> "
  actionbar-undo: "<#9ca3af>Paste done - type <#fbbf24>undo</#fbbf24> to revert"
  controls: "<#9ca3af>Controls: <click:run_command:/sf schematics rotate 90><hover:show_text:'<#d946ef>Rotate 90°'><gradient:#d946ef:#ec4899>[90°]</gradient></hover></click> <click:run_command:/sf schematics rotate 180><hover:show_text:'<#d946ef>Rotate 180°'><gradient:#d946ef:#ec4899>[180°]</gradient></hover></click> <click:run_command:/sf schematics rotate 270><hover:show_text:'<#d946ef>Rotate 270°'><gradient:#d946ef:#ec4899>[270°]</gradient></hover></click> <#6b7280>| <click:run_command:/sf schematics done><hover:show_text:'<#fbbf24>Paste schematic'><#fbbf24>[done]</#fbbf24></hover></click> <click:run_command:/sf schematics cancel><hover:show_text:'<#ef4444>Cancel preview'><#ef4444>[cancel]</#ef4444></hover></click> <click:suggest_command:'/sf schematics dist '><hover:show_text:'<#fbbf24>Set distance'><#fbbf24>[dist]</#fbbf24></hover></click> <click:run_command:/sf schematics ylock><hover:show_text:'<#fbbf24>Toggle Y lock'><#fbbf24>[ylock]</#fbbf24></hover></click>"
  distance-set: "<gradient:#d946ef:#ec4899>✓ Distance set to {distance}</gradient>"
  distance-clamped: "<#f59e0b>⚠ Distance clamped to {distance} (min {min}, max {max})</#f59e0b>"
  ylock-on: "<gradient:#d946ef:#ec4899>✓ Y locked</gradient> <#9ca3af>at Y={y} - look still moves X/Z. Type <#fbbf24>ylock</#fbbf24> again to unlock."
  ylock-off: "<#9ca3af>Y lock off - placement follows look direction fully again."
  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>"

Still stuck? Ask about this page