Default Config Files
Last updated Jul 6, 2026
Default Config Files
These are the exact default files shipped in SoapsTeleporter 1.0.5. They are copied from the plugin JAR on first run into plugins/SoapsTeleporter/.
Use this page to reset a file or compare your edits against the defaults.
config.yml
# ############################################
# # #
# # Plugin: SoapsTeleporter #
# # #
# # Created by AlternativeSoap #
# # Website: www.SoapsUniverse.com #
# # Support: https://discord.gg/mawAzwFq #
# # #
# ############################################
# ==========================================
# General Settings
# ==========================================
general:
# Enable debug logging (can also be toggled with /st debug)
debug: false
# Auto-save interval in minutes (0 to disable, recommended: 5-15)
auto-save-interval: 5
# Message spam prevention cooldown (milliseconds)
message-cooldown: 3000
# ==========================================
# GUI Settings
# ==========================================
gui:
# Enable GUI-based portal management (opens chest inventories)
# When enabled: all management uses GUI menus, interactive chat is disabled
# When disabled: all management uses the interactive chat system (clickable text)
enabled: true
# ==========================================
# Performance Settings
# ==========================================
performance:
# Maximum particles to spawn per tick (0 = unlimited, recommended: 100-200 for busy servers)
max-particles-per-tick: 200
# Maximum particles per portal (0 = unlimited)
max-particles-per-portal: 500
# Radius for detecting nearby players for particle rendering (blocks)
nearby-player-radius: 30.0
# Enable adaptive particle density based on player count
adaptive-density: true
# Number of online players required to trigger density limiting
adaptive-density-player-threshold: 15
# ==========================================
# Particle Settings
# ==========================================
particles:
# Enable particle effects globally
enabled: true
# Portal Region Particles
portal:
# Particle type (supports ALL Minecraft particles)
# Popular: DUST, FLAME, END_ROD, PORTAL, ENCHANT, HEART, HAPPY_VILLAGER
particle: "DUST"
# Particle count per display interval
count: 8
# Particle spread/distribution (0.0 = tight, 1.0 = wide)
spread: 0.3
# Display interval in ticks (10 = 0.5 seconds, lower = smoother but more CPU)
interval: 10
# Enable 3D volumetric particles (fills entire portal space)
volumetric-rendering: true
# Teleportation Effect Particles
teleport:
particle: "ENCHANT"
count: 30
# Portal Selection Markers (wand p1/p2)
selection:
particle: "END_ROD"
count: 1
# Display interval in ticks (20 = 1 second)
interval: 20
spread: 0.2
# ==========================================
# Portal Mechanics
# ==========================================
portals:
limits:
# Maximum portals per player (0 = unlimited, bypass: st.portal.limit.bypass)
max-portals-per-player: 0
# Maximum portals per world (0 = unlimited)
max-portals-per-world: 0
# Maximum portals per chunk (0 = unlimited, prevents chunk overloading)
max-portals-per-chunk: 4
# Portal size limits (blocks per side)
max-size: 50
min-size: 1
shape-preview:
# Default frame block used by /st shapepreview place when no material is provided.
default-frame-material: OBSIDIAN
teleportation:
# Preserve player orientation (yaw/pitch)
preserve-orientation: true
# Auto-adjust landing if destination is blocked
auto-adjust-destination: true
# ==========================================
# Player Settings
# ==========================================
players:
permissions:
# Require specific permissions for portal access
per-portal-permissions: true
# ==========================================
# Safety Settings
# ==========================================
safety:
# Check for safe teleport destinations
safe-teleport: true
# Allow teleportation to different worlds
cross-world: true
# Enhanced destination safety checks
enhanced-safety: true
# Maximum radius to search for safe landing spots (blocks)
safe-search-radius: 10
# ==========================================
# Random Teleport (RTP) Settings
# ==========================================
rtp:
preload:
enabled: true
# Chunks to preload around destination (1 = 9 chunks total)
radius: 1
# Max wait time for chunk loading (milliseconds)
timeout: 5000
# Allow generation of new chunks
allow-new-chunk-generation: true
cooldown:
enabled: true
# Cooldown time in seconds (0 = no cooldown)
time: 60
retry:
max-attempts: 10
retry-delay: 100
# ==========================================
# Portal Protection
# ==========================================
protection:
enabled: true
# Radius around portal to protect (blocks)
radius: 2
# Protect the portal frame blocks
protect-frame: true
# Permission to bypass: st.protection.bypass
bypass-permission: "st.protection.bypass"
# ==========================================
# Economy Settings (Vault Integration)
# ==========================================
economy:
# Enable Vault economy integration (requires Vault + economy plugin)
enabled: true
# Currency format for display
currency-format: "$%.2f"
# Take payment before or after teleportation
payment-timing: "before"
# Refund on failed teleportation
refund-on-failure: true
# ==========================================
# Plugin Integrations (all disabled by default)
# ==========================================
integrations:
# WorldGuard integration - Respect region permissions
worldguard:
enabled: false
require-build-permission: true
check-teleport-permission: true
respect-claims-rtp: true
# Lands integration - Respect land claims
lands:
enabled: false
respect-claims-rtp: true
require-land-permission: true
messages.yml
# ############################################
# # #
# # 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>{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>"
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>"
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: "<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:#00ff6a:#00d4ff>✨ You have received the portal wand!</gradient>"
already-have: "<gradient:#ffa500:#ff6347>You already have the portal wand.</gradient>"
both-positions-set: "<gradient:#00ff6a:#00d4ff>🎉 Both positions have been set! Use </gradient><gradient:#22c55e:#16a34a>/st add <name></gradient><gradient:#00ff6a:#00d4ff> to create a portal.</gradient>"
positions-ready: "<gradient:#00ff6a:#00d4ff>Positions are ready. Use </gradient><gradient:#22c55e:#16a34a>/st add <name></gradient><gradient:#00ff6a:#00d4ff>.</gradient>"
shapepreview-hint: "<gradient:#87ceeb:#4682b4>Preview a frame: </gradient><gradient:#22c55e:#16a34a>/st shapepreview <rectangle|circle|triangle|hexagon|random_rift></gradient>"
shapepreview-controls: "<gradient:#87ceeb:#4682b4>Then use: </gradient><gradient:#22c55e:#16a34a>/st shapepreview rotate</gradient><gradient:#87ceeb:#4682b4>, </gradient><gradient:#22c55e:#16a34a>/st shapepreview mirror</gradient><gradient:#87ceeb:#4682b4>, </gradient><gradient:#22c55e:#16a34a>/st shapepreview undo</gradient><gradient:#87ceeb:#4682b4>, </gradient><gradient:#22c55e:#16a34a>/st shapepreview place [block]</gradient>"
display-name: "<gradient:#6C63FF:#A855F7>Portal Wand</gradient>"
lore:
- "<gradient:#87ceeb:#4682b4>Right-click to select positions</gradient>"
- "<gradient:#87ceeb:#4682b4>Shift+right-click to clear/switch mode</gradient>"
- "<gradient:#8c50ff:#c084fc>Shift+click with no selection: custom shape mode</gradient>"
- "<gradient:#8c50ff:#c084fc>In custom mode: click blocks to form a portal</gradient>"
# =====================================
# POSITIONS
# =====================================
positions:
position-set-1: "<gradient:#00ff6a:#00d4ff>Position 1 set at <#FFD700>{x}</#FFD700>, <#FFD700>{y}</#FFD700>, <#FFD700>{z}</#FFD700>.</gradient>"
position-set-2: "<gradient:#00ff6a:#00d4ff>Position 2 set at <#FFD700>{x}</#FFD700>, <#FFD700>{y}</#FFD700>, <#FFD700>{z}</#FFD700>.</gradient>"
position-1-next: "<gradient:#87ceeb:#4682b4>Now right-click to set position 2.</gradient>"
positions-cleared: "<gradient:#ffa500:#ff6347>Positions have been cleared.</gradient>"
auto-cleared: "<gradient:#87ceeb:#4682b4>Previous positions were auto-cleared.</gradient>"
custom-shape-started: "<gradient:#8c50ff:#c084fc>Custom shape mode enabled! Right-click blocks to select them. Shift+right-click to cancel.</gradient>"
custom-shape-cancelled: "<gradient:#ffa500:#ff6347>Custom shape mode cancelled. All blocks cleared.</gradient>"
custom-block-added: "<gradient:#8c50ff:#c084fc>Block added at <#FFD700>{x}</#FFD700>, <#FFD700>{y}</#FFD700>, <#FFD700>{z}</#FFD700>. <#b0b0b0>({count} blocks selected)</gradient>"
custom-block-removed: "<gradient:#ffa500:#ff6347>Block removed at <#FFD700>{x}</#FFD700>, <#FFD700>{y}</#FFD700>, <#FFD700>{z}</#FFD700>. <#b0b0b0>({count} blocks selected)</gradient>"
custom-shape-ready: "<gradient:#00ff6a:#00d4ff>{count} blocks selected. Use <#FFD700>/st add <name></#FFD700> to create.</gradient>"
custom-blocks-cleared: "<gradient:#ffa500:#ff6347>Custom shape blocks cleared. Shift+right-click again to exit custom mode.</gradient>"
# =====================================
# CONDITIONS
# =====================================
conditions:
portal-disabled: "<gradient:#ff4b1f:#ff0000>Portal <#FFD700>{portal}</#FFD700> is currently disabled.</gradient>"
portal-not-connected: "<gradient:#ff4b1f:#ff0000>Portal <#FFD700>{portal}</#FFD700> is not connected to anything.</gradient>"
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>"
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: "<gradient:#00ff6a:#00d4ff>Undid last preview action.</gradient>"
undo-empty: "<gradient:#ffa500:#ff6347>Nothing to undo.</gradient>"
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>⚠ Warning: Horizontal portals ignore directional settings. Players will always look UP when teleported.</gradient>"
horizontal-direction-note: "<gradient:#87ceeb:#4682b4>Note: Horizontal portals always face UP regardless of direction setting.</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, PLAYER, NONE</#FFD700></gradient>"
setdirection-horizontal-warning: "<gradient:#ffa500:#ff6347>Note: Only horizontal directions (N/S/E/W) change the player's facing.</gradient>"
setdirection-horizontal-explanation: "<gradient:#87ceeb:#4682b4>UP/DOWN modify pitch. PLAYER preserves the player's current facing.</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>NONE</#FFD700> to disable direction override.</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>Note: Direction overrides are ignored for horizontal portals</gradient>"
direction-custom: "<gradient:#87ceeb:#4682b4>Teleport direction:</gradient> <#d946ef>{direction}</#d946ef>"
direction-default: "<gradient:#87ceeb:#4682b4>Teleport direction:</gradient> <#FFD700>Preserve player direction</#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>"
gui.yml
# ============================================
# SoapsTeleporter GUI Configuration
# ============================================
#
# Suite GUI: config.yml -> gui.enabled is the master kill-switch for this plugin's
# inventory UIs. This file defines menu layout (titles, sizes, items). Text may use
# MiniMessage; legacy & and § are accepted where documented.
# SoapsAdmin uses a gui/ folder for many menus (advanced suite layout).
#
# All text supports MiniMessage format.
# Placeholders (replaced per-context):
# {portal} - Portal name
# {status} - Enabled/Disabled
# {type} - Portal type (STANDARD, ONEWAY, RTP)
# {connected} - Connected portal name or "None"
# {world} - Portal world name
# {direction} - Exit direction
# {cost} - Teleport cost or "Free"
# {cooldown} - Cooldown in seconds or "None"
# {warmup} - Warmup in seconds or "None"
# {conditions} - Number of conditions
# {commands} - Number of commands
# {uses} - Total usage count
# {last_used} - Last used timestamp
# {page} - Current page number
# {total_pages} - Total pages
# {total_portals} - Total portal count
# {pos1} - Position 1 coordinates
# {pos2} - Position 2 coordinates
# {particle} - Particle type
# {color} - Dust color
# {sound} - Sound name
# {pitch} - Sound pitch
# {volume} - Sound volume
# {orientation} - Portal orientation
# {size} - Portal size (blocks)
# {player} - Player name
#
# Actions:
# [close] - Close the GUI
# [back] - Go back to previous menu
# [open_menu] <id> - Open a menu (portal_list, main_menu, visual, audio, economy, connection, conditions, commands, admin, info, connect_selector, type_selector, direction_selector)
# [prev_page] - Previous page
# [next_page] - Next page
# [toggle_enable] - Toggle portal enabled/disabled
# [chat_input] <t> - Open chat input (setparticle, setcolor, setcount, setspread, setsound, setpitchvolume, setcost, setcooldown, setwarmup, connect, rename)
# [unlink] - Unlink connected portal
# [delete] - Delete portal (shows confirm)
# [move] - Move portal to selection
# [tp] - Teleport to portal
# [select_portal] - Select this portal for connection
# [set_type] <type> - Set portal type
# [set_direction] <dir> - Set exit direction
# [disable_sound] - Disable portal sound
# [add_condition] - Open add-condition menu
# [add_enter_cmd] - Start enter command input
# [add_exit_cmd] - Start exit command input
# [confirm] - Confirm pending action
# [cancel] - Cancel pending action
#
# Slot numbers start at 0.
# material-active / name-active / lore-active are used for toggled states.
# ============================================
settings:
# Material used to fill empty slots in all GUIs
filler-material: GRAY_STAINED_GLASS_PANE
filler-name: " "
# Sound played on GUI click (set to NONE to disable)
click-sound: UI_BUTTON_CLICK
click-sound-volume: 0.5
click-sound-pitch: 1.0
# ============================================
# Menu Definitions
# ============================================
menus:
# ------------------------------------------
# Portal List (Paginated)
# ------------------------------------------
portal_list:
title: "<dark_purple><bold>Portal List</bold></dark_purple> <gray>(Page {page}/{total_pages})</gray>"
size: 6
portal-item:
name: "<green><bold>{portal}</bold></green>"
lore:
- "<gray>Status: {status}</gray>"
- "<gray>Type: {type}</gray>"
- "<gray>Connected: {connected}</gray>"
- "<gray>Uses: {uses}</gray>"
- ""
- "<yellow>Left-click to manage</yellow>"
- "<aqua>Right-click for info</aqua>"
material-enabled: ENDER_PEARL
material-disabled: ENDER_EYE
items:
prev-page:
slot: 45
material: ARROW
name: "<gold>← Previous Page</gold>"
action: "[prev_page]"
page-info:
slot: 49
material: BOOK
name: "<white>Page {page}/{total_pages}</white>"
lore:
- "<gray>{total_portals} total portals</gray>"
close:
slot: 48
material: BARRIER
name: "<red>Close</red>"
action: "[close]"
next-page:
slot: 53
material: ARROW
name: "<gold>Next Page →</gold>"
action: "[next_page]"
# ------------------------------------------
# Portal Info (Dashboard)
# ------------------------------------------
portal_info:
title: "<dark_aqua><bold>Info:</bold></dark_aqua> <white>{portal}</white>"
size: 5
items:
header:
slot: 4
material: ENDER_PEARL
name: "<green><bold>{portal}</bold></green>"
lore:
- "<gray>Detailed portal information</gray>"
- ""
- "<gray>Status: {status}</gray>"
- "<gray>Type: {type}</gray>"
# --- Row 1: Location & Geometry ---
world:
slot: 10
material: GRASS_BLOCK
name: "<green>World</green>"
lore:
- "<gray>World: <white>{world}</white></gray>"
- "<gray>Orientation: <white>{orientation}</white></gray>"
- "<gray>Size: <white>{size} blocks</white></gray>"
position1:
slot: 11
material: CYAN_CONCRETE
name: "<aqua>Position 1</aqua>"
lore:
- "<gray>{pos1}</gray>"
position2:
slot: 12
material: ORANGE_CONCRETE
name: "<gold>Position 2</gold>"
lore:
- "<gray>{pos2}</gray>"
connection:
slot: 14
material: CHAIN
name: "<aqua>Connection</aqua>"
lore:
- "<gray>Connected to: <white>{connected}</white></gray>"
- "<gray>Type: <white>{type}</white></gray>"
- "<gray>Direction: <white>{direction}</white></gray>"
material-active: CHAIN
name-active: "<red>Not Connected</red>"
lore-active:
- "<gray>This portal is not linked</gray>"
- "<gray>Use the connection menu to link</gray>"
# --- Row 2: Effects & Economy ---
particles:
slot: 19
material: BLAZE_POWDER
name: "<light_purple>Particles</light_purple>"
lore:
- "<gray>Type: <white>{particle}</white></gray>"
- "<gray>Color: <white>{color}</white></gray>"
sound:
slot: 20
material: NOTE_BLOCK
name: "<gold>Sound</gold>"
lore:
- "<gray>Sound: <white>{sound}</white></gray>"
- "<gray>Pitch: <white>{pitch}</white></gray>"
- "<gray>Volume: <white>{volume}</white></gray>"
economy:
slot: 22
material: GOLD_INGOT
name: "<green>Economy & Timing</green>"
lore:
- "<gray>Cost: <white>{cost}</white></gray>"
- "<gray>Cooldown: <white>{cooldown}</white></gray>"
- "<gray>Warmup: <white>{warmup}</white></gray>"
conditions:
slot: 23
material: COMPARATOR
name: "<red>Conditions</red>"
lore:
- "<gray>Active conditions: <white>{conditions}</white></gray>"
commands:
slot: 24
material: COMMAND_BLOCK
name: "<yellow>Commands</yellow>"
lore:
- "<gray>Active commands: <white>{commands}</white></gray>"
# --- Row 3: Stats & Actions ---
stats:
slot: 28
material: EXPERIENCE_BOTTLE
name: "<aqua>Usage Statistics</aqua>"
lore:
- "<gray>Total uses: <white>{uses}</white></gray>"
- "<gray>Last used: <white>{last_used}</white></gray>"
teleport:
slot: 30
material: ENDER_EYE
name: "<light_purple>Teleport to Portal</light_purple>"
lore:
- "<gray>Click to teleport to this portal</gray>"
action: "[tp]"
manage:
slot: 32
material: WRITABLE_BOOK
name: "<gold>Manage Portal</gold>"
lore:
- "<gray>Open full management menu</gray>"
action: "[open_menu] main_menu"
back:
slot: 36
material: ARROW
name: "<gray>Back to Portal List</gray>"
action: "[open_menu] portal_list"
close:
slot: 40
material: BARRIER
name: "<red>Close</red>"
action: "[close]"
# ------------------------------------------
# Main Management Menu
# ------------------------------------------
main_menu:
title: "<dark_purple><bold>Manage:</bold></dark_purple> <white>{portal}</white>"
size: 5
items:
header:
slot: 4
material: ENDER_PEARL
name: "<green><bold>{portal}</bold></green>"
lore:
- "<gray>Status: {status}</gray>"
- "<gray>Type: {type}</gray>"
- "<gray>Connected: {connected}</gray>"
material-active: ENDER_EYE
name-active: "<red><bold>{portal}</bold></red>"
lore-active:
- "<red>Status: Disabled</red>"
- "<gray>Type: {type}</gray>"
- "<gray>Connected: {connected}</gray>"
# --- Category Buttons (Row 2) ---
info:
slot: 10
material: BOOK
name: "<dark_aqua><bold>Portal Info</bold></dark_aqua>"
lore:
- "<gray>View complete portal details</gray>"
- "<gray>Coordinates, stats, properties</gray>"
- ""
- "<yellow>Click to view</yellow>"
action: "[open_menu] info"
visual:
slot: 12
material: PAINTING
name: "<light_purple><bold>Visual Effects</bold></light_purple>"
lore:
- "<gray>Particles, colors, spread</gray>"
- ""
- "<yellow>Click to configure</yellow>"
action: "[open_menu] visual"
audio:
slot: 14
material: NOTE_BLOCK
name: "<gold><bold>Audio Settings</bold></gold>"
lore:
- "<gray>Sound, pitch, volume</gray>"
- ""
- "<yellow>Click to configure</yellow>"
action: "[open_menu] audio"
economy:
slot: 16
material: GOLD_INGOT
name: "<green><bold>Economy & Timing</bold></green>"
lore:
- "<gray>Cost, cooldown, warmup</gray>"
- ""
- "<yellow>Click to configure</yellow>"
action: "[open_menu] economy"
connection:
slot: 20
material: CHAIN
name: "<aqua><bold>Connection</bold></aqua>"
lore:
- "<gray>Link portals, set type & direction</gray>"
- ""
- "<yellow>Click to configure</yellow>"
action: "[open_menu] connection"
conditions:
slot: 22
material: COMPARATOR
name: "<red><bold>Conditions ({conditions})</bold></red>"
lore:
- "<gray>Requirements to use portal</gray>"
- ""
- "<yellow>Click to configure</yellow>"
action: "[open_menu] conditions"
commands:
slot: 24
material: COMMAND_BLOCK
name: "<yellow><bold>Commands ({commands})</bold></yellow>"
lore:
- "<gray>Enter/exit commands</gray>"
- ""
- "<yellow>Click to configure</yellow>"
action: "[open_menu] commands"
admin:
slot: 31
material: REDSTONE_TORCH
name: "<dark_red><bold>Admin Actions</bold></dark_red>"
lore:
- "<gray>Enable/disable, rename, move, delete</gray>"
- ""
- "<yellow>Click to configure</yellow>"
action: "[open_menu] admin"
# --- Navigation (Row 4) ---
back:
slot: 36
material: ARROW
name: "<gray>Back to Portal List</gray>"
action: "[open_menu] portal_list"
close:
slot: 40
material: BARRIER
name: "<red>Close</red>"
action: "[close]"
# ------------------------------------------
# Visual Effects Menu
# ------------------------------------------
visual:
title: "<light_purple><bold>Visual:</bold></light_purple> <white>{portal}</white>"
size: 3
items:
header:
slot: 4
material: PAINTING
name: "<light_purple><bold>Current Settings</bold></light_purple>"
lore:
- "<gray>Particle: <white>{particle}</white></gray>"
- "<gray>Color: <white>{color}</white></gray>"
- "<gray>Count: <white>{count}</white></gray>"
set-particle:
slot: 10
material: BLAZE_POWDER
name: "<gold><bold>Set Particle Type</bold></gold>"
lore:
- "<gray>Change the particle effect</gray>"
- ""
- "<dark_gray>Type in chat after clicking</dark_gray>"
action: "[chat_input] setparticle"
set-color:
slot: 12
material: RED_DYE
name: "<red><bold>Set Color</bold></red>"
lore:
- "<gray>Set dust particle color (hex)</gray>"
- ""
- "<dark_gray>Type in chat after clicking</dark_gray>"
action: "[chat_input] setcolor"
set-count:
slot: 14
material: REDSTONE
name: "<dark_red><bold>Set Particle Count</bold></dark_red>"
lore:
- "<gray>Number of particles per tick</gray>"
- ""
- "<dark_gray>Type in chat after clicking</dark_gray>"
action: "[chat_input] setcount"
set-spread:
slot: 16
material: FEATHER
name: "<white><bold>Set Spread</bold></white>"
lore:
- "<gray>Particle spread distribution</gray>"
- ""
- "<dark_gray>Type in chat after clicking</dark_gray>"
action: "[chat_input] setspread"
back:
slot: 18
material: ARROW
name: "<gray>Back to Manage</gray>"
action: "[back]"
close:
slot: 26
material: BARRIER
name: "<red>Close</red>"
action: "[close]"
# ------------------------------------------
# Audio Menu
# ------------------------------------------
audio:
title: "<gold><bold>Audio:</bold></gold> <white>{portal}</white>"
size: 3
items:
header:
slot: 4
material: NOTE_BLOCK
name: "<gold><bold>Current Settings</bold></gold>"
lore:
- "<gray>Sound: <white>{sound}</white></gray>"
- "<gray>Pitch: <white>{pitch}</white></gray>"
- "<gray>Volume: <white>{volume}</white></gray>"
set-sound:
slot: 11
material: JUKEBOX
name: "<green><bold>Set Sound</bold></green>"
lore:
- "<gray>Change teleport sound effect</gray>"
- ""
- "<dark_gray>Type in chat after clicking</dark_gray>"
action: "[chat_input] setsound"
set-pitch-volume:
slot: 13
material: BELL
name: "<aqua><bold>Set Pitch & Volume</bold></aqua>"
lore:
- "<gray>Adjust sound properties</gray>"
- ""
- "<dark_gray>Type in chat after clicking</dark_gray>"
action: "[chat_input] setpitchvolume"
disable-sound:
slot: 15
material: STRUCTURE_VOID
name: "<red><bold>Disable Sound</bold></red>"
lore:
- "<gray>Remove the teleport sound</gray>"
- ""
- "<yellow>Click to disable</yellow>"
action: "[disable_sound]"
back:
slot: 18
material: ARROW
name: "<gray>Back to Manage</gray>"
action: "[back]"
close:
slot: 26
material: BARRIER
name: "<red>Close</red>"
action: "[close]"
# ------------------------------------------
# Economy & Timing Menu
# ------------------------------------------
economy:
title: "<green><bold>Economy:</bold></green> <white>{portal}</white>"
size: 3
items:
header:
slot: 4
material: GOLD_INGOT
name: "<green><bold>Current Settings</bold></green>"
lore:
- "<gray>Cost: <white>{cost}</white></gray>"
- "<gray>Cooldown: <white>{cooldown}</white></gray>"
- "<gray>Warmup: <white>{warmup}</white></gray>"
set-cost:
slot: 11
material: EMERALD
name: "<green><bold>Set Cost</bold></green>"
lore:
- "<gray>Set teleportation cost</gray>"
- ""
- "<dark_gray>Type in chat after clicking</dark_gray>"
action: "[chat_input] setcost"
set-cooldown:
slot: 13
material: CLOCK
name: "<aqua><bold>Set Cooldown</bold></aqua>"
lore:
- "<gray>Time between uses (seconds)</gray>"
- ""
- "<dark_gray>Type in chat after clicking</dark_gray>"
action: "[chat_input] setcooldown"
set-warmup:
slot: 15
material: HOPPER
name: "<gold><bold>Set Warmup</bold></gold>"
lore:
- "<gray>Delay before teleport (seconds)</gray>"
- ""
- "<dark_gray>Type in chat after clicking</dark_gray>"
action: "[chat_input] setwarmup"
back:
slot: 18
material: ARROW
name: "<gray>Back to Manage</gray>"
action: "[back]"
close:
slot: 26
material: BARRIER
name: "<red>Close</red>"
action: "[close]"
# ------------------------------------------
# Connection Menu
# ------------------------------------------
connection:
title: "<aqua><bold>Connection:</bold></aqua> <white>{portal}</white>"
size: 3
items:
header:
slot: 4
material: CHAIN
name: "<aqua><bold>Connection Status</bold></aqua>"
lore:
- "<gray>Target: <white>{connected}</white></gray>"
- "<gray>Type: <white>{type}</white></gray>"
- "<gray>Direction: <white>{direction}</white></gray>"
connect:
slot: 10
material: TRIPWIRE_HOOK
name: "<green><bold>Connect Portal</bold></green>"
lore:
- "<gray>Link to another portal</gray>"
- ""
- "<yellow>Click to browse portals</yellow>"
material-active: SHEARS
name-active: "<red><bold>Unlink Portal</bold></red>"
lore-active:
- "<gray>Currently linked to: <white>{connected}</white></gray>"
- ""
- "<yellow>Click to unlink</yellow>"
action: "[open_menu] connect_selector"
action-active: "[unlink]"
set-type:
slot: 13
material: END_PORTAL_FRAME
name: "<dark_purple><bold>Set Portal Type</bold></dark_purple>"
lore:
- "<gray>Current: <white>{type}</white></gray>"
- ""
- "<yellow>Click to change type</yellow>"
action: "[open_menu] type_selector"
set-direction:
slot: 16
material: COMPASS
name: "<gold><bold>Set Direction</bold></gold>"
lore:
- "<gray>Current: <white>{direction}</white></gray>"
- ""
- "<yellow>Click to change direction</yellow>"
action: "[open_menu] direction_selector"
back:
slot: 18
material: ARROW
name: "<gray>Back to Manage</gray>"
action: "[back]"
close:
slot: 26
material: BARRIER
name: "<red>Close</red>"
action: "[close]"
# ------------------------------------------
# Connect Selector (Paginated Picker)
# ------------------------------------------
connect_selector:
title: "<green><bold>Connect:</bold></green> <white>{portal}</white> <gray>(Page {page})</gray>"
size: 6
portal-item:
name: "<yellow>{portal}</yellow>"
lore:
- "<gray>World: {world}</gray>"
- "<gray>Type: {type}</gray>"
- ""
- "<green>Click to connect</green>"
name-connected: "<red>{portal}</red>"
lore-connected:
- "<gray>World: {world}</gray>"
- "<red>Already connected to another portal</red>"
material-available: LIME_CONCRETE
material-connected: RED_CONCRETE
items:
prev-page:
slot: 45
material: ARROW
name: "<gold>← Previous Page</gold>"
action: "[prev_page]"
page-info:
slot: 49
material: BOOK
name: "<white>Page {page}/{total_pages}</white>"
lore:
- "<gray>Select a portal to connect</gray>"
back:
slot: 48
material: ARROW
name: "<gray>Back to Connection</gray>"
action: "[back]"
next-page:
slot: 53
material: ARROW
name: "<gold>Next Page →</gold>"
action: "[next_page]"
# ------------------------------------------
# Type Selector (Click-to-Pick)
# ------------------------------------------
type_selector:
title: "<dark_purple><bold>Portal Type:</bold></dark_purple> <white>{portal}</white>"
size: 3
items:
header:
slot: 4
material: END_PORTAL_FRAME
name: "<dark_purple><bold>Select Portal Type</bold></dark_purple>"
lore:
- "<gray>Current type: <white>{type}</white></gray>"
- ""
- "<gray>Click a type below to apply</gray>"
standard:
slot: 11
material: ENDER_PEARL
name: "<green><bold>Standard</bold></green>"
lore:
- "<gray>Two-way teleport between</gray>"
- "<gray>connected portals</gray>"
- ""
- "<yellow>Click to select</yellow>"
material-active: ENDER_PEARL
name-active: "<green><bold>✔ Standard (Active)</bold></green>"
lore-active:
- "<gray>Two-way teleport between</gray>"
- "<gray>connected portals</gray>"
- ""
- "<green>Currently selected</green>"
action: "[set_type] STANDARD"
oneway:
slot: 13
material: ARROW
name: "<gold><bold>One-Way</bold></gold>"
lore:
- "<gray>Teleport in one direction only</gray>"
- "<gray>Destination does not teleport back</gray>"
- ""
- "<yellow>Click to select</yellow>"
material-active: SPECTRAL_ARROW
name-active: "<gold><bold>✔ One-Way (Active)</bold></gold>"
lore-active:
- "<gray>Teleport in one direction only</gray>"
- "<gray>Destination does not teleport back</gray>"
- ""
- "<green>Currently selected</green>"
action: "[set_type] ONEWAY"
rtp:
slot: 15
material: CHORUS_FRUIT
name: "<light_purple><bold>Random Teleport</bold></light_purple>"
lore:
- "<gray>Teleport to a random location</gray>"
- "<gray>within configurable range</gray>"
- ""
- "<yellow>Click to select</yellow>"
material-active: CHORUS_FLOWER
name-active: "<light_purple><bold>✔ RTP (Active)</bold></light_purple>"
lore-active:
- "<gray>Teleport to a random location</gray>"
- "<gray>within configurable range</gray>"
- ""
- "<green>Currently selected</green>"
action: "[set_type] RTP"
back:
slot: 18
material: ARROW
name: "<gray>Back to Connection</gray>"
action: "[back]"
close:
slot: 26
material: BARRIER
name: "<red>Close</red>"
action: "[close]"
# ------------------------------------------
# Direction Selector (Compass-Style)
# ------------------------------------------
direction_selector:
title: "<gold><bold>Direction:</bold></gold> <white>{portal}</white>"
size: 3
items:
header:
slot: 4
material: COMPASS
name: "<gold><bold>Select Exit Direction</bold></gold>"
lore:
- "<gray>Current: <white>{direction}</white></gray>"
- ""
- "<gray>Players will face this direction</gray>"
- "<gray>after teleporting</gray>"
north:
slot: 10
material: BLUE_CONCRETE
name: "<blue><bold>North</bold></blue>"
lore:
- "<gray>Players face North (-Z)</gray>"
- "<yellow>Click to select</yellow>"
action: "[set_direction] NORTH"
south:
slot: 11
material: RED_CONCRETE
name: "<red><bold>South</bold></red>"
lore:
- "<gray>Players face South (+Z)</gray>"
- "<yellow>Click to select</yellow>"
action: "[set_direction] SOUTH"
east:
slot: 12
material: GREEN_CONCRETE
name: "<green><bold>East</bold></green>"
lore:
- "<gray>Players face East (+X)</gray>"
- "<yellow>Click to select</yellow>"
action: "[set_direction] EAST"
west:
slot: 13
material: YELLOW_CONCRETE
name: "<yellow><bold>West</bold></yellow>"
lore:
- "<gray>Players face West (-X)</gray>"
- "<yellow>Click to select</yellow>"
action: "[set_direction] WEST"
up:
slot: 15
material: WHITE_CONCRETE
name: "<white><bold>Up</bold></white>"
lore:
- "<gray>Players look up (-90° pitch)</gray>"
- "<yellow>Click to select</yellow>"
action: "[set_direction] UP"
down:
slot: 16
material: BLACK_CONCRETE
name: "<dark_gray><bold>Down</bold></dark_gray>"
lore:
- "<gray>Players look down (90° pitch)</gray>"
- "<yellow>Click to select</yellow>"
action: "[set_direction] DOWN"
default:
slot: 22
material: RECOVERY_COMPASS
name: "<gray><bold>Default (Preserve)</bold></gray>"
lore:
- "<gray>Keep player's original facing</gray>"
- "<yellow>Click to select</yellow>"
action: "[set_direction] DEFAULT"
back:
slot: 18
material: ARROW
name: "<gray>Back to Connection</gray>"
action: "[back]"
close:
slot: 26
material: BARRIER
name: "<red>Close</red>"
action: "[close]"
# ------------------------------------------
# Conditions Menu (Paginated)
# ------------------------------------------
conditions:
title: "<red><bold>Conditions:</bold></red> <white>{portal}</white> <gray>(Page {page})</gray>"
size: 6
items:
add-condition:
slot: 47
material: EMERALD
name: "<green><bold>Add Condition</bold></green>"
lore:
- "<gray>Add a new condition</gray>"
action: "[add_condition]"
page-info:
slot: 49
material: BOOK
name: "<white>Page {page}/{total_pages}</white>"
lore:
- "<gray>{conditions} conditions</gray>"
back:
slot: 51
material: ARROW
name: "<gray>Back to Manage</gray>"
action: "[back]"
prev-page:
slot: 45
material: ARROW
name: "<gold>← Previous Page</gold>"
action: "[prev_page]"
next-page:
slot: 53
material: ARROW
name: "<gold>Next Page →</gold>"
action: "[next_page]"
# ------------------------------------------
# Add Condition Menu (3 Pages)
# ------------------------------------------
add_condition:
title: "<green><bold>Add Condition</bold></green> <gray>(Page {page}/3)</gray>"
size: 3
items:
back:
slot: 22
material: ARROW
name: "<gray>Back to Conditions</gray>"
action: "[back]"
prev-page:
slot: 18
material: ARROW
name: "<gold>← Previous Page</gold>"
action: "[prev_page]"
next-page:
slot: 26
material: ARROW
name: "<gold>Next Page →</gold>"
action: "[next_page]"
# ------------------------------------------
# Commands Menu (Paginated)
# ------------------------------------------
commands:
title: "<yellow><bold>Commands:</bold></yellow> <white>{portal}</white> <gray>(Page {page})</gray>"
size: 6
items:
add-enter:
slot: 47
material: LIME_CONCRETE_POWDER
name: "<green><bold>Add Enter Command</bold></green>"
lore:
- "<gray>Type command in chat</gray>"
action: "[add_enter_cmd]"
add-exit:
slot: 48
material: RED_CONCRETE_POWDER
name: "<red><bold>Add Exit Command</bold></red>"
lore:
- "<gray>Type command in chat</gray>"
action: "[add_exit_cmd]"
page-info:
slot: 49
material: BOOK
name: "<white>Page {page}/{total_pages}</white>"
lore:
- "<gray>{commands} commands</gray>"
back:
slot: 51
material: ARROW
name: "<gray>Back to Manage</gray>"
action: "[back]"
prev-page:
slot: 45
material: ARROW
name: "<gold>← Previous Page</gold>"
action: "[prev_page]"
next-page:
slot: 53
material: ARROW
name: "<gold>Next Page →</gold>"
action: "[next_page]"
# ------------------------------------------
# Admin Menu
# ------------------------------------------
admin:
title: "<dark_red><bold>Admin:</bold></dark_red> <white>{portal}</white>"
size: 3
items:
status:
slot: 4
material: LIME_WOOL
name: "<green><bold>Status: Enabled</bold></green>"
material-active: RED_WOOL
name-active: "<red><bold>Status: Disabled</bold></red>"
toggle-enable:
slot: 10
material: EMERALD_BLOCK
name: "<green><bold>Enable Portal</bold></green>"
lore:
- "<gray>Allow portal usage</gray>"
- "<yellow>Click to enable</yellow>"
material-active: REDSTONE_BLOCK
name-active: "<red><bold>Disable Portal</bold></red>"
lore-active:
- "<gray>Prevent portal usage</gray>"
- "<yellow>Click to disable</yellow>"
action: "[toggle_enable]"
rename:
slot: 12
material: NAME_TAG
name: "<gold><bold>Rename Portal</bold></gold>"
lore:
- "<gray>Change the portal name</gray>"
- ""
- "<dark_gray>Type in chat after clicking</dark_gray>"
action: "[chat_input] rename"
move:
slot: 14
material: MINECART
name: "<aqua><bold>Move Portal</bold></aqua>"
lore:
- "<gray>Move to your current selection</gray>"
- ""
- "<yellow>Click to move</yellow>"
action: "[move]"
delete:
slot: 16
material: TNT
name: "<dark_red><bold>Delete Portal</bold></dark_red>"
lore:
- "<red>Permanently delete this portal</red>"
- ""
- "<yellow>Click to confirm</yellow>"
action: "[delete]"
back:
slot: 18
material: ARROW
name: "<gray>Back to Manage</gray>"
action: "[back]"
close:
slot: 26
material: BARRIER
name: "<red>Close</red>"
action: "[close]"
# ------------------------------------------
# Confirm Dialog
# ------------------------------------------
confirm:
title: "<red><bold>Confirm Action</bold></red>"
size: 3
items:
info:
slot: 4
material: PAPER
name: "<red><bold>Confirm: {action}</bold></red>"
lore:
- "<gray>{description}</gray>"
confirm-btn:
slot: 11
material: LIME_WOOL
name: "<green><bold>CONFIRM</bold></green>"
lore:
- "<gray>Proceed with action</gray>"
action: "[confirm]"
cancel-btn:
slot: 15
material: RED_WOOL
name: "<red><bold>CANCEL</bold></red>"
lore:
- "<gray>Go back</gray>"
action: "[cancel]"
portals.yml
# ############################################
# # #
# # Plugin: SoapsTeleporter #
# # #
# # Created by AlternativeSoap #
# # Website: www.SoapsUniverse.com #
# # Support: https://discord.gg/mawAzwFq #
# # #
# ############################################
# ==========================================
# Portal Storage File
# ==========================================
# WARNING: Do not edit this file manually unless you know what you're doing!
# All portals are saved and loaded automatically by the plugin.
#
# Use in-game commands or the GUI to manage portals:
# /st create <name> - Create a new portal
# /st manage <name> - Open the management menu
# /st list - View all portals
#
# Each portal entry stores: region bounds, destination,
# particles, sounds, conditions, economy, commands, and more.
# Manual edits may corrupt portal data or cause errors.
# ==========================================
portals: {}
plugin.yml
# ############################################
# # #
# # Plugin: SoapsTeleporter #
# # #
# # Created by AlternativeSoap #
# # Website: www.SoapsUniverse.com #
# # Support: https://discord.gg/mawAzwFq #
# # #
# ############################################
main: com.soaps.teleporters.SoapsTeleporter
version: 1.0.5
name: SoapsTeleporter
author: AlternativeSoap
api-version: 1.21
folia-supported: false
description: A premium teleportation portal system for PaperMC - Supporting Minecraft 1.21+ with enhanced particle effects, async teleportation, MiniMessage formatting, and optimized performance
depend: ["SoapsCommon"]
softdepend: ["PlaceholderAPI", "Vault", "WorldGuard", "Lands"]
commands:
st:
description: Main portal command
usage: /<command> <subcommand>
aliases: [soapsteleporter, teleporter]
permissions:
st.admin:
description: Admin permission for all portal commands
default: op
st.manage:
description: Permission to use interactive portal management interface
default: op
st.portal.use:
description: General permission to use any portal
default: true
st.portal.bypass.warmup:
description: Bypass warmup timer
default: op
st.portal.bypass.cooldown:
description: Bypass cooldown timer
default: op
st.portal.group.*:
description: Access to portal groups (st.portal.group.<groupname>)
default: false
st.command.set:
description: Permission to use /st set commands
default: op
st.command.shapepreview:
description: Permission to use preview shape tools
default: op
st.command.add:
description: Permission to create portals
default: op
st.command.connect:
description: Permission to connect portals
default: op
st.command.remove:
description: Permission to remove portals
default: op
st.command.list:
description: Permission to list portals
default: op
st.command.disable:
description: Permission to disable portals
default: op
st.command.enable:
description: Permission to enable portals
default: op
st.command.reload:
description: Permission to reload the plugin
default: op
st.command.tp:
description: Permission to teleport to portals
default: op
st.command.tool:
description: Permission to get the portal tool
default: op
st.command.wand:
description: Permission to get the portal wand
default: op
st.command.info:
description: Permission to view portal info
default: op
st.command.backup:
description: Permission to backup portals
default: op
st.command.debug:
description: Permission to toggle debug mode
default: op
st.command.setdirection:
description: Permission to set portal teleportation direction
default: op
st.command.setrouting:
description: Permission to set multi-destination routing mode
default: op
st.command.setdestinations:
description: Permission to configure linked portal destinations
default: op
st.command.settype:
description: Permission to set portal type (standard/rtp)
default: op
st.command.setcommand:
description: Permission to set portal commands
default: op
st.command.setcondition:
description: Permission to set portal conditions
default: op
st.command.addcondition:
description: Permission to add portal conditions
default: op
st.command.reset:
description: Permission to reset portals to defaults
default: op
st.command.rename:
description: Permission to rename portals
default: op
st.command.move:
description: Permission to move portals
default: op
st.command.unlink:
description: Permission to unlink portals
default: op
st.command.setparticle:
description: Permission to set portal particles
default: op
st.command.setcolor:
description: Permission to set particle colors
default: op
st.command.setcount:
description: Permission to set particle count
default: op
st.command.setspread:
description: Permission to set particle spread
default: op
st.command.setinterval:
description: Permission to set particle display interval
default: op
st.command.setsound:
description: Permission to set portal sounds
default: op
st.command.setcost:
description: Permission to set portal costs
default: op
st.command.setcooldown:
description: Permission to set portal cooldowns
default: op
st.command.setwarmup:
description: Permission to set portal warmup times
default: op
st.command.setdisablesafecheck:
description: Permission to disable safety checks
default: op
st.debug:
description: Permission to use debug commands
default: op