Saltar al contenido principal

Configuración de CannonRTP

CannonRTP reparte sus ajustes globales entre varios archivos de plugins/CannonRTP/, además de un archivo por cañón en plugins/CannonRTP/cannons/.

Archivos​

ArchivoPropósito
plugins/CannonRTP/config.ymlAjustes generales: estado de configuración inicial, idioma, intervalo de partículas, tiempo de reutilización de lanzamiento, prioridad de modelos, ID de recurso de Spigot y ajustes de actualización de Nightbreak
plugins/CannonRTP/landing.ymlAjustes de búsqueda de aterrizajes: tamaño de cola, límite de intentos, duración de caída lenta, materiales inseguros y comportamiento ante errores de protección
plugins/CannonRTP/sounds.ymlSonidos de la secuencia de lanzamiento
plugins/CannonRTP/messages.ymlMensajes para jugadores, prefijos y conjuntos de títulos
plugins/CannonRTP/protection.ymlAjustes de cada integración de protección
plugins/CannonRTP/cannons/<id>.ymlUn archivo por cañón; puede controlar varias colocaciones
plugins/CannonRTP/cannons_disabled/Configuraciones de cañones de paquetes actualmente deshabilitados. /wc setup mueve archivos entre cannons/ y cannons_disabled/ al habilitar o deshabilitar paquetes.
plugins/CannonRTP/content_packages/<package>.ymlMetadatos generados de cada paquete de Nightbreak: versión, enlace de descarga y prefijos para localizar sus archivos. Normalmente no se editan a mano.
plugins/CannonRTP/imports/Carpeta para importaciones manuales de contenido. Consulta Paquetes de contenido.
plugins/CannonRTP/nightbreak-changelogs.ymlEstado de lectura de la bandeja compartida /wcchangelog. Consulta Notificaciones de notas de versión.

El plugin incluye tres configuraciones de ejemplo:

  • example_cannonrtp.yml: plantilla de referencia vacía, con nombre visible Example World Cannon, deshabilitada por defecto. Úsala como referencia YAML para escribir configuraciones manualmente.
  • cannonrtp_free_cannon.yml: habilitada, sin colocaciones y con el modelo gratuito de FMM cannonrtp.
  • cannonrtp_premium_cannon.yml: habilitada, sin colocaciones y con el modelo prémium de FMM cannonrtp_premium.

Ninguna incluye ubicaciones en cannonLocations por defecto, por lo que no aparece nada hasta que un administrador ejecute /wc create o /wc place. Ninguna define targetWorld, así que cada colocación hace aterrizar a los jugadores en el mundo en el que se encuentra.

CannonRTP vuelve a crear cualquiera de estos tres archivos que falte en cannons/ cada vez que carga las configuraciones de cañones. Si eliminas uno con /wc delete, o se retira al deshabilitar su paquete de contenido, tras la recarga queda una copia predeterminada nueva sin colocaciones.

config.yml​

ClavePredeterminadoComportamiento
setupDonefalseRegistra si se ha completado la configuración inicial de Nightbreak
languageenglishArchivo de traducción que se debe cargar. La versión 1 solo incluye inglés; la clave está prevista para futuros paquetes de traducción
runtime.particleIntervalTicks15Intervalo exacto, en ticks del servidor, entre las partículas del cañón en reposo. Mínimo 1; usa 1 para mostrarlas cada tick
runtime.launchCooldownSeconds30Segundos de espera por jugador entre lanzamientos aceptados. Mínimo 0; 0 lo deshabilita. Cancelar CannonRTPLaunchEvent no inicia la espera.
runtime.cannonModelPriority[cannonrtp_premium, cannonrtp]Nombres de modelos de FreeMinecraftModels por prioridad, de arriba abajo. El primero disponible se usa en los cañones sin customModel propio. Si no hay ninguno, se usan partículas orbitales.
runtime.spigotResourceId""ID del recurso de Spigot para comprobar versiones. Vacío deshabilita la comprobación.
nightbreak.autoDownloadPluginUpdatesfalseLo añade MagmaCore, incluido en el JAR. Con true, CannonRTP descarga automáticamente unos minutos después del arranque los archivos de actualizaciones disponibles del plugin y del contenido. Las actualizaciones de contenido se usan tras el siguiente reinicio del servidor; una actualización del plugin sigue lo indicado en nightbreak.applyPluginUpdatesWithoutRestart. Las descargas automáticas del plugin requieren un token válido de Nightbreak y una suscripción activa de colaborador. Déjalo en false para usar el botón de actualización del juego.
nightbreak.applyPluginUpdatesWithoutRestartneverLo añade MagmaCore, incluido en el JAR. Decide cuándo se aplica una actualización del plugin descargada, recargando CannonRTP desde el nuevo JAR. never espera al siguiente reinicio. when-empty la aplica de inmediato si no hay jugadores conectados; si los hay, lo comprueba cada 30 segundos y la aplica en cuanto el servidor se queda vacío. immediately la aplica en cuanto termina la descarga. Cualquier otro valor cuenta como never. La recarga cancela los lanzamientos activos, como se describe en Protección de la activación. /wc applypluginupdate aplica a mano una actualización descargada, sea cual sea este ajuste.

landing.yml​

ClavePredeterminadoComportamiento
preloadedLocationsPerCannon10Total de destinos seguros que se intenta mantener en cola por cañón; mínimo 1
chargedLocationsPerCannon1Número de ubicaciones necesarias para mostrar Listo. Mínimo 1 y máximo preloadedLocationsPerCannon. El cañón puede lanzar en cuanto haya un destino; este umbral solo afecta a la etiqueta visual.
searchTimeoutAttempts100Intentos fallidos antes de marcar el cañón como Agotado; mínimo 10. El límite global es un intento por tick, 20 por segundo, repartido de forma equitativa entre los cañones activos.
slowFallingSeconds60Duración máxima de Caída lenta tras el teletransporte; mínimo 1. El efecto se elimina antes si el jugador aterriza.
failOpenOnProtectionErrorsfalsePor defecto, un error de la API de protección bloquea el aterrizaje. Con true, se permite continuar si no se puede consultar la protección de forma segura. Con false, una integración de protección habilitada que no haya podido cargarse también impide que todos los cañones busquen (consulta Integraciones de protección).
unsafeGroundMaterials[LAVA, MAGMA_BLOCK, CAMPFIRE, SOUL_CAMPFIRE, CACTUS, POWDER_SNOW]Materiales que invalidan una superficie de aterrizaje
unsafeBodyMaterials[LAVA, WATER, FIRE, SOUL_FIRE, SWEET_BERRY_BUSH, POWDER_SNOW, COBWEB]Materiales prohibidos en toda la columna vertical de aterrizaje y descenso, incluido el espacio de la cabeza al llegar

Los materiales son nombres del enum Material de Bukkit. Las entradas no válidas se omiten con un aviso en el registro.

sounds.yml​

ClavePredeterminadoComportamiento
levitationStart.soundBLOCK_BEACON_ACTIVATESonido al comenzar la fase de búsqueda
levitationStart.volume1.0
levitationStart.pitch1.15
blastOff.soundENTITY_GENERIC_EXPLODESonido al comenzar la fase de disparo
blastOff.volume1.0
blastOff.pitch0.9

Los sonidos pueden ser nombres del enum Sound de Bukkit, como BLOCK_BEACON_ACTIVATE, o claves con espacio de nombres, como minecraft:block.beacon.activate. Un nombre de estilo enum se convierte sustituyendo cada guion bajo por un punto, así que un sonido cuya clave contenga un guion bajo, como minecraft:block.note_block.pling, debe escribirse con su clave con espacio de nombres. Los nombres no válidos generan un aviso y se omite el sonido en ese paso. Deja un sonido en blanco para no reproducir nada. Los valores de volumen y tono inferiores a 0 se elevan a 0.

messages.yml​

Todos los mensajes admiten degradados de MagmaCore, etiquetas MiniMessage y códigos de color clásicos &. $prefix se sustituye por el prefijo configurado.

Consulta la lista completa de claves, marcadores y conjuntos de títulos de la secuencia en Mensajes y títulos.

Campos de cada cañón​

Cada archivo plugins/CannonRTP/cannons/<id>.yml guarda estos campos:

CampoPredeterminadoNotas
isEnabledtrue para cañones nuevosLos cañones deshabilitados no se activan, no crean etiqueta ni modelo y aparecen como Deshabilitado en /wc list y /wc status
displayNameCannonRTP o el nombre indicado al crearSe usa en mensajes, información de estado y etiqueta flotante
cannonLocationsLista vacíaCadenas serializadas world,x,y,z,yaw,pitch. Una configuración puede crear varias colocaciones. Se gestiona con /wc create, /wc place y /wc remove.
targetWorldMundo actual al crearPermite aterrizar en un mundo distinto al del cañón. Si está vacío o no existe, cada colocación hace aterrizar a los jugadores en su propio mundo. Debe estar cargado; mientras no lo esté, se detiene la precarga y /wc status indica Target world <name> is not loaded..
searchCenternullSi no se define, la búsqueda parte de la ubicación del cañón cuando esté en el mundo de destino, o del punto de aparición del mundo de destino en caso contrario. Si se define en una ubicación de otro mundo, se usan sus coordenadas X y Z en el mundo de destino.
triggerRadius1.75Radio de detección alrededor del cañón; mínimo 0.5 bloques
minSearchRadius500Distancia mínima de búsqueda desde el centro; mínimo 0
maxSearchRadius5000Distancia máxima de búsqueda; se ajusta para ser al menos minSearchRadius + 1
launchWarmupTicks42Duración en ticks de la fase de búsqueda; mínimo 1
verticalBoostTicks45Duración en ticks de la fase de disparo; mínimo 0. Con 0 se omite el impulso ascendente; el sonido de disparo, el estallido y el título del destino se siguen reproduciendo antes del teletransporte.
verticalBoostVelocity1.35Velocidad ascendente aplicada cada tick de disparo; mínimo 0
enableParticlestrueControla las partículas orbitales en reposo. Solo aparecen sin modelo personalizado activo y con un jugador a menos de 36 bloques.
requiredPermission""Permiso adicional opcional del cañón. Los jugadores con cannonrtp.use pero sin este nodo reciben el mensaje configurado de falta de permiso.
customModel""Nombre opcional de modelo de FreeMinecraftModels para este cañón. Si está vacío o no está disponible, se recurre a runtime.cannonModelPriority.

Valores iniciales al crear cañones​

Al ejecutar /wc create <id>:

  • El ID se convierte a minúsculas y los caracteres distintos de a-z, 0-9, _ y - se sustituyen por _.
  • displayName pasa a CannonRTP, salvo que se use /wc create <id> <display_name>; los guiones bajos del nombre visible se convierten en espacios.
  • La ubicación actual del jugador se añade a cannonLocations.
  • targetWorld se establece en el mundo actual del jugador.
  • No se define searchCenter; se usa la ubicación del cañón si está en el mundo de destino o, en caso contrario, el punto de aparición de ese mundo.

Después, el plugin responde con la ruta absoluta del archivo para que puedas editar manualmente displayName, customModel, requiredPermission, los radios de búsqueda y los ajustes del lanzamiento.

Integración con FreeMinecraftModels​

Si FreeMinecraftModels está instalado y se encuentra un modelo válido mediante customModel o runtime.cannonModelPriority:

  • Se crea una entidad de modelo estático en la ubicación del cañón.
  • La etiqueta flotante sube a 2.0 bloques sobre el cañón, frente a 1.2 sin modelo, para no atravesarlo.
  • Se suprimen las partículas orbitales en reposo mientras el modelo esté activo.
  • Al comenzar la búsqueda de un lanzamiento, el cañón reproduce su animación fire si existe y se oculta al jugador con Invisibilidad durante esa fase para que la animación se vea correctamente.

Habilitar o deshabilitar FreeMinecraftModels durante la ejecución invalida la caché de modelos de cañones. Las versiones actuales de FMM también avisan al terminar una recarga de contenido, para descartar referencias antiguas y recrear los modelos desde el registro actualizado. CannonRTP también detecta directamente las instancias de modelos eliminadas, incluso con FMM 2.4.0, que es anterior al evento de recarga completada. Mientras FMM esté habilitado, la recreación pendiente se reintenta cada 20 ticks hasta que haya un modelo utilizable.

Partículas alternativas en reposo​

Sin un modelo activo, el cañón muestra un par de partículas DUST_COLOR_TRANSITION + FIREWORK orbitando alrededor de su centro. Los colores cambian según el estado efectivo:

EstadoColor principalColor secundario
ListoNaranja, 255, 179, 71Dorado pálido, 255, 241, 168
Buscando: cargando o reponiendoNaranja cálido, 255, 140, 66Dorado, 255, 209, 102
AgotadoRojo, 255, 107, 107Naranja cálido, 255, 159, 104

Solo se muestran si hay un jugador a menos de 36 bloques, enableParticles es true y no hay un modelo personalizado activo.

Etiqueta flotante de estado​

Cada cañón habilitado crea un TextDisplay orientado al observador sobre su base, con el nombre visible y el estado actual: Ready, Charging, Maintaining o Exhausted. Los cañones deshabilitados no crean etiqueta. La etiqueta no es persistente, no se guarda en los datos del chunk y se recrea automáticamente al cargarlo. Se sitúa a 1.2 bloques sobre el cañón, o a 2.0 con un modelo de FreeMinecraftModels activo.

Validación durante la ejecución​

CannonRTP rechaza los candidatos de aterrizaje cuando falla alguna de estas comprobaciones:

  • El mundo de destino está descargado.
  • No se puede resolver el centro de búsqueda, lo que solo ocurre si el mundo de destino está descargado.
  • La muestra aleatoria cae fuera del borde del mundo.
  • No se puede cargar el chunk candidato.
  • No se encuentra una superficie segura, sólida y no líquida.
  • Algún bloque de la columna de descenso de 52 bloques está obstruido.
  • La superficie o algún bloque de la columna coincide con las listas de materiales inseguros.
  • Una integración de protección bloquea el aterrizaje.
  • Un listener de CannonRTPLocationValidationEvent rechaza el candidato.

Tras searchTimeoutAttempts búsquedas fallidas, 100 por defecto, la precarga puede quedar Agotada. Los destinos que ya estén en cola siguen siendo utilizables. Al activar el cañón, solo se devuelve el mensaje de fallo si la cola está vacía; el mensaje resume los motivos de rechazo habituales. Liberar un hueco tras un lanzamiento reinicia el contador de intentos.

El terreno de destino debe existir: los chunks candidatos se cargan sin generar terreno nuevo. Genera o explora primero el área de búsqueda; de lo contrario, un radio sin explorar en un mundo nuevo puede dejar la cola vacía.

Protección de la activación​

CannonRTP impide activar un cañón durante una secuencia de lanzamiento activa. El bloqueo permanece hasta que termine la secuencia y el jugador haya salido realmente del radio del cañón, evitando que recuperarlo en el asiento provoque otro lanzamiento inmediato. Tras aceptar un lanzamiento, un tiempo de reutilización global por jugador bloquea todos los cañones durante runtime.launchCooldownSeconds, 30 segundos por defecto. Se conserva durante desconexiones mientras el servidor siga en marcha, usa un reloj monotónico y se borra cada vez que CannonRTP reconstruye sus cañones: con /wc reload, con una actualización del plugin sin reinicio, al deshabilitar el plugin o con cualquier comando de edición de cañones (create, place, remove, delete, target, center). Una reconstrucción también cancela los lanzamientos activos, devuelve a esos jugadores al asiento de su cañón y descarta todos los destinos en cola. Entrar antes de tiempo envía el mensaje configurable launchCooldown; usa 0 en la configuración para deshabilitar esta espera.