Saltar al contenido principal

Configuración de CannonRTP

CannonRTP usa un archivo de configuración global más un archivo de configuración por cañón.

Estructura de Archivos

  • Configuración global: plugins/CannonRTP/config.yml
  • Configuraciones por cañón: plugins/CannonRTP/cannons/<id>.yml

El plugin también incluye un paquete de cañón de ejemplo llamado example_world_cannon. Está habilitado por defecto y se coloca en el spawn del primer mundo.

Estructura de la Configuración Global

La configuración principal está organizada bajo:

  • runtime.*
  • landing.*
  • messages.*
  • protection.*

Ajustes de Ejecución

ClavePredeterminadoComportamiento
runtime.particleIntervalTicks15Con qué frecuencia se renderizan las partículas inactivas del cañón (mínimo 5)
runtime.cannonModelPriority[cannonrtp_premium, cannonrtp]Lista de prioridad de nombres de modelos de FreeMinecraftModels, verificados de arriba a abajo. El primer modelo encontrado en el servidor se usa para cualquier cañón que no establezca su propio customModel. Si no se encuentra ninguno, se usan partículas en su lugar.

Ajustes de Búsqueda de Aterrizaje

ClavePredeterminadoComportamiento
landing.searchAttemptsPerTick2Intentos de búsqueda por cañón y por tick mientras se precarga (mínimo 1)
landing.preloadedLocationsPerCannon10Número total de destinos seguros que el plugin intenta mantener en cola por cañón (mínimo 1)
landing.chargedLocationsPerCannon5Cuántas ubicaciones necesita un cañón antes de considerarse cargado y listo para lanzar (mínimo 1, limitado por preloadedLocationsPerCannon)
landing.searchTimeoutSeconds1000Tiempo en segundos antes de que un cañón que sigue buscando se marque como agotado (mínimo 10)
landing.slowFallingSeconds60Duración de Caída Lenta después de llegar en segundos; el efecto se elimina anticipadamente cuando el jugador aterriza (mínimo 1)
landing.failOpenOnProtectionErrorsfalseSi una API de protección falla, el aterrizaje se bloquea por defecto

Sonidos de Aterrizaje

Las siguientes claves de sonido son configurables:

  • landing.sounds.levitationStart.sound (predeterminado: BLOCK_BEACON_ACTIVATE)
  • landing.sounds.levitationStart.volume (predeterminado: 1.0)
  • landing.sounds.levitationStart.pitch (predeterminado: 1.15)
  • landing.sounds.blastOff.sound (predeterminado: ENTITY_GENERIC_EXPLODE)
  • landing.sounds.blastOff.volume (predeterminado: 1.0)
  • landing.sounds.blastOff.pitch (predeterminado: 0.9)

Los valores de sonido usan nombres del registro Sound de Bukkit o claves con espacio de nombres. Los nombres de sonido inválidos se registran como advertencias y el sonido se omite silenciosamente.

Listas de Materiales Inseguros

CannonRTP rechaza posibles puntos de aterrizaje según dos listas de materiales:

  • landing.unsafeGroundMaterials -- bloques sobre los que nunca se debería estar de pie
  • landing.unsafeBodyMaterials -- bloques que nunca deberían ocupar el espacio de los pies o la cabeza

Materiales inseguros del suelo por defecto:

  • LAVA
  • MAGMA_BLOCK
  • CAMPFIRE
  • SOUL_CAMPFIRE
  • CACTUS
  • POWDER_SNOW

Materiales inseguros del cuerpo por defecto:

  • LAVA
  • WATER
  • FIRE
  • SOUL_FIRE
  • SWEET_BERRY_BUSH
  • POWDER_SNOW
  • COBWEB

Ajustes de Mensajes

Todos los mensajes admiten gradientes MagmaCore, etiquetas MiniMessage y códigos de color heredados. El marcador $prefix se reemplaza con el valor del prefijo configurado.

El plugin expone las siguientes claves de mensaje:

ClaveMarcadoresDescripción
messages.prefix--Prefijo usado por todos los mensajes de CannonRTP
messages.helpHeader$prefixEncabezado mostrado por /cannonrtp
messages.createdCannon$prefix, $cannon, $id, $pathEnviado tras crear un cañón
messages.deletedCannon$prefix, $cannonEnviado tras eliminar un cañón
messages.movedCannon$prefix, $cannonEnviado tras mover un cañón
messages.targetWorldUpdated$prefix, $cannon, $worldEnviado tras cambiar el mundo objetivo de un cañón
messages.searchCenterUpdated$prefix, $cannonEnviado tras cambiar el centro de búsqueda de un cañón
messages.reload$prefix, $countEnviado tras recargar
messages.noPermission$prefix, $cannonEnviado cuando un jugador puede ver un cañón pero no puede usarlo
messages.cannonDisabled$prefix, $cannonEnviado cuando un jugador entra en un cañón desactivado
messages.queueCalibration$prefix, $cannon, $queued, $target, $secondsEnviado mientras un cañón aún está precargando
messages.noValidLocationYet$prefix, $cannonEnviado cuando aún no se ha encontrado ninguna ubicación segura
messages.noValidLocationFound$prefix, $cannon, $reasonEnviado cuando CannonRTP se rinde tras agotar el tiempo
messages.invalidConfiguration$prefix, $cannon, $reasonEnviado cuando se detecta un error de configuración
messages.statusLine$prefix, $cannon, $status, $queued, $target, $reasonFormato de línea usado por /wc status y /wc list
messages.probeAllowed$prefixEnviado por /wc probe cuando la ubicación es válida
messages.probeBlocked$prefix, $plugin, $reasonEnviado por /wc probe cuando la ubicación está bloqueada
messages.unknownCommand$prefixEnviado cuando un administrador usa un subcomando no reconocido

Mensajes de Título

ClaveMarcadoresDescripción
messages.titles.launchQueuedTitle$cannonTítulo mostrado cuando comienza un lanzamiento
messages.titles.launchQueuedSubtitle$cannonSubtítulo mostrado cuando comienza un lanzamiento
messages.titles.destinationPreviewTitle$x, $y, $zTítulo mostrado durante la fase de búsqueda
messages.titles.destinationPreviewSubtitle$x, $y, $zSubtítulo mostrado durante la fase de búsqueda
messages.titles.destinationConfirmedTitle$x, $y, $z, $worldTítulo mostrado al inicio de la fase de disparo y nuevamente después del teletransporte
messages.titles.destinationConfirmedSubtitle$x, $y, $z, $worldSubtítulo mostrado al inicio de la fase de disparo y nuevamente después del teletransporte
messages.titles.arrivalSubtitles--Lista de títulos; se elige uno al azar y se muestra como título después de que el jugador sea dejado sobre el destino

La vista previa de coordenadas durante la fase de búsqueda no muestra el destino real -- muestra coordenadas aleatorias dentro del área de búsqueda del cañón como efecto visual. El destino verdadero solo se revela en el título de confirmación al inicio de la fase de disparo.

Campos de Configuración por Cañón

Cada archivo de cañón (plugins/CannonRTP/cannons/<id>.yml) almacena estos campos:

CampoPredeterminadoNotas
isEnabledtrue para cañones recién creadosLos cañones desactivados no se activan
displayNameCannonRTP (o el nombre proporcionado al crear)Usado en mensajes, salida de estado y la etiqueta flotante
cannonLocationObligatorioDonde existe el activador del cañón
targetWorldMundo actual en el momento de la creaciónDebe estar cargado en tiempo de ejecución
searchCenternull (recurre al spawn del mundo objetivo)Si no se establece, el plugin usa la ubicación de spawn del mundo objetivo
triggerRadius1.75Radio usado para detectar jugadores cercanos (mínimo 0.5)
minSearchRadius500Distancia mínima de búsqueda de aterrizaje desde el centro de búsqueda (mínimo 0)
maxSearchRadius5000Distancia máxima de búsqueda de aterrizaje desde el centro de búsqueda (siempre al menos minSearchRadius + 1)
verticalBoostTicks45Ticks de velocidad ascendente antes del teletransporte (mínimo 0)
verticalBoostVelocity1.35Velocidad ascendente aplicada durante el lanzamiento (mínimo 0)
enableParticlestrueControla la animación de partículas del cañón inactivo (solo se usa cuando no hay un modelo personalizado activo)
requiredPermissionvacíoBarrera de permiso adicional opcional para este cañón específico
customModelvacíoNombre de modelo FreeMinecraftModels opcional para este cañón específico. Si está vacío, el plugin recurre a runtime.cannonModelPriority

Valores Predeterminados al Crear un Cañón

Cuando ejecutas /wc create <id>:

  • el ID del cañón se convierte a minúsculas y los caracteres que no sean a-z, 0-9, _ o - se reemplazan por _
  • el nombre visible será CannonRTP por defecto si no se especifica, o el nombre proporcionado con guiones bajos convertidos en espacios
  • cannonLocation se establece en tu ubicación actual
  • targetWorld se establece en tu mundo actual
  • searchCenter no se establece (recurre al spawn del mundo objetivo)

Tras la creación, el plugin muestra la ruta del archivo de configuración y sugiere qué campos editar manualmente: displayName, customModel, requiredPermission, verticalBoostTicks y verticalBoostVelocity.

Integración con FreeMinecraftModels

Si un cañón resuelve a un modelo FreeMinecraftModels válido (ya sea a través de su propio campo customModel o la lista global runtime.cannonModelPriority) y FreeMinecraftModels está instalado:

  • Se genera una entidad de modelo estática en la ubicación del cañón
  • La etiqueta de texto flotante se eleva más para evitar superposición con el modelo
  • Las animaciones de partículas inactivas se suprimen mientras un modelo está activo
  • Cuando un jugador se lanza, el modelo reproduce su animación fire (si existe en el archivo del modelo)

Comportamiento de Validación en Tiempo de Ejecución

CannonRTP rechaza posibles ubicaciones de aterrizaje cuando falla cualquiera de estas comprobaciones:

  • el mundo objetivo no está cargado
  • el centro de búsqueda no es válido
  • la muestra aleatoria cae fuera del borde del mundo
  • no se encuentra una superficie sólida segura
  • el espacio de los pies o de la cabeza está bloqueado
  • los bloques del terreno o del cuerpo coinciden con las listas configuradas de materiales inseguros
  • una integración de protección bloquea el aterrizaje

Si un cañón no puede encontrar suficientes ubicaciones válidas antes de landing.searchTimeoutSeconds, se marca como agotado y empieza a devolver el mensaje de fallo configurado en lugar de lanzar jugadores. El mensaje de fallo incluye un resumen de las razones de rechazo más comunes.

La ventana de búsqueda del cañón se reinicia cada vez que necesita reponer ubicaciones consumidas (p. ej., después de que un jugador sea lanzado y un espacio quede libre).

Protección de Interacción

CannonRTP evita que un jugador active un cañón mientras ya está en una secuencia de lanzamiento activa. Una vez que el lanzamiento actual finaliza (aterrizaje o desconexión), el jugador puede usar un cañón de nuevo. No hay un temporizador de cooldown adicional.