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
| Clave | Predeterminado | Comportamiento |
|---|---|---|
runtime.particleIntervalTicks | 15 | Con 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
| Clave | Predeterminado | Comportamiento |
|---|---|---|
landing.searchAttemptsPerTick | 2 | Intentos de búsqueda por cañón y por tick mientras se precarga (mínimo 1) |
landing.preloadedLocationsPerCannon | 10 | Número total de destinos seguros que el plugin intenta mantener en cola por cañón (mínimo 1) |
landing.chargedLocationsPerCannon | 5 | Cuántas ubicaciones necesita un cañón antes de considerarse cargado y listo para lanzar (mínimo 1, limitado por preloadedLocationsPerCannon) |
landing.searchTimeoutSeconds | 1000 | Tiempo en segundos antes de que un cañón que sigue buscando se marque como agotado (mínimo 10) |
landing.slowFallingSeconds | 60 | Duración de Caída Lenta después de llegar en segundos; el efecto se elimina anticipadamente cuando el jugador aterriza (mínimo 1) |
landing.failOpenOnProtectionErrors | false | Si 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 pielanding.unsafeBodyMaterials-- bloques que nunca deberían ocupar el espacio de los pies o la cabeza
Materiales inseguros del suelo por defecto:
LAVAMAGMA_BLOCKCAMPFIRESOUL_CAMPFIRECACTUSPOWDER_SNOW
Materiales inseguros del cuerpo por defecto:
LAVAWATERFIRESOUL_FIRESWEET_BERRY_BUSHPOWDER_SNOWCOBWEB
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:
| Clave | Marcadores | Descripción |
|---|---|---|
messages.prefix | -- | Prefijo usado por todos los mensajes de CannonRTP |
messages.helpHeader | $prefix | Encabezado mostrado por /cannonrtp |
messages.createdCannon | $prefix, $cannon, $id, $path | Enviado tras crear un cañón |
messages.deletedCannon | $prefix, $cannon | Enviado tras eliminar un cañón |
messages.movedCannon | $prefix, $cannon | Enviado tras mover un cañón |
messages.targetWorldUpdated | $prefix, $cannon, $world | Enviado tras cambiar el mundo objetivo de un cañón |
messages.searchCenterUpdated | $prefix, $cannon | Enviado tras cambiar el centro de búsqueda de un cañón |
messages.reload | $prefix, $count | Enviado tras recargar |
messages.noPermission | $prefix, $cannon | Enviado cuando un jugador puede ver un cañón pero no puede usarlo |
messages.cannonDisabled | $prefix, $cannon | Enviado cuando un jugador entra en un cañón desactivado |
messages.queueCalibration | $prefix, $cannon, $queued, $target, $seconds | Enviado mientras un cañón aún está precargando |
messages.noValidLocationYet | $prefix, $cannon | Enviado cuando aún no se ha encontrado ninguna ubicación segura |
messages.noValidLocationFound | $prefix, $cannon, $reason | Enviado cuando CannonRTP se rinde tras agotar el tiempo |
messages.invalidConfiguration | $prefix, $cannon, $reason | Enviado cuando se detecta un error de configuración |
messages.statusLine | $prefix, $cannon, $status, $queued, $target, $reason | Formato de línea usado por /wc status y /wc list |
messages.probeAllowed | $prefix | Enviado por /wc probe cuando la ubicación es válida |
messages.probeBlocked | $prefix, $plugin, $reason | Enviado por /wc probe cuando la ubicación está bloqueada |
messages.unknownCommand | $prefix | Enviado cuando un administrador usa un subcomando no reconocido |
Mensajes de Título
| Clave | Marcadores | Descripción |
|---|---|---|
messages.titles.launchQueuedTitle | $cannon | Título mostrado cuando comienza un lanzamiento |
messages.titles.launchQueuedSubtitle | $cannon | Subtítulo mostrado cuando comienza un lanzamiento |
messages.titles.destinationPreviewTitle | $x, $y, $z | Título mostrado durante la fase de búsqueda |
messages.titles.destinationPreviewSubtitle | $x, $y, $z | Subtítulo mostrado durante la fase de búsqueda |
messages.titles.destinationConfirmedTitle | $x, $y, $z, $world | Título mostrado al inicio de la fase de disparo y nuevamente después del teletransporte |
messages.titles.destinationConfirmedSubtitle | $x, $y, $z, $world | Subtí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:
| Campo | Predeterminado | Notas |
|---|---|---|
isEnabled | true para cañones recién creados | Los cañones desactivados no se activan |
displayName | CannonRTP (o el nombre proporcionado al crear) | Usado en mensajes, salida de estado y la etiqueta flotante |
cannonLocation | Obligatorio | Donde existe el activador del cañón |
targetWorld | Mundo actual en el momento de la creación | Debe estar cargado en tiempo de ejecución |
searchCenter | null (recurre al spawn del mundo objetivo) | Si no se establece, el plugin usa la ubicación de spawn del mundo objetivo |
triggerRadius | 1.75 | Radio usado para detectar jugadores cercanos (mínimo 0.5) |
minSearchRadius | 500 | Distancia mínima de búsqueda de aterrizaje desde el centro de búsqueda (mínimo 0) |
maxSearchRadius | 5000 | Distancia máxima de búsqueda de aterrizaje desde el centro de búsqueda (siempre al menos minSearchRadius + 1) |
verticalBoostTicks | 45 | Ticks de velocidad ascendente antes del teletransporte (mínimo 0) |
verticalBoostVelocity | 1.35 | Velocidad ascendente aplicada durante el lanzamiento (mínimo 0) |
enableParticles | true | Controla la animación de partículas del cañón inactivo (solo se usa cuando no hay un modelo personalizado activo) |
requiredPermission | vacío | Barrera de permiso adicional opcional para este cañón específico |
customModel | vacío | Nombre 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á
CannonRTPpor defecto si no se especifica, o el nombre proporcionado con guiones bajos convertidos en espacios cannonLocationse establece en tu ubicación actualtargetWorldse establece en tu mundo actualsearchCenterno 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.