Default messages.yml
Last updated Oct 28, 2026
Default messages.yml
Shipped defaults from SoapsTeleporter 1.0.7. After first run, this file lives in plugins/SoapsTeleporter/.
Updating the jar does not overwrite your live copy. Use this page to compare or reset.
See also: Config Reference · Configuration
# ############################################
# # #
# # Plugin: SoapsTeleporter #
# # #
# # Created by AlternativeSoap #
# # Website: www.SoapsUniverse.com #
# # Support: https://discord.gg/mawAzwFq #
# # #
# ############################################
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ SoapsTeleporter - Messages Configuration ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
#
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ FORMATTING SUPPORT │
# └─────────────────────────────────────────────────────────────────────────────┘
# • MiniMessage Format (Adventure API)
# - Colors: <color:red>, <#FF5733>, <#hex>
# - Gradients: <gradient:red:blue:green>, <gradient:#FF5733:#33FF57>
# - Formatting: <bold>, <italic>, <underlined>, <strikethrough>, <obfuscated>
# - Hover: <hover:show_text:'Tooltip text here'>
# - Decorations: <rainbow>, <reset>
# - Legacy codes also supported: <red>, <yellow>, <green>, etc.
#
# • Multi-line Messages:
# message-name:
# - "First line of text"
# - "Second line of text"
# - "Third line of text"
#
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ COMMON PLACEHOLDERS │
# └─────────────────────────────────────────────────────────────────────────────┘
# Portal & Player:
# {portal}, {portal1}, {portal2} - Portal names
# {player} - Player name
# {time} - Time in seconds (cooldowns, warmup)
# {location} - Formatted location coordinates
#
# Economy & Items:
# {cost} - Cost amount (money or items)
# {amount} - Required/current item amount
# {item}, {material} - Item/material display name
# {has} - Amount player currently has
#
# Conditions:
# {required}, {current} - Required vs current values (level, health, food, world, biome, gamemode, etc.)
# {maximum} - Maximum allowed value
#
# Help & Commands:
# {command} - Command name
# {description} - Command description
# {page}, {total} - Page numbers for pagination
#
# Errors & Validation:
# {error} - Error message details
#
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ CLICK EVENTS PATTERN │
# └─────────────────────────────────────────────────────────────────────────────┘
# IMPORTANT: Interactive buttons do NOT use <click> tags in YAML
# • Display text is defined in messages.yml (visual appearance only)
# • Hover text uses separate hover keys (e.g., "hover-particle")
# • Click handlers are added programmatically in Java code
# • This prevents raw <click> tags from appearing in chat
#
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ MESSAGE DEFINITIONS ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
# =====================================
# GLOBAL PREFIX
# =====================================
prefix: "<gradient:#6C63FF:#A855F7>SoapsTeleporter</gradient> <dark_gray>»</dark_gray> "
# =====================================
# GENERAL
# =====================================
general:
no-permission: "<gradient:#ff4b1f:#ff0000>You don't have permission to do that.</gradient>"
player-only: "<gradient:#ff4b1f:#ff0000>This command can only be used by players.</gradient>"
config-reloaded: "<gradient:#00ff6a:#00d4ff>Configuration reloaded successfully.</gradient>"
# =====================================
# SELF-TEST
# =====================================
selftest:
header: "<gradient:#6C63FF:#A855F7>━━━ SoapsTeleporter Self-Test ━━━</gradient>"
footer: "<gradient:#6C63FF:#A855F7>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
all-passed: "<gradient:#00ff6a:#00d4ff>All checks passed!</gradient>"
some-failed: "<gradient:#ff4b1f:#ff0000>Some checks failed. See above for details.</gradient>"
config:
ok: "<gradient:#00ff6a:#00d4ff>✔ Config loaded successfully.</gradient>"
invalid: "<gradient:#ff4b1f:#ff0000>✘ Config has invalid entries: <#FFD700>{details}</#FFD700></gradient>"
error: "<gradient:#ff4b1f:#ff0000>✘ Config error: <#FFD700>{details}</#FFD700></gradient>"
messages:
ok: "<gradient:#00ff6a:#00d4ff>✔ Messages file loaded.</gradient>"
invalid: "<gradient:#ff4b1f:#ff0000>✘ Messages file has issues: <#FFD700>{details}</#FFD700></gradient>"
error: "<gradient:#ff4b1f:#ff0000>✘ Messages file error: <#FFD700>{details}</#FFD700></gradient>"
portal:
ok: "<gradient:#00ff6a:#00d4ff>✔ <#FFD700>{count}</#FFD700> portals loaded.</gradient>"
error: "<gradient:#ff4b1f:#ff0000>✘ Portal loading error: <#FFD700>{details}</#FFD700></gradient>"
particles:
ok: "<gradient:#00ff6a:#00d4ff>✔ Particle system running.</gradient>"
not-initialized: "<gradient:#ffa500:#ff6347>⚠ Particle system not initialized.</gradient>"
error: "<gradient:#ff4b1f:#ff0000>✘ Particle system error: <#FFD700>{details}</#FFD700></gradient>"
permissions:
ok: "<gradient:#00ff6a:#00d4ff>✔ Permissions system working.</gradient>"
invalid: "<gradient:#ffa500:#ff6347>⚠ Permissions issue: <#FFD700>{details}</#FFD700></gradient>"
error: "<gradient:#ff4b1f:#ff0000>✘ Permissions error: <#FFD700>{details}</#FFD700></gradient>"
files:
ok: "<gradient:#00ff6a:#00d4ff>✔ All data files present.</gradient>"
missing: "<gradient:#ff4b1f:#ff0000>✘ Missing files: <#FFD700>{details}</#FFD700></gradient>"
error: "<gradient:#ff4b1f:#ff0000>✘ File system error: <#FFD700>{details}</#FFD700></gradient>"
# =====================================
# PORTAL EVENTS
# =====================================
portal-events:
created: "<gradient:#00ff6a:#00d4ff>Portal </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#00ff6a:#00d4ff> created successfully!</gradient>"
removed: "<gradient:#ff6a00:#ff1a1a>Portal </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#ff6a00:#ff1a1a> has been removed.</gradient>"
teleporting: "<gradient:#00ffea:#00bfff>Teleporting via </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#00ffea:#00bfff>...</gradient>"
teleportation-failed: "<gradient:#ff4b1f:#ff0000>Teleportation failed. The destination may be unsafe.</gradient>"
exists: "<gradient:#ff4b1f:#ff0000>A portal with that name already exists.</gradient>"
overlap: "<gradient:#ff4b1f:#ff1a1a>Cannot create portal </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#ff4b1f:#ff1a1a> - it would overlap with an existing portal region.</gradient>"
disabled: "<gradient:#ff6a00:#ff1a1a>Portal </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#ff6a00:#ff1a1a> disabled.</gradient>"
enabled: "<gradient:#00ff6a:#00d4ff>Portal </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#00ff6a:#00d4ff> enabled.</gradient>"
linked: "<gradient:#00ff6a:#00d4ff>Portal </gradient><gradient:#f59e0b:#d97706>{portal1}</gradient><gradient:#00ff6a:#00d4ff> linked to </gradient><gradient:#f59e0b:#d97706>{portal2}</gradient><gradient:#00ff6a:#00d4ff>!</gradient>"
portal-reset: "<gradient:#00ff6a:#00d4ff>Portal </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#00ff6a:#00d4ff> has been reset to defaults.</gradient>"
condition-set: "<gradient:#00ff6a:#00d4ff>Condition <#FFD700>{condition}</#FFD700> set on <#FFD700>{portal}</#FFD700>.</gradient>"
condition-added: "<gradient:#00ff6a:#00d4ff>Condition </gradient><gradient:#f59e0b:#d97706>{condition}</gradient><gradient:#00ff6a:#00d4ff> added to portal </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#00ff6a:#00d4ff>!</gradient>"
condition-invalid: "<gradient:#ff4b1f:#ff0000>Invalid condition: <#FFD700>{condition}</#FFD700>.</gradient>"
condition-removed: "<gradient:#00ff6a:#00d4ff>Condition <#FFD700>{condition}</#FFD700> removed from <#FFD700>{portal}</#FFD700>.</gradient>"
condition-not-found: "<gradient:#ff4b1f:#ff0000>Condition <#FFD700>{condition}</#FFD700> not found on portal <#FFD700>{portal}</#FFD700>.</gradient>"
condition-item-set: "<gradient:#00ff6a:#00d4ff>Item condition set: <#FFD700>{amount}x {material}</#FFD700> on <#FFD700>{portal}</#FFD700>.</gradient>"
condition-item-added: "<gradient:#00ff6a:#00d4ff>Item condition added: <#FFD700>{amount}x {material}</#FFD700> on <#FFD700>{portal}</#FFD700>.</gradient>"
condition-item-invalid-amount: "<gradient:#ff4b1f:#ff0000>Invalid item amount. Must be a positive number.</gradient>"
condition-item-invalid-material: "<gradient:#ff4b1f:#ff0000>Invalid material type: <#FFD700>{material}</#FFD700>.</gradient>"
no-conditions-to-remove: "<gradient:#ff4b1f:#ff0000>Portal <#FFD700>{portal}</#FFD700> has no conditions to remove.</gradient>"
all-conditions-removed: "<gradient:#00ff6a:#00d4ff>All conditions removed from <#FFD700>{portal}</#FFD700>.</gradient>"
# Portal creation success messages (multi-line)
creation-success:
- "<gradient:#00ff6a:#00d4ff>Portal Created Successfully!</gradient>"
- "<gradient:#6b7280:#9ca3af>Portal: </gradient><gradient:#f59e0b:#d97706>{portal}</gradient>"
- "<gradient:#6b7280:#9ca3af>{particle_type} particle: </gradient><gradient:#a855f7:#9333ea>{particle}</gradient><gradient:#6b7280:#9ca3af>{particle_default}</gradient>"
- "<gradient:#6b7280:#9ca3af>Particle density: </gradient><gradient:#a855f7:#9333ea>{particle_count}</gradient>"
- "<gradient:#6b7280:#9ca3af>{sound_type} sound: </gradient><gradient:#a855f7:#9333ea>{sound}</gradient><gradient:#6b7280:#9ca3af>{sound_default}</gradient>"
- "<gradient:#87ceeb:#4682b4>{direction_type}: </gradient><gradient:#FFD700:#FFFF00>{direction_value}</gradient><gradient:#87ceeb:#4682b4>{direction_suffix}</gradient>"
- "{direction_note}"
- "<gradient:#87ceeb:#4682b4>Orientation: </gradient><gradient:#FFD700:#FFFF00>{orientation}</gradient>"
- ""
- "<gradient:#87ceeb:#4682b4>Portal ready! Use </gradient><gradient:#FFD700:#FFFF00>/st connect <target></gradient><gradient:#87ceeb:#4682b4> to link it.</gradient>"
- "<gradient:#87ceeb:#4682b4>Use </gradient><gradient:#FFD700:#FFFF00>/st setparticle {portal} <particle></gradient><gradient:#87ceeb:#4682b4> to change particles anytime.</gradient>"
- "<gradient:#87ceeb:#4682b4>Use </gradient><gradient:#FFD700:#FFFF00>/st setdirection {portal} <direction></gradient><gradient:#87ceeb:#4682b4> to change teleport direction.</gradient>"
- "<gradient:#87ceeb:#4682b4>Default permission </gradient><gradient:#FFD700:#FFFF00>{permission}</gradient><gradient:#87ceeb:#4682b4> assigned. Configure in portals.yml if needed.</gradient>"
# Particle effects
particle-effects-initialized: "<gradient:#00ff6a:#00d4ff>Particle effects initialized for portal </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#00ff6a:#00d4ff>!</gradient>"
# =====================================
# ECONOMY
# =====================================
economy:
disabled:
- "<gradient:#ff4b1f:#ff0000>⚠ Economy features are not available!</gradient>"
- ""
- "<gradient:#87ceeb:#4682b4> Requirements for economy features:</gradient>"
- "<gradient:#87ceeb:#4682b4> 1. Enable economy in config.yml (economy.enabled: true)</gradient>"
- "<gradient:#87ceeb:#4682b4> 2. Install Vault plugin on the server</gradient>"
- "<gradient:#87ceeb:#4682b4> 3. Install an economy plugin (EssentialsX, etc.)</gradient>"
- ""
- "<gradient:#87ceeb:#4682b4>Contact an administrator for assistance.</gradient>"
insufficient-money: "<gradient:#ff4b1f:#ff0000>You need <#FFD700>{cost}</#FFD700> to use this portal. You have <#FFD700>{balance}</#FFD700>.</gradient>"
insufficient-items: "<gradient:#ff4b1f:#ff0000>You need </gradient><gradient:#f59e0b:#d97706>{amount}x {item}</gradient><gradient:#ff4b1f:#ff0000> to use this portal.</gradient>"
payment-taken: "<gradient:#00ff6a:#00d4ff>Paid </gradient><gradient:#f59e0b:#d97706>{cost}</gradient><gradient:#00ff6a:#00d4ff> to use portal </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#00ff6a:#00d4ff>.</gradient>"
payment-failed: "<gradient:#ff4b1f:#ff0000>Payment failed. Teleport cancelled.</gradient>"
payment-rolled-back: "<gradient:#ff4b1f:#ff0000>Payment failed after teleport — you were returned to your previous location.</gradient>"
refunded: "<gradient:#87ceeb:#4682b4>Your portal payment was refunded.</gradient>"
cost-set: "<gradient:#00ff6a:#00d4ff>Cost for </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#00ff6a:#00d4ff> set to </gradient><gradient:#f59e0b:#d97706>{cost}</gradient><gradient:#00ff6a:#00d4ff>.</gradient>"
cost-set-custom-item: "<gradient:#00ff6a:#00d4ff>Cost for </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#00ff6a:#00d4ff> set to </gradient><gradient:#f59e0b:#d97706>{amount}x {item}</gradient><gradient:#00ff6a:#00d4ff>.</gradient>"
cost-disabled: "<gradient:#00ff6a:#00d4ff>Cost removed from </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#00ff6a:#00d4ff>.</gradient>"
hand-empty: "<gradient:#ef4444:#dc2626>✖ You must hold an item in your hand to set as the cost.</gradient>"
# =====================================
# ERRORS
# =====================================
errors:
portal-not-found: "<gradient:#ff4b1f:#ff1a1a>Portal </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#ff4b1f:#ff1a1a> was not found.</gradient>"
portal-cannot-use: "<gradient:#ff4b1f:#ff0000>You cannot use that portal.</gradient>"
invalid-usage: "<gradient:#ff4b1f:#ff0000>Invalid usage. Use </gradient><gradient:#22c55e:#16a34a>/st help</gradient><gradient:#ff4b1f:#ff0000> for help.</gradient>"
cross-world-positions: "<gradient:#ff4b1f:#ff0000>Both positions must be in the same world. Existing: <#FFD700>{existing_world}</#FFD700>, current: <#FFD700>{current_world}</#FFD700>.</gradient>"
cross-world-disabled: "<gradient:#ff4b1f:#ff0000>Cross-world teleportation is disabled (<#FFD700>{from}</#FFD700> → <#FFD700>{to}</#FFD700>).</gradient>"
removal-error: "<gradient:#ff4b1f:#ff0000>An error occurred while removing the portal.</gradient>"
move-start-error: "<gradient:#ff4b1f:#ff0000>An error occurred. Move mode was not started.</gradient>"
not-moving-portal: "<gradient:#ff4b1f:#ff0000>You are not currently moving a portal.</gradient>"
must-set-positions: "<gradient:#ff4b1f:#ff0000>You must set both positions first with the wand.</gradient>"
invalid-positions: "<gradient:#ff4b1f:#ff0000>Invalid positions. Ensure both positions are set correctly.</gradient>"
portal-move-failed: "<gradient:#ff4b1f:#ff0000>Failed to move portal.</gradient>"
move-confirm-error: "<gradient:#ff4b1f:#ff0000>An error occurred while confirming the move.</gradient>"
move-cancel-error: "<gradient:#ff4b1f:#ff0000>An error occurred while cancelling the move.</gradient>"
unknown-command: "<gradient:#ff4b1f:#ff0000>Unknown command. Use </gradient><gradient:#22c55e:#16a34a>/st help</gradient><gradient:#ff4b1f:#ff0000> for a list of commands.</gradient>"
command-error: "<gradient:#ff4b1f:#ff0000>An error occurred while executing the command.</gradient>"
portal-connection-failed: "<gradient:#ff4b1f:#ff0000>Failed to connect portals. Please try again.</gradient>"
portal-creation-error: "<gradient:#ff4b1f:#ff0000>An error occurred while creating the portal. Please try again.</gradient>"
portal-invalid-size: "<red>✖</red> <gray>Can't create</gray> <white>{portal}</white><dark_gray> — </dark_gray><gray>{error}</gray>"
portal-limit-reached: "<gradient:#ff4b1f:#ff0000>Cannot create portal <#FFD700>{portal}</#FFD700> - {error}</gradient>"
portal-different-worlds: "<gradient:#ff4b1f:#ff0000>Cannot create portal <#FFD700>{portal}</#FFD700> - both positions must be in the same world.</gradient>"
portal-general-error: "<gradient:#ff4b1f:#ff0000>Failed to create portal <#FFD700>{portal}</#FFD700>: {error}</gradient>"
no-positions: "<gradient:#ff4b1f:#ff0000>You must set both positions first. Use the wand (/st wand) or /st set p1 / /st set p2.</gradient>"
no-custom-blocks: "<gradient:#ff4b1f:#ff0000>No blocks selected. Enter custom shape mode (shift+right-click) and select blocks first.</gradient>"
not-enough-custom-blocks: "<gradient:#ff4b1f:#ff0000>You need at least 2 blocks for a custom shape portal.</gradient>"
invalid-custom-blocks: "<gradient:#ff4b1f:#ff0000>Some selected blocks are no longer valid. Please re-select them.</gradient>"
# =====================================
# PERMISSIONS
# =====================================
permissions:
portal-use: "<gradient:#ff4b1f:#ff0000>You don't have permission to use portal <#FFD700>{portal}</#FFD700>.</gradient>"
# =====================================
# ONE-WAY
# =====================================
oneway:
blocked: "<gradient:#ff4b1f:#ff0000>This portal is one-way and cannot be used from this side.</gradient>"
# =====================================
# WAND (Portal Selection Tool)
# =====================================
wand:
received: "<gradient:#a78bfa:#818cf8>Portal wand ready.</gradient> <gray>Right-click corners · Shift+right-click to switch mode</gray>"
already-have: "<gray>You already have the portal wand.</gray>"
both-positions-set: "<gradient:#34d399:#22d3ee>Corners locked.</gradient> <gray>Click an action below, or</gray> <aqua>/st add <name></aqua>"
positions-ready: "<gray>Selection ready —</gray> <aqua>/st add <name></aqua>"
shapepreview-hint: "<gray>Shape presets:</gray> <aqua>/st shapepreview</aqua> <dark_gray>rectangle · circle · oval · triangle · hexagon · random_rift</dark_gray>"
shapepreview-controls: "<gray>Then:</gray> <aqua>rotate</aqua><dark_gray> · </dark_gray><aqua>mirror</aqua><dark_gray> · </dark_gray><aqua>undo</aqua><dark_gray> · </dark_gray><aqua>place</aqua>"
display-name: "<gradient:#a78bfa:#c084fc><bold>Portal Wand</bold></gradient>"
lore:
- "<gray>Right-click a block to set a corner</gray>"
- "<gray>Shift+right-click clears or toggles custom mode</gray>"
- "<dark_purple>Empty selection + shift:</dark_purple> <gray>custom shape mode</gray>"
- "<dark_purple>Custom mode:</dark_purple> <gray>click blocks to build a frame</gray>"
selection-summary: "<gradient:#94a3b8:#cbd5e1>{size}</gradient> <dark_gray>·</dark_gray> <aqua>{air}</aqua> <gray>air blocks in selection</gray>"
selection-cancelled: "<gray>Selection cleared.</gray>"
nothing-to-cancel: "<dark_gray>Nothing to cancel.</dark_gray>"
# =====================================
# POSITIONS
# =====================================
positions:
position-set-1: "<gradient:#38bdf8:#818cf8>Corner A</gradient> <gray>→</gray> <white>{x}</white><dark_gray>,</dark_gray> <white>{y}</white><dark_gray>,</dark_gray> <white>{z}</white>"
position-set-2: "<gradient:#34d399:#2dd4bf>Corner B</gradient> <gray>→</gray> <white>{x}</white><dark_gray>,</dark_gray> <white>{y}</white><dark_gray>,</dark_gray> <white>{z}</white>"
position-1-next: "<gray>Now set</gray> <aqua>corner B</aqua> <dark_gray>(wand click or /st set p2)</dark_gray>"
positions-cleared: "<gray>Corners cleared.</gray>"
auto-cleared: "<dark_gray>Previous corners expired.</dark_gray>"
custom-shape-started: "<gradient:#c084fc:#a78bfa>Custom shape mode</gradient> <gray>— click blocks to build a frame. Shift+right-click to cancel.</gray>"
custom-shape-cancelled: "<gray>Custom shape cancelled.</gray>"
custom-block-added: "<light_purple>+</light_purple> <white>{x}</white><dark_gray>,</dark_gray><white>{y}</white><dark_gray>,</dark_gray><white>{z}</white> <dark_gray>({count})</dark_gray>"
custom-block-removed: "<red>−</red> <white>{x}</white><dark_gray>,</dark_gray><white>{y}</white><dark_gray>,</dark_gray><white>{z}</white> <dark_gray>({count})</dark_gray>"
custom-shape-ready: "<gradient:#34d399:#22d3ee>{count} frame blocks</gradient> <gray>— click an action, or</gray> <aqua>/st add <name></aqua>"
custom-blocks-cleared: "<gray>Frame cleared.</gray> <dark_gray>Shift+right-click again to exit custom mode.</dark_gray>"
custom-preview-legend: "<light_purple>Purple</light_purple> <gray>= frame outline</gray> <dark_gray>·</dark_gray> <gray>portal particles start after create</gray>"
# =====================================
# CONDITIONS
# =====================================
conditions:
portal-not-connected: "<red>✖</red> <gray>Portal</gray> <white>{portal}</white> <gray>isn't linked.</gray> <dark_gray>Use</dark_gray> <aqua>/st connect <a> <b></aqua>"
portal-disabled: "<red>✖</red> <gray>Portal</gray> <white>{portal}</white> <gray>is disabled.</gray>"
cooldown-active: "<gradient:#ff4b1f:#ff0000>You must wait <#FFD700>{time}</#FFD700> before using this portal again.</gradient>"
warmup-start: "<gradient:#ffa500:#ff6347>Teleporting in <#FFD700>{time}</#FFD700>... Don't move!</gradient>"
warmup-active: "<gradient:#ffa500:#ff6347>You are already warming up for a teleport.</gradient>"
warmup-continue: "<gradient:#87ceeb:#4682b4>Teleporting in <#FFD700>{time}</#FFD700>...</gradient>"
warmup-cancelled: "<gradient:#ff4b1f:#ff0000>Teleportation cancelled — you moved!</gradient>"
unsafe-destination: "<gradient:#ff4b1f:#ff0000>The destination is not safe. Teleportation cancelled.</gradient>"
required-condition: "<gradient:#ff4b1f:#ff0000>You don't meet the requirements: <#FFD700>{condition}</#FFD700>.</gradient>"
day-only: "<gradient:#ff4b1f:#ff0000>This portal can only be used during the day.</gradient>"
night-only: "<gradient:#ff4b1f:#ff0000>This portal can only be used during the night.</gradient>"
rain-only: "<gradient:#ff4b1f:#ff0000>This portal can only be used during rain.</gradient>"
thunder-only: "<gradient:#ff4b1f:#ff0000>This portal can only be used during a thunderstorm.</gradient>"
clear-weather-required: "<gradient:#ff4b1f:#ff0000>This portal can only be used during clear weather.</gradient>"
level-too-low: "<gradient:#ff4b1f:#ff0000>You need at least level <#FFD700>{required}</#FFD700> to use this portal (current: <#FFD700>{current}</#FFD700>).</gradient>"
level-too-high: "<gradient:#ff4b1f:#ff0000>Your level is too high — max <#FFD700>{maximum}</#FFD700> (current: <#FFD700>{current}</#FFD700>).</gradient>"
sneak-required: "<gradient:#ff4b1f:#ff0000>You must be sneaking to use this portal.</gradient>"
flying-required: "<gradient:#ff4b1f:#ff0000>You must be flying to use this portal.</gradient>"
solo-required: "<gradient:#ff4b1f:#ff0000>This portal can only be used when you are the only player online.</gradient>"
wrong-world: "<gradient:#ff4b1f:#ff0000>You must be in world <#FFD700>{required}</#FFD700> to use this portal.</gradient>"
wrong-biome: "<gradient:#ff4b1f:#ff0000>You must be in the <#FFD700>{required}</#FFD700> biome.</gradient>"
wrong-gamemode: "<gradient:#ff4b1f:#ff0000>You must be in <#FFD700>{required}</#FFD700> mode.</gradient>"
not-enough-items: "<gradient:#ff4b1f:#ff0000>You need at least <#FFD700>{required}</#FFD700> items to use this portal (you have <#FFD700>{current}</#FFD700>).</gradient>"
too-many-items: "<gradient:#ff4b1f:#ff0000>You have too many items — max <#FFD700>{maximum}</#FFD700> (you have <#FFD700>{current}</#FFD700>).</gradient>"
item-required: "<gradient:#ff4b1f:#ff0000>You must have <#FFD700>{item}</#FFD700> to use this portal.</gradient>"
money-required: "<gradient:#ff4b1f:#ff0000>You need <#FFD700>{amount}</#FFD700> to use this portal.</gradient>"
missing-advancement: "<gradient:#ff4b1f:#ff0000>You need the advancement <#FFD700>{advancement}</#FFD700>.</gradient>"
insufficient-playtime: "<gradient:#ff4b1f:#ff0000>You need at least <#FFD700>{required}</#FFD700> hours of playtime (you have <#FFD700>{current}</#FFD700>).</gradient>"
insufficient-money: "<gradient:#ff4b1f:#ff0000>You need <#FFD700>{amount}</#FFD700> to meet the money condition.</gradient>"
daily-limit-reached: "<gradient:#ff4b1f:#ff0000>You've reached your daily use limit for this portal.</gradient>"
wrong-time: "<gradient:#ff4b1f:#ff0000>This portal is not available at this time of day.</gradient>"
wrong-date: "<gradient:#ff4b1f:#ff0000>This portal is not available today.</gradient>"
health-too-low: "<gradient:#ff4b1f:#ff0000>You need at least <#FFD700>{required}</#FFD700> health (current: <#FFD700>{current}</#FFD700>).</gradient>"
health-too-high: "<gradient:#ff4b1f:#ff0000>Your health is too high — max <#FFD700>{maximum}</#FFD700> (current: <#FFD700>{current}</#FFD700>).</gradient>"
food-too-low: "<gradient:#ff4b1f:#ff0000>You need at least <#FFD700>{required}</#FFD700> hunger (current: <#FFD700>{current}</#FFD700>).</gradient>"
food-too-high: "<gradient:#ff4b1f:#ff0000>Your hunger is too high — max <#FFD700>{maximum}</#FFD700> (current: <#FFD700>{current}</#FFD700>).</gradient>"
missing-armor: "<gradient:#ff4b1f:#ff0000>You must be wearing the required armor.</gradient>"
missing-weapon: "<gradient:#ff4b1f:#ff0000>You must be holding a weapon.</gradient>"
forbidden-item: "<gradient:#ff4b1f:#ff0000>You cannot have <#FFD700>{item}</#FFD700> in your inventory.</gradient>"
not-enough-players-nearby: "<gradient:#ff4b1f:#ff0000>You need at least <#FFD700>{required}</#FFD700> other players nearby (found <#FFD700>{current}</#FFD700>).</gradient>"
too-many-players-nearby: "<gradient:#ff4b1f:#ff0000>Too many players nearby! Maximum <#FFD700>{maximum}</#FFD700> allowed (found <#FFD700>{current}</#FFD700>).</gradient>"
# =====================================
# RTP
# =====================================
rtp:
teleporting: "<gradient:#00ff6a:#00d4ff>Finding a random location...</gradient>"
success: "<gradient:#00ff6a:#00d4ff>Teleported to <#FFD700>{x}</#FFD700>, <#FFD700>{y}</#FFD700>, <#FFD700>{z}</#FFD700> in <#FFD700>{world}</#FFD700>.</gradient>"
error: "<gradient:#ff4b1f:#ff0000>Failed to find a safe random location. Try again.</gradient>"
cooldown: "<gradient:#ff4b1f:#ff0000>You must wait <#FFD700>{time}</#FFD700> before using RTP again.</gradient>"
world-not-found: "<gradient:#ff4b1f:#ff0000>RTP world <#FFD700>{world}</#FFD700> was not found.</gradient>"
no-safe-location: "<gradient:#ff4b1f:#ff0000>Couldn't find a safe location after multiple attempts.</gradient>"
preloading-chunks: "<gradient:#87ceeb:#4682b4>Preloading chunks at the destination...</gradient>"
chunks-not-loaded: "<gradient:#ff4b1f:#ff0000>Chunks couldn't be preloaded in time.</gradient>"
# =====================================
# PROTECTION
# =====================================
protection:
cannot-break: "<gradient:#ff4b1f:#ff0000>You cannot break blocks inside a portal.</gradient>"
cannot-place: "<gradient:#ff4b1f:#ff0000>You cannot place blocks inside a portal.</gradient>"
# =====================================
# LINKING
# =====================================
linking:
already-linked: "<gradient:#ff4b1f:#ff0000>Portal <#FFD700>{portal}</#FFD700> is already linked to <#FFD700>{target}</#FFD700>. Unlink it first.</gradient>"
self-link-denied: "<gradient:#ff4b1f:#ff0000>You cannot link a portal to itself.</gradient>"
connection-established: "<gradient:#ffa500:#ff6347>⚠ Portals <#FFD700>{portal1}</#FFD700> and <#FFD700>{portal2}</#FFD700> are already connected to each other!</gradient>"
# =====================================
# INTEGRATIONS
# =====================================
integrations:
worldguard-denied: "<gradient:#ff4b1f:#ff0000>WorldGuard prevents you from using this portal.</gradient>"
lands-denied: "<gradient:#ff4b1f:#ff0000>You are not trusted in this land area.</gradient>"
# =====================================
# COMMANDS SYSTEM
# =====================================
commands:
usage: "<gradient:#ff4b1f:#ff0000>Usage: <#FFD700>/st {command} {parameters}</#FFD700></gradient>"
invalid-type: "<gradient:#ff4b1f:#ff0000>Invalid {type}: <#FFD700>{value}</#FFD700></gradient>"
validation-help: "<gradient:#87ceeb:#4682b4>Valid options: <#FFD700>{options}</#FFD700></gradient>"
not-found-entity: "<gradient:#ff4b1f:#ff0000>{entity_type} <#FFD700>{name}</#FFD700> was not found.</gradient>"
setting-updated: "<gradient:#00ff6a:#00d4ff>{setting} for </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#00ff6a:#00d4ff> set to </gradient><gradient:#f59e0b:#d97706>{value}</gradient><gradient:#00ff6a:#00d4ff>.</gradient>"
state-changed: "<gradient:#00ff6a:#00d4ff>Portal </gradient><gradient:#f59e0b:#d97706>{portal}</gradient><gradient:#00ff6a:#00d4ff> has been </gradient><gradient:#f59e0b:#d97706>{action}</gradient><gradient:#00ff6a:#00d4ff>.</gradient>"
rename-failed: "<gradient:#ff4b1f:#ff0000>Failed to rename portal.</gradient>"
unlink-not-connected: "<gradient:#ff4b1f:#ff0000>Portal <#FFD700>{portal}</#FFD700> is not connected to anything.</gradient>"
unlink-error: "<gradient:#ff4b1f:#ff0000>Failed to unlink portal.</gradient>"
shapepreview:
usage: "<gradient:#ff4b1f:#ff0000>Usage: <#FFD700>/st shapepreview <preset|rotate|mirror|undo|place [material]></#FFD700></gradient>"
rotate-requires-pivot: "<gradient:#ff4b1f:#ff0000>Set a pivot with wand pos1 first.</gradient>"
rotate-no-preview: "<gradient:#ff4b1f:#ff0000>No active preview shape to rotate.</gradient>"
rotate-success: "<gradient:#00ff6a:#00d4ff>Rotated shape preview. Use <#FFD700>/st shapepreview place</#FFD700> when ready.</gradient>"
mirror-requires-pivot: "<gradient:#ff4b1f:#ff0000>Set a pivot with wand pos1 first.</gradient>"
mirror-no-preview: "<gradient:#ff4b1f:#ff0000>No active preview shape to mirror.</gradient>"
mirror-success: "<gradient:#00ff6a:#00d4ff>Mirrored shape preview. Use <#FFD700>/st shapepreview place</#FFD700> when ready.</gradient>"
undo-success: "<gray>Undid last preview action.</gray>"
undo-world-success: "<gradient:#34d399:#22d3ee>Restored blocks</gradient> <gray>from last</gray> <aqua>place</aqua><gray>.</gray>"
undo-empty: "<gray>Nothing to undo.</gray>"
place-requires-positions: "<gradient:#ff4b1f:#ff0000>Set pos1 and pos2 with the wand before placing preview.</gradient>"
invalid-material: "<gradient:#ff4b1f:#ff0000>Invalid frame material: <#FFD700>{material}</#FFD700>. Use a valid block type.</gradient>"
place-no-preview: "<gradient:#ff4b1f:#ff0000>No active shape preview to place.</gradient>"
place-success: "<gradient:#00ff6a:#00d4ff>Placed preview frame using <#FFD700>{material}</#FFD700>.</gradient>"
generate-requires-positions: "<gradient:#ff4b1f:#ff0000>Set pos1 and pos2 with the wand before generating preview.</gradient>"
generate-success: "<gradient:#00ff6a:#00d4ff>Generated preview shape: <#FFD700>{preset}</#FFD700>. Use <#FFD700>/st shapepreview place</#FFD700> to build it.</gradient>"
unknown-preset: "<gradient:#ff4b1f:#ff0000>Unknown shape preset. Try: rectangle, square, circle, oval, triangle, hexagon, octagon, random_rift.</gradient>"
preview-validation-failed: "<gradient:#ff4b1f:#ff0000>Preview validation failed: <#FFD700>{reason}</#FFD700></gradient>"
setrouting:
usage: "<gradient:#ff4b1f:#ff0000>Usage: <#FFD700>/st setrouting <portal> <fixed|random|weighted|permission></#FFD700></gradient>"
success: "<gradient:#00ff6a:#00d4ff>Routing mode for <#FFD700>{portal}</#FFD700> set to <#FFD700>{mode}</#FFD700>.</gradient>"
invalid-mode: "<gradient:#ff4b1f:#ff0000>Invalid mode. Use: <#FFD700>fixed, random, weighted, permission</#FFD700>.</gradient>"
setdestinations:
usage: "<gradient:#ff4b1f:#ff0000>Usage: <#FFD700>/st setdestinations <portal> <dest1,dest2,dest3|weight|permission></#FFD700></gradient>"
success: "<gradient:#00ff6a:#00d4ff>Updated linked destinations for <#FFD700>{portal}</#FFD700>: <#FFD700>{count}</#FFD700> entries.</gradient>"
manage-delete:
invalid-request: "<gradient:#ff4b1f:#ff0000>Invalid deletion request.</gradient>"
invalid-index: "<gradient:#ff4b1f:#ff0000>Invalid index provided.</gradient>"
unknown-type: "<gradient:#ff4b1f:#ff0000>Unknown deletion type: <#FFD700>{type}</#FFD700>.</gradient>"
invalid-command-index: "<gradient:#ff4b1f:#ff0000>Invalid command index.</gradient>"
invalid-condition-index: "<gradient:#ff4b1f:#ff0000>Invalid condition index.</gradient>"
returning: "<gradient:#6b7280:#9ca3af>Returning to management interface...</gradient>"
manage-confirm-delete:
invalid-request: "<gradient:#ff4b1f:#ff0000>Invalid deletion confirmation.</gradient>"
invalid-index: "<gradient:#ff4b1f:#ff0000>Invalid index provided.</gradient>"
unknown-type: "<gradient:#ff4b1f:#ff0000>Unknown deletion type: <#FFD700>{type}</#FFD700>.</gradient>"
success: "<gradient:#00ff6a:#00d4ff>✓ Successfully deleted <#FFD700>{type}</#FFD700>: <#FFFFFF>{item}</#FFFFFF></gradient>"
failed: "<gradient:#ff4b1f:#ff0000>Failed to delete item. Index may be invalid.</gradient>"
# ── Hints & Suggestions ──
hints:
horizontal-direction-warning: "<gradient:#ffa500:#ff6347>Floor pad tip: stand on the selected area to teleport. Exit facing defaults to auto look-out.</gradient>"
horizontal-direction-note: "<gradient:#87ceeb:#4682b4>Floor pads: step onto the pad. Use /st setdirection to override exit facing.</gradient>"
popular-particles: "<gradient:#ff8c00:#ff4500>Popular particles: <#FFD700>PORTAL</#FFD700>, <#FFD700>FLAME</#FFD700>, <#FFD700>END_ROD</#FFD700>, <#FFD700>ENCHANT</#FFD700>, <#FFD700>HEART</#FFD700>, <#FFD700>HAPPY_VILLAGER</#FFD700></gradient>"
other-particles: "<gradient:#ff8c00:#ff4500>Other options: <#FFD700>SMOKE</#FFD700>, <#FFD700>CRIT</#FFD700>, <#FFD700>FIREWORK</#FFD700>, <#FFD700>DRAGON_BREATH</#FFD700>, <#FFD700>SOUL_FIRE_FLAME</#FFD700></gradient>"
particle-tab-hint: "<gradient:#87ceeb:#4682b4>Use tab completion to see all available particles!</gradient>"
valid-sounds: "<gradient:#ff8c00:#ff4500>Valid sounds include: <#FFD700>ENTITY_ENDERMAN_TELEPORT</#FFD700>, <#FFD700>BLOCK_PORTAL_AMBIENT</#FFD700>, <#FFD700>ENTITY_PLAYER_LEVELUP</#FFD700></gradient>"
valid-directions: "<gradient:#ff8c00:#ff4500>Valid directions: <#FFD700>NORTH</#FFD700>, <#FFD700>SOUTH</#FFD700>, <#FFD700>EAST</#FFD700>, <#FFD700>WEST</#FFD700>, <#FFD700>UP</#FFD700>, <#FFD700>DOWN</#FFD700></gradient>"
# ── Usage Parameters (per command) ──
usage-parameters:
add: "<name>"
remove: "<portal>"
connect: "<source> <target>"
list: ""
info: "<portal> [page]"
tp: "<portal>"
wand: ""
reload: ""
setdirection: "<portal> <direction>"
setparticle: "<portal> <particle>"
setcount: "<portal> <count>"
setspread: "<portal> <tight> <wide>"
setsound: "<portal> <sound> [volume] [pitch]"
setinterval: "<portal> <ticks>"
settype: "<portal> <standard|rtp> [world] [min] [max]"
setcost: "<portal> <amount | hand [amount]>"
setcooldown: "<portal> <seconds>"
setwarmup: "<portal> <seconds>"
setcommand: "<portal> <enter|exit> <command>"
setcondition: "<portal> <condition> [value]"
removecondition: "<portal> <condition|all>"
addcondition: "<portal> <condition> [value]"
setcolor: "<portal> <r> <g> <b>"
setdisablesafecheck: "<portal>"
reset: "<portal>"
rename: "<portal> <newname>"
move: "<portal>"
debug: ""
enable: "<portal>"
disable: "<portal>"
unlink: "<portal>"
duplicate: "<source> <newname>"
manage: "[portal]"
backup: ""
set: "<setting> <portal> <value>"
help: "[command]"
teleport: "<portal>"
# ── Validation Parameters ──
validation-parameters:
particle: "Particle"
sound: "Sound"
direction: "Direction"
material: "Material"
world: "World"
biome: "Biome"
gamemode: "Gamemode"
condition: "Condition"
portaltype: "Portal Type"
# ── Validation Options ──
validation-options:
particle: "FLAME, SOUL_FIRE_FLAME, PORTAL, ENCHANT, END_ROD, DUST, etc."
sound: "ENTITY_ENDERMAN_TELEPORT, BLOCK_PORTAL_TRIGGER, etc."
direction: "NORTH, SOUTH, EAST, WEST, UP, DOWN, PLAYER, NONE"
portaltype: "standard, rtp"
# ── State Actions ──
state-actions:
enabled: "enabled"
disabled: "disabled"
connected: "connected"
unlinked: "unlinked"
reset: "reset"
# ── Set Cost ──
setcost-examples:
- "<gradient:#87ceeb:#4682b4>Examples:</gradient>"
- "<gradient:#87ceeb:#4682b4> • <#FFD700>/st setcost spawn 100</#FFD700> - Charge $100 money</gradient>"
- "<gradient:#87ceeb:#4682b4> • <#FFD700>/st setcost nether 5 DIAMOND</#FFD700> - Require 5 diamonds</gradient>"
- "<gradient:#87ceeb:#4682b4> • <#FFD700>/st setcost pvp 30 EXP</#FFD700> - Require 30 experience points</gradient>"
- "<gradient:#87ceeb:#4682b4> • <#FFD700>/st setcost end 0</#FFD700> - Disable cost (free portal)</gradient>"
# ── Set Interval ──
setinterval-usage: "<gradient:#ff4b1f:#ff0000>Usage: </gradient><gradient:#22c55e:#16a34a>/st setinterval <portal> <ticks></gradient>"
setinterval-warning: "<gradient:#ffa500:#ff6347>Warning: Very low intervals may impact performance.</gradient>"
# ── Set Particle ──
setparticle-example: "<gradient:#87ceeb:#4682b4>Example: </gradient><gradient:#22c55e:#16a34a>/st setparticle myportal FLAME</gradient>"
setparticle-default-tip: "<gradient:#87ceeb:#4682b4>Tip: Use <#FFD700>DEFAULT</#FFD700> to reset to the default particle.</gradient>"
setparticle-error: "<gradient:#ff4b1f:#ff0000>Failed to set particle effect.</gradient>"
# ── Set Sound ──
setsound-example:
- "<gradient:#87ceeb:#4682b4>Examples:</gradient>"
- "<gradient:#87ceeb:#4682b4> /st setsound portal1 ENTITY_ENDERMAN_TELEPORT</gradient>"
- "<gradient:#87ceeb:#4682b4> /st setsound portal1 ENTITY_ENDERMAN_TELEPORT 1.2 0.5</gradient>"
setsound-default-tip: "<gradient:#87ceeb:#4682b4>Tip: Use <#FFD700>DEFAULT</#FFD700> to reset to default, or <#FFD700>NONE</#FFD700> to disable sounds.</gradient>"
setsound-preview: "<gradient:#00ff6a:#00d4ff>Playing sound preview...</gradient>"
setsound-failed: "<gradient:#ff4b1f:#ff0000>Failed to set sound.</gradient>"
# ── Set Spread ──
setspread-usage: "<gradient:#ff4b1f:#ff0000>Usage: </gradient><gradient:#22c55e:#16a34a>/st setspread <portal> <tight> <wide></gradient>"
setspread-tight-greater-than-wide: "<gradient:#ff4b1f:#ff0000>Tight spread must be less than or equal to wide spread.</gradient>"
# ── Set Warmup ──
setwarmup-usage: "<gradient:#ff4b1f:#ff0000>Usage: </gradient><gradient:#22c55e:#16a34a>/st setwarmup <portal> <seconds></gradient>"
setwarmup-example: "<gradient:#87ceeb:#4682b4>Example: </gradient><gradient:#22c55e:#16a34a>/st setwarmup myportal 5</gradient>"
# ── Set Cooldown ──
setcooldown-usage: "<gradient:#ff4b1f:#ff0000>Usage: </gradient><gradient:#22c55e:#16a34a>/st setcooldown <portal> <seconds></gradient>"
setcooldown-example: "<gradient:#87ceeb:#4682b4>Example: </gradient><gradient:#22c55e:#16a34a>/st setcooldown myportal 60</gradient>"
# ── Set Direction ──
setdirection-description: "<gradient:#87ceeb:#4682b4>Set which direction a player faces after teleporting.</gradient>"
setdirection-example: "<gradient:#87ceeb:#4682b4>Example: </gradient><gradient:#22c55e:#16a34a>/st setdirection myportal NORTH</gradient>"
setdirection-valid-directions: "<gradient:#87ceeb:#4682b4>Valid: <#FFD700>NORTH, SOUTH, EAST, WEST, UP, DOWN, DEFAULT</#FFD700> (aliases: AUTO, PLAYER, NONE → DEFAULT)</gradient>"
setdirection-horizontal-warning: "<gradient:#ffa500:#ff6347>Note: Floor pads use auto look-out with level pitch; N/S/E/W still override yaw.</gradient>"
setdirection-horizontal-explanation: "<gradient:#87ceeb:#4682b4>DEFAULT looks out of the portal. UP/DOWN change pitch. Relative approach uses portals.teleportation.preserve-orientation.</gradient>"
setdirection-success-header: "<gradient:#00ff6a:#00d4ff>✓ Direction updated!</gradient>"
setdirection-success-portal: "<gradient:#87ceeb:#4682b4>Portal: <#FFD700>{portal}</#FFD700></gradient>"
setdirection-success-direction: "<gradient:#87ceeb:#4682b4>Direction: <#FFD700>{direction}</#FFD700></gradient>"
setdirection-success-info: "<gradient:#87ceeb:#4682b4>Players will now face <#FFD700>{direction}</#FFD700> after teleporting.</gradient>"
setdirection-tip: "<gradient:#87ceeb:#4682b4>Use <#FFD700>DEFAULT</#FFD700> for auto look-out of the portal.</gradient>"
# ── Set Command ──
setcommand-usage: "<gradient:#ff4b1f:#ff0000>Usage: </gradient><gradient:#22c55e:#16a34a>/st setcommand <portal> <enter|exit> <command></gradient>"
setcommand-example: "<gradient:#87ceeb:#4682b4>Example: </gradient><gradient:#22c55e:#16a34a>/st setcommand myportal enter say Welcome!</gradient>"
setcommand-invalid-trigger: "<gradient:#ff4b1f:#ff0000>Invalid trigger. Use <#FFD700>enter</#FFD700> or <#FFD700>exit</#FFD700>.</gradient>"
# ── Set Condition ──
setcondition-usage: "<gradient:#ff4b1f:#ff0000>Usage: </gradient><gradient:#22c55e:#16a34a>/st setcondition <portal> <condition> [value]</gradient>"
setcondition-available: "<gradient:#87ceeb:#4682b4>Available: <#FFD700>day, night, rain, thunder, clear, level, sneak, fly, world, biome, gamemode, item, money, advancement, playtime</#FFD700></gradient>"
setcondition-item-usage: "<gradient:#87ceeb:#4682b4>Item usage: </gradient><gradient:#22c55e:#16a34a>/st setcondition <portal> item <material> [amount]</gradient>"
# ── Add Condition ──
addcondition-usage: "<gradient:#ff4b1f:#ff0000>Usage: </gradient><gradient:#22c55e:#16a34a>/st addcondition <portal> <condition> [value]</gradient>"
addcondition-available: "<gradient:#87ceeb:#4682b4>Available: <#FFD700>day, night, rain, thunder, clear, level, sneak, fly, world, biome, gamemode, item, money, advancement, playtime</#FFD700></gradient>"
addcondition-item-usage: "<gradient:#87ceeb:#4682b4>Item usage: </gradient><gradient:#22c55e:#16a34a>/st addcondition <portal> item <material> [amount]</gradient>"
# ── Remove Condition ──
removecondition-usage: "<gradient:#ff4b1f:#ff0000>Usage: </gradient><gradient:#22c55e:#16a34a>/st removecondition <portal> <condition|all></gradient>"
# ── Set Type ──
settype-example: "<gradient:#87ceeb:#4682b4>Example: </gradient><gradient:#22c55e:#16a34a>/st settype myportal rtp world 100 5000</gradient>"
settype-defaults: "<gradient:#87ceeb:#4682b4>Defaults: world=current, min=100, max=5000</gradient>"
settype-invalid-type: "<gradient:#ff4b1f:#ff0000>Invalid portal type. Use <#FFD700>standard</#FFD700> or <#FFD700>rtp</#FFD700>.</gradient>"
settype-rtp-connected-error: "<gradient:#ff4b1f:#ff0000>Disconnect the portal first before changing to RTP type.</gradient>"
settype-world-not-found: "<gradient:#ff4b1f:#ff0000>World <#FFD700>{world}</#FFD700> was not found.</gradient>"
settype-available-worlds: "<gradient:#87ceeb:#4682b4>Available worlds: <#FFD700>{worlds}</#FFD700></gradient>"
settype-invalid-range: "<gradient:#ff4b1f:#ff0000>Invalid range — min must be less than max.</gradient>"
settype-range-limits: "<gradient:#ff4b1f:#ff0000>Range must be between 50 and 100000.</gradient>"
settype-rtp-details: "<gradient:#00ff6a:#00d4ff>RTP portal configured: world=<#FFD700>{world}</#FFD700>, range=<#FFD700>{min}</#FFD700>-<#FFD700>{max}</#FFD700></gradient>"
settype-rtp-used-defaults: "<gradient:#87ceeb:#4682b4>Note: Using default values for unspecified parameters.</gradient>"
# ── Set Color ──
setcolor-usage: "<gradient:#ff4b1f:#ff0000>Usage: </gradient><gradient:#22c55e:#16a34a>/st setcolor <portal> <r> <g> <b></gradient><gradient:#87ceeb:#4682b4> (0-255)</gradient>"
setcolor-not-dust: "<gradient:#ff4b1f:#ff0000>Color can only be set on DUST particles.</gradient>"
setcolor-invalid: "<gradient:#ff4b1f:#ff0000>Invalid color values. Use numbers between 0 and 255.</gradient>"
# ── Set Count ──
setcount-usage: "<gradient:#ff4b1f:#ff0000>Usage: </gradient><gradient:#22c55e:#16a34a>/st setcount <portal> <count></gradient>"
setcount-distribution-info: "<gradient:#87ceeb:#4682b4>Particles are distributed evenly across the portal surface.</gradient>"
# ── Set Disable Safe Check ──
setdisablesafecheck:
usage: "<gradient:#ff4b1f:#ff0000>Usage: </gradient><gradient:#22c55e:#16a34a>/st setdisablesafecheck <portal></gradient>"
invalid-value: "<gradient:#ff4b1f:#ff0000>Invalid value '<#FFD700>{value}</#FFD700>'. Use 'true' or 'false'.</gradient>"
success: "<gradient:#00ff6a:#00d4ff>Safety checks for portal '<#FFD700>{portal}</#FFD700>' have been <#FFD700>{value}</#FFD700>.</gradient>"
# ── Reset ──
usage-reset: "<gradient:#ff4b1f:#ff0000>Usage: </gradient><gradient:#22c55e:#16a34a>/st reset <portal></gradient>"
# ── Move ──
move-mode-activated: "<gradient:#ffa500:#ff6347>Move mode activated for portal <#FFD700>{portal}</#FFD700>.</gradient>"
move-instructions: "<gradient:#87ceeb:#4682b4>Set two new positions with the wand, then the portal will move.</gradient>"
move-cancel-hint: "<gradient:#87ceeb:#4682b4>Use </gradient><gradient:#22c55e:#16a34a>/st move cancel</gradient><gradient:#87ceeb:#4682b4> to cancel.</gradient>"
portal-moved: "<gradient:#00ff6a:#00d4ff>Portal <#FFD700>{portal}</#FFD700> has been moved to the new location!</gradient>"
move-cancelled: "<gradient:#ffa500:#ff6347>Move mode cancelled.</gradient>"
# ── Add Usage Hints ──
add-usage-header: "<gradient:#87ceeb:#4682b4>━━━ Creating a Portal ━━━</gradient>"
add-usage-examples: "<gradient:#87ceeb:#4682b4>1. Get the wand: </gradient><gradient:#22c55e:#16a34a>/st wand</gradient>"
add-usage-tip: "<gradient:#87ceeb:#4682b4>2. Select two corners, then: </gradient><gradient:#22c55e:#16a34a>/st add <name></gradient>"
add-usage-directions: "<gradient:#87ceeb:#4682b4>3. Connect portals: </gradient><gradient:#22c55e:#16a34a>/st connect <source> <target></gradient>"
# ── Backup ──
backup-success: "<gradient:#00ff6a:#00d4ff>Portal backup created successfully!</gradient>"
backup-failed: "<gradient:#ff4b1f:#ff0000>Failed to create backup. Check console for details.</gradient>"
# ── Reload ──
reload:
start: "<gradient:#00d4ff:#00ff6a>Reloading SoapsTeleporter...</gradient>"
error-summary: "<gradient:#ff4b1f:#ff0000>Error during reload: {count} errors occurred</gradient>"
error-check-console: "<gradient:#ff4b1f:#ff0000>Check the console for detailed error information.</gradient>"
step:
config: "<gradient:#00ff6a:#00d4ff>✓ Config files regenerated if missing</gradient>"
messages: "<gradient:#00ff6a:#00d4ff>✓ Messages system reloaded</gradient>"
portals: "<gradient:#00ff6a:#00d4ff>✓ Portal data refreshed</gradient>"
economy: "<gradient:#00ff6a:#00d4ff>✓ Economy system reinitialized</gradient>"
teleport: "<gradient:#d946ef:#9333ea>✓ Teleport manager reinitialized</gradient>"
particles: "<gradient:#00ff6a:#00d4ff>✓ Particle system restarted</gradient>"
integrations: "<gradient:#a855f7:#9333ea>✓ Integration managers reinitialized</gradient>"
cache: "<gradient:#f59e0b:#d97706>✓ Cached data invalidated and refreshed</gradient>"
selftest: "<gradient:#00d4ff:#00ff6a>Running self-test...</gradient>"
# =====================================
# GUI CHAT INPUT
# =====================================
gui:
chat-input:
cancelled: "<gradient:#6b7280:#9ca3af>Input cancelled.</gradient>"
expected-pitch-volume: "<gradient:#ff4b1f:#ff0000>Expected: <#FFD700><pitch> <volume></#FFD700> (e.g., <#FFD700>1.0 1.0</#FFD700>).</gradient>"
unknown-type: "<gradient:#ff4b1f:#ff0000>Unknown input type <#FFD700>{type}</#FFD700>. Action cancelled.</gradient>"
processing-error: "<gradient:#ff4b1f:#ff0000>An error occurred while processing your input.</gradient>"
# =====================================
# PORTAL LIST
# =====================================
portal-list:
header: "<gradient:#6C63FF:#A855F7>━━━ Portals ━━━</gradient>"
footer: "<gradient:#6C63FF:#A855F7>━━━ Total: {total} | Connected: {connected} ━━━</gradient>"
no-portals: "<gradient:#ffa500:#ff6347>No portals have been created yet.</gradient>"
entry-enabled: "<gradient:#00ff6a:#00d4ff>● {name}</gradient> <gradient:#6b7280:#9ca3af>({world})</gradient>"
entry-disabled: "<gradient:#ff4b1f:#ff0000>● {name}</gradient> <gradient:#6b7280:#9ca3af>({world})</gradient>"
entry-connected: " <gradient:#87ceeb:#4682b4>→ <#FFD700>{target}</#FFD700></gradient>"
entry-not-connected: " <gradient:#87ceeb:#4682b4>(not connected)</gradient>"
entry-rtp: " <gradient:#00ffea:#00bfff>[RTP]</gradient> <gradient:#6b7280:#9ca3af>{world} ({range}m)</gradient>"
entry-disabled-badge: " <gradient:#ff4b1f:#ff0000>[Disabled]</gradient>"
entry-warmup: " <gradient:#87ceeb:#4682b4>⏱ {warmup}s</gradient>"
entry-cooldown: " <gradient:#87ceeb:#4682b4>⏳ {cooldown}s</gradient>"
entry-cost: " <gradient:#f59e0b:#d97706>💰 {cost}</gradient>"
entry-error: "<gradient:#ff4b1f:#ff0000>● {name} — Error: {error}</gradient>"
# =====================================
# PORTAL INFO
# =====================================
portal-info:
header: "<gradient:#87ceeb:#4682b4>=== Portal Info:</gradient> <#FFD700>{portal}</#FFD700> <gradient:#87ceeb:#4682b4>===</gradient>"
header-paginated: "<gradient:#87ceeb:#4682b4>=== Portal Info:</gradient> <#FFD700>{portal}</#FFD700> <gradient:#87ceeb:#4682b4>(Page {page}/{total}) ===</gradient>"
footer-next: "<click:run_command:'/st info {portal} {page}'><gradient:#22c55e:#16a34a>[Next »]</gradient></click>"
footer-prev: "<click:run_command:'/st info {portal} {page}'><gradient:#22c55e:#16a34a>[« Prev]</gradient></click>"
world: "<gradient:#87ceeb:#4682b4>World:</gradient> <#FFD700>{world}</#FFD700>"
status-enabled: "<gradient:#00ff6a:#00d4ff>Enabled</gradient>"
status-disabled: "<gradient:#ff4b1f:#ff0000>Disabled</gradient>"
connected-to: "<gradient:#87ceeb:#4682b4>Connected to:</gradient> <#FFD700>{target}</#FFD700>"
target-status: "<gradient:#87ceeb:#4682b4>Target status:</gradient> {status}"
target-missing: "<gradient:#ff4b1f:#ff0000>⚠ Target portal missing!</gradient>"
type-rtp: "<gradient:#00ffea:#00bfff>Random Teleport (RTP)</gradient>"
rtp-world: "<gradient:#87ceeb:#4682b4>RTP World:</gradient> <#FFD700>{world}</#FFD700>"
rtp-range: "<gradient:#87ceeb:#4682b4>RTP Range:</gradient> <#FFD700>{min}</#FFD700> — <#FFD700>{max}</#FFD700>"
not-connected: "<gradient:#87ceeb:#4682b4>Not connected</gradient>"
size: "<gradient:#87ceeb:#4682b4>Size:</gradient> <#FFD700>{x}</#FFD700> × <#FFD700>{y}</#FFD700> × <#FFD700>{z}</#FFD700>"
invalid-page: "<gradient:#ff4b1f:#ff0000>Invalid page number.</gradient>"
invalid-page-max: "<gradient:#ff4b1f:#ff0000>Max page is <#FFD700>{max}</#FFD700>.</gradient>"
error: "<gradient:#ff4b1f:#ff0000>Error loading portal info.</gradient>"
position-1: "<gradient:#87ceeb:#4682b4>Position 1:</gradient> <#FFD700>{location}</#FFD700>"
position-2: "<gradient:#87ceeb:#4682b4>Position 2:</gradient> <#FFD700>{location}</#FFD700>"
warmup-time-active: "<gradient:#87ceeb:#4682b4>Warmup time:</gradient> <#FFD700>{time}s</#FFD700>"
warmup-time-disabled: "<gradient:#87ceeb:#4682b4>Warmup time:</gradient> <gradient:#6b7280:#9ca3af>Disabled</gradient>"
cooldown-time-active: "<gradient:#87ceeb:#4682b4>Cooldown time:</gradient> <#FFD700>{time}s</#FFD700>"
cooldown-time-disabled: "<gradient:#87ceeb:#4682b4>Cooldown time:</gradient> <gradient:#6b7280:#9ca3af>Disabled</gradient>"
safety-check-enabled: "<gradient:#87ceeb:#4682b4>Safety checks:</gradient> <gradient:#00ff6a:#00d4ff>Enabled</gradient>"
safety-check-disabled: "<gradient:#87ceeb:#4682b4>Safety checks:</gradient> <gradient:#ff4b1f:#ff0000>Disabled</gradient>"
orientation-horizontal: "<gradient:#87ceeb:#4682b4>Orientation:</gradient> <#FFD700>Horizontal (ground)</#FFD700>"
orientation-vertical: "<gradient:#87ceeb:#4682b4>Orientation:</gradient> <#FFD700>Vertical (standing)</#FFD700>"
particle-custom: "<gradient:#87ceeb:#4682b4>Particle type:</gradient> <#d946ef>{particle}</#d946ef>"
particle-default: "<gradient:#87ceeb:#4682b4>Particle type:</gradient> <gradient:#87ceeb:#4682b4>Default</gradient> (<#FFD700>{particle}</#FFD700>)"
spread-custom: "<gradient:#87ceeb:#4682b4>Particle spread:</gradient> <#d946ef>Tight: {tight}, Wide: {wide}</#d946ef>"
spread-default: "<gradient:#87ceeb:#4682b4>Particle spread:</gradient> <gradient:#87ceeb:#4682b4>Default</gradient> (<#FFD700>Tight: {tight}, Wide: {wide}</#FFD700>)"
dust-color-custom: "<gradient:#87ceeb:#4682b4>DUST particle color:</gradient> <color:#fbbf24>{color}</color>"
dust-color-default: "<gradient:#87ceeb:#4682b4>DUST particle color:</gradient> <gradient:#87ceeb:#4682b4>Default</gradient> (<color:#fbbf24>{color}</color>)"
sound-custom: "<gradient:#87ceeb:#4682b4>Teleport sound:</gradient> <#d946ef>{sound}</#d946ef>"
sound-default: "<gradient:#87ceeb:#4682b4>Teleport sound:</gradient> <gradient:#87ceeb:#4682b4>Default</gradient> (<#FFD700>{sound}</#FFD700>)"
direction-horizontal: "<gradient:#87ceeb:#4682b4>Teleport direction:</gradient> <#FFD700>UP</#FFD700> <gradient:#87ceeb:#4682b4>(horizontal portal default)</gradient>"
direction-horizontal-note: " <gradient:#6b7280:#9ca3af>Floor pad — stand on the pad; DEFAULT = auto look-out</gradient>"
direction-custom: "<gradient:#87ceeb:#4682b4>Teleport direction:</gradient> <#d946ef>{direction}</#d946ef>"
direction-default: "<gradient:#87ceeb:#4682b4>Teleport direction:</gradient> <#FFD700>Auto (look out of portal)</#FFD700> <gradient:#87ceeb:#4682b4>(default)</gradient>"
conditions: "<gradient:#87ceeb:#4682b4>Usage conditions:</gradient> <#FFD700>{conditions}</#FFD700>"
conditions-none: "<gradient:#87ceeb:#4682b4>Usage conditions:</gradient> <gradient:#6b7280:#9ca3af>None (anyone can use)</gradient>"
conditions-header: "<gradient:#87ceeb:#4682b4>Usage conditions:</gradient>"
conditions-item: "<gradient:#87ceeb:#4682b4> • </gradient><#FFD700>{condition}</#FFD700>"
conditions-multiple: "<gradient:#87ceeb:#4682b4>Usage conditions ({count}):</gradient>"
permission-custom: "<gradient:#87ceeb:#4682b4>Required permission:</gradient> <#d946ef>{permission}</#d946ef>"
permission-default: "<gradient:#87ceeb:#4682b4>Required permission:</gradient> <gradient:#87ceeb:#4682b4>Default</gradient> (<#FFD700>{permission}</#FFD700>)"
permission-none: "<gradient:#87ceeb:#4682b4>Required permission:</gradient> <gradient:#6b7280:#9ca3af>None</gradient>"
cost-enabled: "<gradient:#87ceeb:#4682b4>Teleport cost:</gradient> <gradient:#00ff6a:#00d4ff>${cost}</gradient>"
cost-free: "<gradient:#87ceeb:#4682b4>Teleport cost:</gradient> <gradient:#6b7280:#9ca3af>Free</gradient>"
# =====================================
# HELP SYSTEM
# =====================================
help:
fallback-not-initialized: "<gradient:#ff4b1f:#ff0000>Help system is loading, please try again.</gradient>"
no-commands: "<gradient:#ff4b1f:#ff0000>No commands available to you.</gradient>"
defaults:
description: "No description available."
category: "General"
details: "No additional details."
modern:
title: "✨ <gradient:#FF6B35:#F7931E:#FFD23F>Soaps Teleporters</gradient> ✨"
page-info: "<gradient:#00F5FF:#1E90FF>Page {page} of {total}</gradient>"
click-info: "<gradient:#32CD32:#00FA9A> • Click commands for more info</gradient>"
divider: "<gradient:#FF1493:#9370DB:#4169E1>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</gradient>"
command-prefix: " <gradient:#00FF00:#32CD32>/st</gradient> "
command-name: "<gradient:#4169E1:#1E90FF>{command}</gradient>"
command-separator: " <gradient:#87CEEB:#B0C4DE>-</gradient> "
command-description: "<gradient:#F8F8FF:#E6E6FA>{description}</gradient>"
command-hover: "<gradient:#87CEEB:#B0E0E6>Category:</gradient> <gradient:#FFD700:#FFA500>{category}</gradient>\n<gradient:#87CEEB:#B0E0E6>Details:</gradient> <gradient:#FFE4B5:#FFDAB9>{details}</gradient>\n\n<gradient:#32CD32:#00FA9A>Click to show detailed help!</gradient>"
footer-divider: "<gradient:#FF1493:#9370DB:#4169E1>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
nav:
prev: "<gradient:#32CD32:#00FA9A>« Previous</gradient> "
prev-hover: "<gradient:#98FB98:#90EE90>Go to page {page}</gradient>"
next: " <gradient:#32CD32:#00FA9A>Next »</gradient>"
next-hover: "<gradient:#98FB98:#90EE90>Go to page {page}</gradient>"
page: "<gradient:#00F5FF:#87CEEB>Page {page}/{total}</gradient>"
spacer: "<dark_gray> </dark_gray>"
console:
header: "━━━ SoapsTeleporter Help ━━━"
separator: "━━━━━━━━━━━━━━━━━━━━━━━━━━"
entry: " {command} — {description}"
footer: "━━━━━━━━━━━━━━━━━━━━━━━━━━"
welcome:
title: "🌟 <gradient:#FFD700:#FFA500>Welcome to Soaps Teleporters!</gradient> 🌟"
subtitle: "<gradient:#87CEEB:#B0E0E6>Create magical portals to teleport around your world</gradient>"
hint-prefix: "<gradient:#F0F8FF:#E6E6FA>Type</gradient> "
hint-command: "<gradient:#32CD32:#00FA9A>/st help</gradient>"
hint-suffix: " <gradient:#F0F8FF:#E6E6FA>to get started!</gradient>"
hint-hover: "<gradient:#98FB98:#90EE90>Click to view help!</gradient>"
console-header: "━━━ Welcome to SoapsTeleporter ━━━"
console-subtitle: "Use /st help for a list of commands."
console-footer: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
command-help:
header: "📘 <gradient:#4A90E2:#1E90FF>Command Help:</gradient> <gradient:#32CD32:#00FA9A>/st {command}</gradient>"
description-label: "<gradient:#87CEEB:#B0E0E6>Description:</gradient> "
description: "<gradient:#F0F8FF:#E6E6FA>{description}</gradient>"
category-label: "<gradient:#87CEEB:#B0E0E6>Category:</gradient> "
category: "<gradient:#FFD700:#FFA500>{category}</gradient>"
details-label: "<gradient:#87CEEB:#B0E0E6>Details:</gradient> "
details: "<gradient:#FFE4B5:#FFDAB9>{details}</gradient>"
console-header: "=== Command Help: /st {command} ==="
console-description: "Description: {description}"
console-category: "Category: {category}"
console-details: "Details: {details}"
# ── Command Descriptions ──
commands:
add:
description: "Create a new portal"
category: "Creation"
details: "Select two positions with the wand first."
remove:
description: "Remove a portal"
category: "Management"
details: "Permanently deletes the portal."
connect:
description: "Connect two portals"
category: "Connection"
details: "Links source portal to target."
list:
description: "List all portals"
category: "Information"
details: "Shows all portals and their status."
info:
description: "View portal details"
category: "Information"
details: "Shows detailed information about a portal."
wand:
description: "Get the portal selection wand"
category: "Creation"
details: "Used to select two corners for portal creation."
reload:
description: "Reload the plugin configuration"
category: "Admin"
details: "Reloads config.yml, messages.yml, and portals."
setdirection:
description: "Set portal exit direction"
category: "Settings"
details: "Controls which way players face after teleporting."
setparticle:
description: "Set portal particle effect"
category: "Visual"
details: "Changes the particle displayed at the portal."
setsound:
description: "Set portal teleport sound"
category: "Audio"
details: "Changes the sound played on teleport."
setcommand:
description: "Set portal entry/exit commands"
category: "Automation"
details: "Runs commands when players enter or exit a portal."
setcondition:
description: "Set portal conditions"
category: "Conditions"
details: "Adds requirements for portal usage."
setcost:
description: "Set portal usage cost"
category: "Economy"
details: "Charges money or items to use a portal."
debug:
description: "Toggle debug mode"
category: "Admin"
details: "Enables/disables debug logging."
manage:
description: "Open interactive management"
category: "Management"
details: "Interactive GUI for managing portal settings."
settype:
description: "Set portal type"
category: "Settings"
details: "Switch between standard and RTP modes."
enable:
description: "Enable a portal"
category: "Management"
details: "Re-enables a disabled portal."
disable:
description: "Disable a portal"
category: "Management"
details: "Temporarily disables a portal."
tp:
description: "Teleport to a portal"
category: "Teleportation"
details: "Teleports you directly to a portal."
backup:
description: "Backup portal data"
category: "Admin"
details: "Creates a backup of all portal data."
reset:
description: "Reset portal to defaults"
category: "Management"
details: "Resets all portal settings to defaults."
rename:
description: "Rename a portal"
category: "Management"
details: "Changes the name of a portal."
move:
description: "Move a portal"
category: "Management"
details: "Enter move mode to relocate a portal."
unlink:
description: "Unlink a portal"
category: "Connection"
details: "Disconnects a portal from its target."
duplicate:
description: "Duplicate a portal"
category: "Creation"
details: "Creates a copy of an existing portal."
setcooldown:
description: "Set portal cooldown"
category: "Settings"
details: "Sets the cooldown between portal uses."
setwarmup:
description: "Set portal warmup"
category: "Settings"
details: "Sets the warmup time before teleporting."
setcolor:
description: "Set particle color"
category: "Visual"
details: "Sets the RGB color for DUST particles."
setcount:
description: "Set particle count"
category: "Visual"
details: "Sets how many particles are displayed."
setspread:
description: "Set particle spread"
category: "Visual"
details: "Controls particle distribution area."
setinterval:
description: "Set particle interval"
category: "Visual"
details: "How often particles are displayed (ticks)."
setdisablesafecheck:
description: "Toggle safety checks"
category: "Settings"
details: "Disables destination safety checking."
set:
description: "Modify portal settings"
category: "Settings"
details: "General setting modification command."
shapepreview:
description: "Preview and build preset portal frames"
category: "Creation"
details: "Generate, rotate, mirror, undo, and place shape previews."
setrouting:
description: "Set portal routing mode"
category: "Connection"
details: "Choose fixed, random, weighted, or permission-based destination routing."
setdestinations:
description: "Set portal linked destinations"
category: "Connection"
details: "Configure destination list used by advanced routing modes."
addcondition:
description: "Add a condition"
category: "Conditions"
details: "Adds an additional usage requirement to a portal."
removecondition:
description: "Remove a condition"
category: "Conditions"
details: "Removes a condition from a portal."
help:
description: "Show help information"
category: "Information"
details: "Displays all available commands with pagination."
teleport:
description: "Teleport to a portal"
category: "Teleportation"
details: "Teleports you directly to a portal location."
# =====================================
# INTERACTIVE MANAGEMENT (GUI)
# =====================================
interactive-management:
# ===========================================
# MAIN MANAGEMENT INTERFACE
# ===========================================
header: "\n\n\n<gradient:#00ffee:#98d4b0>Portal Management:</gradient> <color:#fbbf24>{portal}</color>"
info-header: "<gradient:#94a3b8:#64748b>Portal Information</gradient>"
portal-info: "<color:#e5e7eb>Status:</color> {status} | <color:#e5e7eb>Type:</color> <color:#fbbf24>{type}</color> | <color:#e5e7eb>Connection:</color> <color:#60a5fa>{connection}</color>"
categories-header: "<gradient:#a78bfa:#8b5cf6>Management Categories:</gradient>"
main-instructions: "<gradient:#fde047:#fbbf24>Click category buttons to configure portal behavior</gradient>"
breadcrumb-main: "<gradient:#6b7280:#9ca3af>❯ Portal Management > Main Menu</gradient>"
# Separators
menu-separator: "<gradient:#6b7280:#9ca3af>──────────────────────────────────</gradient>"
quick-separator: "<color:#808080>│</color>"
# Category buttons
visual-category: "<gradient:#f472b6:#ec4899> [Visual Effects]</gradient>"
audio-category: "<gradient:#fbbf24:#f59e0b> [Audio Settings]</gradient>"
economy-category: "<gradient:#34d399:#22c55e> [Economy & Timing]</gradient>"
connection-category: "<gradient:#60a5fa:#3b82f6> [Connection Settings]</gradient>"
conditions-category: "<gradient:#fbbf24:#f59e0b> [Conditions & Requirements]</gradient>"
commands-category: "<gradient:#a78bfa:#8b5cf6> [Commands & Events]</gradient>"
admin-category: "<gradient:#ef4444:#dc2626> [Administrative]</gradient>"
# Category hover messages
hover-visual: "<gradient:#f472b6:#ec4899>Configure visual effects like particles and colors</gradient>"
hover-audio: "<gradient:#fbbf24:#f59e0b>Configure sound effects and audio settings</gradient>"
hover-economy: "<gradient:#34d399:#22c55e>Configure cost, cooldown, and warmup settings</gradient>"
hover-connection: "<gradient:#60a5fa:#3b82f6>Connect this portal to another portal</gradient>"
hover-conditions: "<gradient:#fbbf24:#f59e0b>Configure portal access requirements (money, items, level, time, weather)</gradient>"
hover-admin: "<gradient:#f87171:#ef4444>Access admin functions and portal control</gradient>"
hover-commands: "<gradient:#a78bfa:#8b5cf6>Configure commands that run when portal is used</gradient>"
# ===========================================
# DELETE CONFIRMATION
# ===========================================
delete-confirmation-header: "\n\n\n<gradient:#ef4444:#dc2626>Delete Confirmation</gradient>"
delete-confirmation-question: "<gradient:#f59e0b:#d97706>Are you sure you want to delete this {type}?</gradient>"
delete-confirmation-type: "<gradient:#6b7280:#9ca3af>Type: </gradient><gradient:#22c55e:#16a34a>{command_type}</gradient>"
delete-confirmation-type-exit: "<gradient:#6b7280:#9ca3af>Type: </gradient><gradient:#ef4444:#dc2626>{command_type}</gradient>"
delete-confirmation-item: "<gradient:#6b7280:#9ca3af>Item: </gradient><gradient:#f8fafc:#ffffff>{item}</gradient>"
delete-confirmation-confirm: "Confirm: "
delete-confirmation-yes: "<gradient:#ef4444:#dc2626>[YES]</gradient>"
delete-confirmation-yes-hover: "<gradient:#ef4444:#dc2626>Delete this {type}</gradient>"
delete-confirmation-no: "<gradient:#22c55e:#16a34a>[NO]</gradient>"
delete-confirmation-no-hover: "<gradient:#22c55e:#16a34a>Cancel deletion</gradient>"
# ===========================================
# COMMANDS MANAGEMENT
# ===========================================
commands-list-header: "\n\n\n<gradient:#a78bfa:#8b5cf6>Commands for Portal: {portal}</gradient>"
commands-empty:
- "<gradient:#fde047:#fbbf24>No commands configured yet.</gradient>"
- "<gradient:#94a3b8:#64748b>Commands execute automatically when players use this portal.</gradient>"
- "<gradient:#94a3b8:#64748b>Examples: Give items, teleport, run effects, send messages.</gradient>"
- "<gradient:#22c55e:#16a34a>💡 Click [✚ Add Command] above to get started!</gradient>"
commands-add-button: "<gradient:#4ade80:#22c55e>✚ Add Command</gradient>"
commands-add-hover: "<gradient:#94a3b8:#64748b>Add a new command to execute when portal is used</gradient>"
commands-back-button: "<gradient:#6b7280:#9ca3af>← [Back to Main Menu]</gradient>"
commands-back-hover: "<gradient:#94a3b8:#64748b>Return to main portal menu</gradient>"
# Add command interface
add-command-header: "\n\n\n<gradient:#a78bfa:#8b5cf6>Add Command for {portal}:</gradient>"
add-command-select: "<gradient:#94a3b8:#64748b>Select when this command should execute:</gradient>"
add-enter-button: "<gradient:#4ade80:#22c55e>█ Enter Command</gradient>"
add-exit-button: "<gradient:#f87171:#ef4444>█ Exit Command</gradient>"
command-tip-header: "<gradient:#fde047:#fbbf24>Command Tips:</gradient>"
# Command specific hovers
hover-enter-command: "<gradient:#6366f1:#8b5cf6>Command executed when entering portal</gradient>"
hover-exit-command: "<gradient:#6366f1:#8b5cf6>Command executed when exiting portal</gradient>"
hover-back-commands: "<gradient:#6b7280:#9ca3af>Return to commands list</gradient>"
# Command list display format
enter-command-type: "<gradient:#22c55e:#16a34a>ENTER:</gradient>"
exit-command-type: "<gradient:#ef4444:#dc2626>EXIT:</gradient>"
# Chat input prompts for commands
enter-command-prompt:
- "<gradient:#ef4444:#dc2626>⚠ Type 'cancel' at any time to abort</gradient>"
- "<gradient:#4ade80:#22c55e>Enter a command to execute when players ENTER this portal:</gradient>"
enter-command-examples:
- "<gradient:#94a3b8:#64748b>Examples:</gradient>"
- "<gradient:#94a3b8:#64748b>• say Welcome %player%!</gradient>"
- "<gradient:#94a3b8:#64748b>• give %player% diamond 1</gradient>"
- "<gradient:#94a3b8:#64748b>• tp %player% spawn</gradient>"
- "<gradient:#94a3b8:#64748b>• effect give %player% speed 30 1</gradient>"
enter-command-placeholder: "<gradient:#fbbf24:#f59e0b>Use %player% for the player's name</gradient>"
cancel-instruction: "<gradient:#6b7280:#9ca3af>Type 'cancel' to cancel</gradient>"
exit-command-prompt:
- "<gradient:#ef4444:#dc2626>⚠ Type 'cancel' at any time to abort</gradient>"
- "<gradient:#ef4444:#dc2626>Enter a command to execute when players EXIT at this portal:</gradient>"
exit-command-examples:
- "<gradient:#94a3b8:#64748b>Examples:</gradient>"
- "<gradient:#94a3b8:#64748b>• say Welcome %player%!</gradient>"
- "<gradient:#94a3b8:#64748b>• give %player% diamond 1</gradient>"
- "<gradient:#94a3b8:#64748b>• tp %player% spawn</gradient>"
- "<gradient:#94a3b8:#64748b>• effect give %player% speed 30 1</gradient>"
exit-command-placeholder: "<gradient:#fbbf24:#f59e0b>Use %player% for the player's name</gradient>"
# Command success messages
command-added-enter: "<gradient:#22c55e:#16a34a>✓ ENTER command added:</gradient> <gradient:#22c55e:#16a34a>{command}</gradient> <gradient:#6b7280:#9ca3af>(Total: {total_count} commands)</gradient>"
command-added-exit: "<gradient:#ef4444:#dc2626>✓ EXIT command added:</gradient> <gradient:#ef4444:#dc2626>{command}</gradient> <gradient:#6b7280:#9ca3af>(Total: {total_count} commands)</gradient>"
# Command error messages
input-cancelled: "<gradient:#ef4444:#dc2626>✖ Input cancelled</gradient>"
command-cannot-be-empty: "<gradient:#ef4444:#dc2626>✖ Command cannot be empty!</gradient>"
enter-valid-command: "<gradient:#3b82f6:#2563eb>Please enter a valid command:</gradient>"
# ===========================================
# CONDITIONS MANAGEMENT
# ===========================================
conditions-header: "\n\n\n\n\n<gradient:#f472b6:#ec4899>Conditions for Portal: {portal}</gradient>"
conditions-empty:
- "<gradient:#fde047:#fbbf24>No conditions configured yet.</gradient>"
- "<gradient:#94a3b8:#64748b>Conditions control when players can use this portal.</gradient>"
- "<gradient:#94a3b8:#64748b>Examples: Time of day, items required, money cost, player level.</gradient>"
- "<gradient:#22c55e:#16a34a>💡 Click [✚ Add Condition] above to get started!</gradient>"
conditions-add-button: "<gradient:#4ade80:#22c55e>✚ Add Condition</gradient>"
conditions-add-hover: "<gradient:#94a3b8:#64748b>Add a new condition for portal usage</gradient>"
conditions-back-button: "<gradient:#6b7280:#9ca3af>← [Back to Main Menu]</gradient>"
conditions-back-hover: "<gradient:#94a3b8:#64748b>Return to main portal menu</gradient>"
# Add condition menu
add-condition-select: "<gradient:#94a3b8:#64748b>Select the type of condition to add:</gradient>"
# Time & Weather conditions
time-weather-header: "<gradient:#fde047:#fbbf24>Time & Weather:</gradient>"
day-button: "<gradient:#4ade80:#22c55e>[Day] </gradient>"
day-hover: "<gradient:#94a3b8:#64748b>Portal only works during daytime</gradient>"
night-button: "<gradient:#60a5fa:#3b82f6>[Night] </gradient>"
night-hover: "<gradient:#94a3b8:#64748b>Portal only works during nighttime</gradient>"
rain-button: "<gradient:#a78bfa:#8b5cf6>[Rain] </gradient>"
rain-hover: "<gradient:#94a3b8:#64748b>Portal only works when it's raining</gradient>"
thunder-button: "<gradient:#c084fc:#a855f7>[Thunder] </gradient>"
thunder-hover: "<gradient:#94a3b8:#64748b>Portal only works during thunderstorms</gradient>"
clear-button: "<gradient:#fbbf24:#f59e0b>[Clear] </gradient>"
clear-hover: "<gradient:#94a3b8:#64748b>Portal works anytime (no restrictions)</gradient>"
sun-button: "<gradient:#fde047:#facc15>[Sun] </gradient>"
sun-hover: "<gradient:#94a3b8:#64748b>Portal only works during daytime with clear weather</gradient>"
storm-button: "<gradient:#7c3aed:#6d28d9>[Storm] </gradient>"
storm-hover: "<gradient:#94a3b8:#64748b>Portal only works during rain and thunder</gradient>"
# Item and economy requirements
item-requirements-header: "<gradient:#fbbf24:#f59e0b>Economy & Items:</gradient>"
economy-requirements-header: "<gradient:#fbbf24:#f59e0b>Economy Requirements</gradient>"
add-item-requirement: "<gradient:#4ade80:#22c55e>[Add Item Requirement]</gradient>"
item-requirement-hover: "<gradient:#10b981:#22c55e>Click and type in chat</gradient>"
add-money-requirement: "<gradient:#fbbf24:#f59e0b>[Add Money Requirement]</gradient>"
money-requirement-hover: "<gradient:#f59e0b:#d97706>Click and type in chat</gradient>"
# Level requirement conditions
level-requirements-header: "<gradient:#fde047:#fbbf24>Player Level:</gradient>"
add-level-requirement: "<gradient:#22c55e:#16a34a>[Custom Level]</gradient>"
level-requirement-hover: "<gradient:#6b7280:#9ca3af>Set custom level requirement</gradient>"
add-min-level-requirement: "<gradient:#22c55e:#16a34a>[Min Level]</gradient>"
min-level-hover: "<gradient:#6b7280:#9ca3af>Set minimum player level required</gradient>"
add-max-level-requirement: "<gradient:#ef4444:#dc2626>[Max Level]</gradient>"
max-level-hover: "<gradient:#6b7280:#9ca3af>Set maximum player level allowed</gradient>"
# Health & Food requirement conditions
health-requirements-header: "<gradient:#f87171:#ef4444>Health & Food:</gradient>"
add-min-health-requirement: "<gradient:#22c55e:#16a34a>[Min Health]</gradient>"
min-health-hover: "<gradient:#6b7280:#9ca3af>Set minimum health required</gradient>"
add-max-health-requirement: "<gradient:#ef4444:#dc2626>[Max Health]</gradient>"
max-health-hover: "<gradient:#6b7280:#9ca3af>Set maximum health allowed</gradient>"
add-min-food-requirement: "<gradient:#22c55e:#16a34a>[Min Food]</gradient>"
min-food-hover: "<gradient:#6b7280:#9ca3af>Set minimum food level required</gradient>"
add-max-food-requirement: "<gradient:#ef4444:#dc2626>[Max Food]</gradient>"
max-food-hover: "<gradient:#6b7280:#9ca3af>Set maximum food level allowed</gradient>"
# Equipment requirement conditions
equipment-requirements-header: "<gradient:#a855f7:#9333ea>Equipment:</gradient>"
add-armor-requirement: "<gradient:#6366f1:#4f46e5>[Armor]</gradient>"
armor-hover: "<gradient:#6b7280:#9ca3af>Require specific armor type</gradient>"
add-weapon-requirement: "<gradient:#f59e0b:#d97706>[Weapon]</gradient>"
weapon-hover: "<gradient:#6b7280:#9ca3af>Require specific weapon in hand</gradient>"
add-naked-requirement: "<gradient:#8b5cf6:#7c3aed>[Naked]</gradient>"
naked-hover: "<gradient:#6b7280:#9ca3af>Player must have no armor equipped</gradient>"
add-full-armor-requirement: "<gradient:#10b981:#059669>[Full Armor]</gradient>"
full-armor-hover: "<gradient:#6b7280:#9ca3af>Player must have full armor set</gradient>"
# Player State conditions
player-state-header: "<gradient:#06b6d4:#0891b2>Player State:</gradient>"
add-sneak-requirement: "<gradient:#8b5cf6:#7c3aed>[Sneaking]</gradient>"
sneak-hover: "<gradient:#6b7280:#9ca3af>Player must be sneaking</gradient>"
add-flying-requirement: "<gradient:#06b6d4:#0891b2>[Flying]</gradient>"
flying-hover: "<gradient:#6b7280:#9ca3af>Player must be flying</gradient>"
add-jumping-requirement: "<gradient:#22c55e:#16a34a>[Jumping]</gradient>"
jumping-hover: "<gradient:#6b7280:#9ca3af>Player must be jumping/in air</gradient>"
add-on-fire-requirement: "<gradient:#ef4444:#dc2626>[On Fire]</gradient>"
on-fire-hover: "<gradient:#6b7280:#9ca3af>Player must be on fire</gradient>"
add-sprinting-requirement: "<gradient:#f59e0b:#d97706>[Sprinting]</gradient>"
sprinting-hover: "<gradient:#6b7280:#9ca3af>Player must be sprinting</gradient>"
# Environment requirement conditions
environment-requirements-header: "<gradient:#10b981:#059669>Environment:</gradient>"
add-world-requirement: "<gradient:#6366f1:#4f46e5>[World]</gradient>"
world-hover: "<gradient:#6b7280:#9ca3af>Restrict to specific world</gradient>"
add-biome-requirement: "<gradient:#22c55e:#16a34a>[Biome]</gradient>"
biome-hover: "<gradient:#6b7280:#9ca3af>Restrict to specific biome</gradient>"
add-gamemode-requirement: "<gradient:#a855f7:#9333ea>[GameMode]</gradient>"
gamemode-hover: "<gradient:#6b7280:#9ca3af>Require specific game mode</gradient>"
# Social requirement conditions
social-requirements-header: "<gradient:#f472b6:#ec4899>Social:</gradient>"
add-min-players-requirement: "<gradient:#22c55e:#16a34a>[Min Players]</gradient>"
min-players-hover: "<gradient:#6b7280:#9ca3af>Minimum players nearby required</gradient>"
add-max-players-requirement: "<gradient:#ef4444:#dc2626>[Max Players]</gradient>"
max-players-hover: "<gradient:#6b7280:#9ca3af>Maximum players nearby allowed</gradient>"
add-solo-requirement: "<gradient:#8b5cf6:#7c3aed>[Solo Only]</gradient>"
solo-hover: "<gradient:#6b7280:#9ca3af>Player must be alone (no nearby players)</gradient>"
# Achievement requirement conditions
achievement-requirements-header: "<gradient:#fbbf24:#f59e0b>Achievements:</gradient>"
add-advancement-requirement: "<gradient:#10b981:#059669>[Advancement]</gradient>"
advancement-hover: "<gradient:#6b7280:#9ca3af>Require specific advancement/achievement</gradient>"
add-playtime-requirement: "<gradient:#6366f1:#4f46e5>[Playtime]</gradient>"
playtime-hover: "<gradient:#6b7280:#9ca3af>Require minimum playtime in minutes</gradient>"
# Navigation buttons
back-to-conditions-button: "<gradient:#6b7280:#9ca3af>← Back to Conditions</gradient>"
back-to-conditions-hover: "<gradient:#6b7280:#9ca3af>Return to conditions management</gradient>"
# Chat input prompts for conditions
money-input-prompt:
- "<gradient:#ef4444:#dc2626>⚠ Type 'cancel' at any time to abort</gradient>"
- "<gradient:#22c55e:#16a34a>Enter money amount in dollars (0.01 - 999999):</gradient>"
- "<gradient:#6b7280:#9ca3af>💡 Common values: 100, 500, 1000</gradient>"
money-input-example: "<gradient:#3b82f6:#2563eb>Examples: 100, 50.5, 1000, 2500</gradient>"
material-input-prompt: "<gradient:#fbbf24:#f59e0b>Enter the material name required to use this portal:</gradient>"
material-input-example: "<gradient:#6b7280:#9ca3af>Example: DIAMOND, GOLD_INGOT, EMERALD</gradient>"
amount-input-prompt: "<gradient:#f59e0b:#d97706>Enter the quantity (1-64 typical):</gradient>"
amount-input-example: "<gradient:#3b82f6:#2563eb>Examples: 1, 5, 10, 32, 64</gradient>"
level-input-prompt:
- "<gradient:#ef4444:#dc2626>⚠ Type 'cancel' at any time to abort</gradient>"
- "<gradient:#22c55e:#16a34a>Enter player level requirement (0-1000):</gradient>"
- "<gradient:#6b7280:#9ca3af>💡 Common: 10, 25, 50, 100</gradient>"
level-input-example: "<gradient:#3b82f6:#2563eb>Examples: 10, 25, 50, 100</gradient>"
min-players-input-prompt:
- "<gradient:#ef4444:#dc2626>⚠ Type 'cancel' at any time to abort</gradient>"
- "<gradient:#22c55e:#16a34a>Enter minimum players nearby required (1+):</gradient>"
- "<gradient:#6b7280:#9ca3af>💡 Common: 2, 3, 5, 10</gradient>"
min-players-input-example: "<gradient:#3b82f6:#2563eb>Examples: 2, 3, 5, 10</gradient>"
max-players-input-prompt:
- "<gradient:#ef4444:#dc2626>⚠ Type 'cancel' at any time to abort</gradient>"
- "<gradient:#22c55e:#16a34a>Enter maximum players nearby allowed (1+):</gradient>"
- "<gradient:#6b7280:#9ca3af>💡 Common: 5, 10, 20, 50</gradient>"
max-players-input-example: "<gradient:#3b82f6:#2563eb>Examples: 5, 10, 20, 50</gradient>"
playtime-input-prompt:
- "<gradient:#ef4444:#dc2626>⚠ Type 'cancel' at any time to abort</gradient>"
- "<gradient:#22c55e:#16a34a>Enter required playtime in minutes (1+):</gradient>"
- "<gradient:#6b7280:#9ca3af>💡 Common: 60 (1hr), 120 (2hr), 300 (5hr)</gradient>"
playtime-input-example: "<gradient:#3b82f6:#2563eb>Examples: 30, 60, 120, 300, 600</gradient>"
world-input-prompt:
- "<gradient:#ef4444:#dc2626>⚠ Type 'cancel' at any time to abort</gradient>"
- "<gradient:#22c55e:#16a34a>Enter world name required (exact spelling):</gradient>"
world-input-example: "<gradient:#3b82f6:#2563eb>Examples: world, world_nether, world_the_end</gradient>"
biome-input-prompt:
- "<gradient:#ef4444:#dc2626>⚠ Type 'cancel' at any time to abort</gradient>"
- "<gradient:#22c55e:#16a34a>Enter biome name (not case-sensitive):</gradient>"
biome-input-example: "<gradient:#3b82f6:#2563eb>Examples: plains, FOREST, desert, mountains</gradient>"
gamemode-input-prompt:
- "<gradient:#ef4444:#dc2626>⚠ Type 'cancel' at any time to abort</gradient>"
- "<gradient:#22c55e:#16a34a>Enter game mode (not case-sensitive):</gradient>"
gamemode-input-example: "<gradient:#3b82f6:#2563eb>Examples: survival, CREATIVE, adventure, spectator</gradient>"
advancement-input-prompt:
- "<gradient:#ef4444:#dc2626>⚠ Type 'cancel' at any time to abort</gradient>"
- "<gradient:#22c55e:#16a34a>Enter advancement ID (namespace:path format):</gradient>"
advancement-input-example: "<gradient:#3b82f6:#2563eb>Examples: minecraft:story/mine_stone, minecraft:nether/root</gradient>"
# Condition validation messages
amount-too-small: "<gradient:#ef4444:#dc2626>✖ Amount must be greater than 0!</gradient>"
enter-valid-amount: "<gradient:#6b7280:#9ca3af>Please enter a valid amount:</gradient>"
invalid-number-format: "<gradient:#ef4444:#dc2626>✖ Invalid number format!</gradient>"
enter-valid-number: "<gradient:#6b7280:#9ca3af>Please enter a valid number (e.g., 100):</gradient>"
enter-valid-whole-number: "<gradient:#3b82f6:#2563eb>Please enter a valid whole number (e.g., 5):</gradient>"
invalid-money-amount: "<gradient:#ef4444:#dc2626>Invalid money amount! Please enter a valid number.</gradient>"
invalid-item-amount: "<gradient:#ef4444:#dc2626>Invalid item amount! Please enter a valid number.</gradient>"
# Condition success messages
condition-added: "<gradient:#22c55e:#16a34a>Successfully added {condition} condition to portal {portal}!</gradient>"
money-condition-added: "<gradient:#22c55e:#16a34a>✓ Money condition added: ${amount}</gradient> <gradient:#6b7280:#9ca3af>(Total: {total_count} conditions)</gradient>"
item-condition-added: "<gradient:#22c55e:#16a34a>✓ Item condition added: {amount}x {material}</gradient> <gradient:#6b7280:#9ca3af>(Total: {total_count} conditions)</gradient>"
level-condition-added: "<gradient:#22c55e:#16a34a>✓ Level requirement added: Level {level}</gradient> <gradient:#6b7280:#9ca3af>(Total: {total_count} conditions)</gradient>"
min-players-condition-added: "<gradient:#22c55e:#16a34a>✓ Min players added: {count} players</gradient> <gradient:#6b7280:#9ca3af>(Total: {total_count} conditions)</gradient>"
max-players-condition-added: "<gradient:#22c55e:#16a34a>✓ Max players added: {count} players</gradient> <gradient:#6b7280:#9ca3af>(Total: {total_count} conditions)</gradient>"
playtime-condition-added: "<gradient:#22c55e:#16a34a>✓ Playtime added: {count} minutes</gradient> <gradient:#6b7280:#9ca3af>(Total: {total_count} conditions)</gradient>"
world-condition-added: "<gradient:#22c55e:#16a34a>✓ World requirement added: {world}</gradient> <gradient:#6b7280:#9ca3af>(Total: {total_count} conditions)</gradient>"
biome-condition-added: "<gradient:#22c55e:#16a34a>✓ Biome requirement added: {biome}</gradient> <gradient:#6b7280:#9ca3af>(Total: {total_count} conditions)</gradient>"
gamemode-condition-added: "<gradient:#22c55e:#16a34a>✓ Gamemode requirement added: {gamemode}</gradient> <gradient:#6b7280:#9ca3af>(Total: {total_count} conditions)</gradient>"
advancement-condition-added: "<gradient:#22c55e:#16a34a>✓ Advancement required: {advancement}</gradient> <gradient:#6b7280:#9ca3af>(Total: {total_count} conditions)</gradient>"
# Condition validation errors
level-too-small: "<gradient:#ef4444:#dc2626>✖ Level must be at least 1.</gradient>"
enter-valid-level: "<gradient:#3b82f6:#2563eb>Please enter a valid level (1 or higher).</gradient>"
min-players-too-small: "<gradient:#ef4444:#dc2626>✖ Minimum players must be at least 1.</gradient>"
enter-valid-min-players: "<gradient:#3b82f6:#2563eb>Please enter a valid number (1 or higher).</gradient>"
max-players-too-small: "<gradient:#ef4444:#dc2626>✖ Maximum players must be at least 1.</gradient>"
enter-valid-max-players: "<gradient:#3b82f6:#2563eb>Please enter a valid number (1 or higher).</gradient>"
playtime-too-small: "<gradient:#ef4444:#dc2626>✖ Playtime must be at least 1 minute.</gradient>"
enter-valid-playtime: "<gradient:#3b82f6:#2563eb>Please enter a valid number of minutes.</gradient>"
world-name-empty: "<gradient:#ef4444:#dc2626>✖ World name cannot be empty!</gradient>"
enter-valid-world: "<gradient:#3b82f6:#2563eb>Please enter a valid world name.</gradient>"
biome-name-empty: "<gradient:#ef4444:#dc2626>✖ Biome name cannot be empty!</gradient>"
enter-valid-biome: "<gradient:#3b82f6:#2563eb>Please enter a valid biome name.</gradient>"
gamemode-name-empty: "<gradient:#ef4444:#dc2626>✖ Gamemode cannot be empty!</gradient>"
enter-valid-gamemode: "<gradient:#3b82f6:#2563eb>Please enter a valid gamemode.</gradient>"
advancement-id-empty: "<gradient:#ef4444:#dc2626>✖ Advancement ID cannot be empty!</gradient>"
enter-valid-advancement: "<gradient:#3b82f6:#2563eb>Please enter a valid advancement ID.</gradient>"
invalid-advancement: "<gradient:#ef4444:#dc2626>✖ Invalid advancement ID format!</gradient>"
# Material/item handling
hand-empty: "<gradient:#ef4444:#dc2626>✖ You must hold an item in your hand.</gradient>"
enter-valid-material: "<gradient:#3b82f6:#2563eb>Please enter a valid material name.</gradient>"
custom-item-set: "<gradient:#22c55e:#16a34a>✓ Custom item set:</gradient> <gradient:#f59e0b:#d97706>{item}</gradient>"
material-set: "<gradient:#22c55e:#16a34a>✓ Material set:</gradient> <gradient:#f59e0b:#d97706>{material}</gradient>"
enter-amount-required:
- "<gradient:#ef4444:#dc2626>⚠ Type 'cancel' to abort</gradient>"
- "<gradient:#22c55e:#16a34a>Step 2 of 2: Now enter the amount of {material} required:</gradient>"
- "<gradient:#6b7280:#9ca3af>💡 Common: 1, 5, 10, 64</gradient>"
amount-example: "<gradient:#3b82f6:#2563eb>Examples: 1, 5, 10, 32, 64</gradient>"
invalid-material: "<gradient:#ef4444:#dc2626>✖ Invalid material:</gradient> <gradient:#f59e0b:#d97706>{material}</gradient>"
material-tip: "<gradient:#3b82f6:#2563eb>Tip: Type 'HAND' to use the item in your hand, or use tab completion.</gradient>"
custom-item-condition-added: "<gradient:#22c55e:#16a34a>✓ Item condition added: </gradient><gradient:#f59e0b:#d97706>{amount}x {item}</gradient>"
portal-not-found: "<gradient:#ef4444:#dc2626>✖ Portal not found! Session expired.</gradient>"
# ===========================================
# VISUAL EFFECTS MANAGEMENT
# ===========================================
visual-header: "\n\n\n<gradient:#f472b6:#ec4899>Visual Effects:</gradient> <color:#fbbf24>{portal}</color>"
visual-current:
- "<gradient:#94a3b8:#64748b>Current Settings:</gradient>"
- "<color:#e5e7eb>Particle:</color> <color:#fbbf24>{particle}</color> | <color:#e5e7eb>Color:</color> <color:#fbbf24>{color}</color> | <color:#e5e7eb>Count:</color> <color:#fbbf24>{count}</color>"
visual-particle-button: "<gradient:#f472b6:#ec4899> [Set Particle]</gradient>"
visual-color-button: "<gradient:#fbbf24:#f59e0b> [Set Color]</gradient>"
visual-count-button: "<gradient:#4ade80:#22c55e> [Set Count]</gradient>"
visual-spread-button: "<gradient:#60a5fa:#3b82f6> [Set Spread]</gradient>"
visual-interval-button: "<gradient:#a78bfa:#8b5cf6> [Set Interval]</gradient>"
hover-particle: "<gradient:#f472b6:#ec4899>Change particle effect type</gradient>"
hover-color: "<gradient:#fbbf24:#f59e0b>Set custom particle color</gradient>"
hover-count: "<gradient:#4ade80:#22c55e>Adjust particle density</gradient>"
hover-spread: "<gradient:#60a5fa:#3b82f6>Configure particle spread pattern</gradient>"
hover-interval: "<gradient:#a78bfa:#8b5cf6>Set particle display timing</gradient>"
# ===========================================
# AUDIO EFFECTS MANAGEMENT
# ===========================================
audio-header: "\n\n\n<gradient:#fbbf24:#f59e0b>Audio Settings:</gradient> <color:#fbbf24>{portal}</color>"
audio-current-detailed: "<gradient:#94a3b8:#64748b>Current:</gradient> <color:#fbbf24>{sound}</color> | <color:#e5e7eb>Pitch:</color> <color:#fbbf24>{pitch}</color> | <color:#e5e7eb>Volume:</color> <color:#fbbf24>{volume}</color>"
audio-set-button: "<gradient:#fbbf24:#f59e0b> [Set Sound]</gradient>"
audio-disable-button: "<gradient:#f87171:#ef4444> [Disable Sound]</gradient>"
audio-pitch-volume-header: "\n<gradient:#a78bfa:#8b5cf6>🎵 Pitch & Volume Controls</gradient>"
audio-pitch-low-button: "<gradient:#60a5fa:#3b82f6> [Low Pitch (0.8)]</gradient>"
audio-pitch-normal-button: "<gradient:#4ade80:#22c55e> [Normal Pitch (1.0)]</gradient>"
audio-pitch-high-button: "<gradient:#fbbf24:#f59e0b> [High Pitch (1.5)]</gradient>"
audio-pitch-custom-button: "<gradient:#e5e7eb:#d1d5db> [Custom Pitch...]</gradient>"
audio-volume-quiet-button: "<gradient:#60a5fa:#3b82f6> [Quiet (0.3)]</gradient>"
audio-volume-normal-button: "<gradient:#4ade80:#22c55e> [Normal (1.0)]</gradient>"
audio-volume-loud-button: "<gradient:#fbbf24:#f59e0b> [Loud (1.5)]</gradient>"
audio-volume-custom-button: "<gradient:#e5e7eb:#d1d5db> [Custom Volume...]</gradient>"
hover-set-sound: "<gradient:#fbbf24:#f59e0b>Configure portal sound effect</gradient>"
hover-disable-sound: "<gradient:#f87171:#ef4444>Turn off portal sounds</gradient>"
hover-pitch-low: "<gradient:#60a5fa:#3b82f6>Set pitch to 0.8 (lower tone)</gradient>"
hover-pitch-normal: "<gradient:#4ade80:#22c55e>Set pitch to 1.0 (normal tone)</gradient>"
hover-pitch-high: "<gradient:#fbbf24:#f59e0b>Set pitch to 1.5 (higher tone)</gradient>"
hover-pitch-custom: "<gradient:#e5e7eb:#d1d5db>Enter a custom pitch value (0.0-2.0)</gradient>"
hover-volume-quiet: "<gradient:#60a5fa:#3b82f6>Set volume to 0.3 (quieter)</gradient>"
hover-volume-normal: "<gradient:#4ade80:#22c55e>Set volume to 1.0 (normal)</gradient>"
hover-volume-loud: "<gradient:#fbbf24:#f59e0b>Set volume to 1.5 (louder)</gradient>"
hover-volume-custom: "<gradient:#e5e7eb:#d1d5db>Enter a custom volume value (0.0-2.0)</gradient>"
audio-need-sound-first: "<gradient:#94a3b8:#64748b>→ Set a custom sound first to adjust pitch and volume</gradient>"
# ===========================================
# ECONOMY & TIMING MANAGEMENT
# ===========================================
economy-header: "\n\n\n<gradient:#4ade80:#22c55e>Economy & Timing:</gradient> <color:#fbbf24>{portal}</color>"
economy-current:
- "<gradient:#94a3b8:#64748b>Current Settings:</gradient>"
- "<color:#e5e7eb>Cost:</color> <color:#fbbf24>{cost}</color> | <color:#e5e7eb>Cooldown:</color> <color:#fbbf24>{cooldown}</color> | <color:#e5e7eb>Warmup:</color> <color:#fbbf24>{warmup}</color>"
economy-cost-button: "<gradient:#fbbf24:#f59e0b> [Set Cost]</gradient>"
economy-cooldown-button: "<gradient:#60a5fa:#3b82f6> [Set Cooldown]</gradient>"
economy-warmup-button: "<gradient:#c084fc:#a855f7> [Set Warmup]</gradient>"
hover-cost: "<gradient:#fbbf24:#f59e0b>Set portal usage fee</gradient>"
hover-cooldown: "<gradient:#60a5fa:#3b82f6>Set time between portal uses</gradient>"
hover-warmup: "<gradient:#c084fc:#a855f7>Set activation delay</gradient>"
# ===========================================
# CONNECTION MANAGEMENT
# ===========================================
connection-header: "\n\n\n<gradient:#60a5fa:#3b82f6>Connection Settings:</gradient> <color:#fbbf24>{portal}</color>"
connection-current: "<gradient:#94a3b8:#64748b>Connected To:</gradient> <color:#fbbf24>{target}</color>"
connection-connect-button: "<gradient:#4ade80:#22c55e> [Connect Portal]</gradient>"
connection-unlink-button: "<gradient:#f87171:#ef4444> [Unlink Portal]</gradient>"
connection-type-button: "<gradient:#fbbf24:#f59e0b> [Set Type]</gradient>"
connection-direction-button: "<gradient:#c084fc:#a855f7> [Set Direction]</gradient>"
hover-connect: "<gradient:#4ade80:#22c55e>Link to another portal</gradient>"
hover-unlink: "<gradient:#f87171:#ef4444>Remove portal connection</gradient>"
hover-type: "<gradient:#fbbf24:#f59e0b>Change portal type (standard/RTP/oneway)</gradient>"
hover-direction: "<gradient:#c084fc:#a855f7>Set teleport facing direction</gradient>"
# ===========================================
# ADMINISTRATIVE MANAGEMENT
# ===========================================
admin-header: "\n\n\n\n\n\n\n\n\n\n<gradient:#f87171:#ef4444>Administrative Actions:</gradient> <color:#fbbf24>{portal}</color>"
admin-status: "<gradient:#94a3b8:#64748b>Portal Status:</gradient> {status}"
admin-enable-button: "<gradient:#4ade80:#22c55e> [Enable Portal]</gradient>"
admin-disable-button: "<gradient:#f87171:#ef4444> [Disable Portal]</gradient>"
admin-rename-button: "<gradient:#fbbf24:#f59e0b> [Rename Portal]</gradient>"
admin-move-button: "<gradient:#60a5fa:#3b82f6> [Move Portal]</gradient>"
admin-reset-button: "<gradient:#c084fc:#a855f7> [Reset Settings]</gradient>"
hover-enable: "<gradient:#4ade80:#22c55e>Activate portal for use</gradient>"
hover-disable: "<gradient:#f87171:#ef4444>Deactivate portal temporarily</gradient>"
hover-rename: "<gradient:#fbbf24:#f59e0b>Change portal name</gradient>"
hover-move: "<gradient:#60a5fa:#3b82f6>Relocate portal to current position</gradient>"
hover-reset: "<gradient:#c084fc:#a855f7>Reset all settings to defaults</gradient>"
# ===========================================
# PAGINATION SYSTEM
# ===========================================
paginated-header: "<gradient:#a78bfa:#8b5cf6>{title} ({current}/{total})</gradient>"
delete-button: "<gradient:#f87171:#ef4444> ✖</gradient>"
delete-hover: "<gradient:#f87171:#ef4444>Delete {item}</gradient>"
previous-button: "<gradient:#60a5fa:#3b82f6>←</gradient>"
previous-hover: "<gradient:#94a3b8:#64748b>Go to page {page}</gradient>"
page-info: "<gradient:#94a3b8:#64748b> Page {page}/{total_pages} </gradient>"
next-button: "<gradient:#60a5fa:#3b82f6>→</gradient>"
next-hover: "<gradient:#94a3b8:#64748b>Go to page {page}</gradient>"
add-item-button: "<gradient:#4ade80:#22c55e>✚ Add {type}</gradient>"
add-item-hover: "<gradient:#94a3b8:#64748b>Add a new {type}</gradient>"
back-to-menu-button: "<gradient:#6b7280:#9ca3af>← [Back to Main Menu]</gradient>"
back-to-menu-hover: "<gradient:#94a3b8:#64748b>Return to main portal menu</gradient>"
# ===========================================
# BREADCRUMB NAVIGATION
# ===========================================
breadcrumb-conditions: "<gradient:#6b7280:#9ca3af>❯ Portal Management > Conditions</gradient>"
breadcrumb-add-condition: "<gradient:#6b7280:#9ca3af>❯ Portal Management > Conditions > Add Condition</gradient>"
breadcrumb-commands: "<gradient:#6b7280:#9ca3af>❯ Portal Management > Commands</gradient>"
breadcrumb-add-command: "<gradient:#6b7280:#9ca3af>❯ Portal Management > Commands > Add Command</gradient>"
breadcrumb-visual: "<gradient:#6b7280:#9ca3af>❯ Portal Management > Visual Effects</gradient>"
breadcrumb-audio: "<gradient:#6b7280:#9ca3af>❯ Portal Management > Audio Settings</gradient>"
breadcrumb-economy: "<gradient:#6b7280:#9ca3af>❯ Portal Management > Economy & Timing</gradient>"
breadcrumb-connection: "<gradient:#6b7280:#9ca3af>❯ Portal Management > Connection Settings</gradient>"
breadcrumb-admin: "<gradient:#6b7280:#9ca3af>❯ Portal Management > Administrative</gradient>"
# Back navigation
back-main-button: "<gradient:#6b7280:#9ca3af>← [Back to Main Menu]</gradient>"
hover-back-main: "<gradient:#fbbf24:#f59e0b>Return to portal management overview</gradient>"
Still stuck? Ask about this page