Pular para o conteúdo principal

Configuração do CannonRTP

CannonRTP usa um arquivo de configuração global mais um arquivo de configuração por canhão.

Estrutura de arquivos

  • Configuração global: plugins/CannonRTP/config.yml
  • Configurações por canhão: plugins/CannonRTP/custom/fun_rtps/<id>.yml

O plugin também inclui um pacote de canhão de exemplo chamado example_world_cannon. Ele está desabilitado por padrão.

Estrutura da configuração global

A configuração principal está organizada sob:

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

Configurações de execução

ChavePadrãoComportamento
runtime.scanIntervalTicks2Com que frequência os canhões verificam jogadores próximos (mínimo 2)
runtime.particleIntervalTicks15Com que frequência as partículas do canhão ocioso são renderizadas (mínimo 5)

Configurações de busca de pouso

ChavePadrãoComportamento
landing.searchAttemptsPerTick2Tentativas de busca por canhão por tick durante o pré-carregamento (mínimo 1)
landing.preloadedLocationsPerCannon10Número total de destinos seguros que o plugin tenta manter na fila por canhão (mínimo 1)
landing.chargedLocationsPerCannon5Quantas localizações um canhão deve ter antes de ser considerado carregado e pronto para lançar (mínimo 1, limitado a preloadedLocationsPerCannon)
landing.searchTimeoutSeconds1000Tempo em segundos antes que um canhão ainda buscando seja marcado como esgotado (mínimo 10)
landing.slowFallingSeconds60Duração da Queda Lenta após a chegada em segundos; o efeito é removido antecipadamente quando o jogador pousa (mínimo 1)
landing.failOpenOnProtectionErrorsfalseSe uma API de proteção gerar erro, bloqueia o pouso por padrão

Sons de pouso

As seguintes chaves de som são configuráveis:

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

Os valores de som usam nomes de registro Sound do Bukkit ou chaves com namespace. Nomes de som inválidos são registrados como avisos e o som é silenciosamente ignorado.

Listas de materiais inseguros

CannonRTP rejeita localizações de pouso candidatas com base em duas listas de materiais:

  • landing.unsafeGroundMaterials -- blocos sobre os quais nunca se deve ficar
  • landing.unsafeBodyMaterials -- blocos que nunca devem ocupar o espaço dos pés ou da cabeça

Materiais de chão inseguros padrão:

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

Materiais de corpo inseguros padrão:

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

Configurações de mensagens

Todas as mensagens suportam gradientes MagmaCore, tags MiniMessage e códigos de cor legados. O marcador $prefix é substituído pelo valor de prefixo configurado.

O plugin expõe chaves de mensagens sob:

ChaveMarcadoresDescrição
messages.prefix--Prefixo usado por todas as mensagens do CannonRTP
messages.helpHeader$prefixCabeçalho mostrado por /cannonrtp
messages.createdCannon$prefix, $cannon, $id, $pathEnviado após criar um canhão
messages.deletedCannon$prefix, $cannonEnviado após excluir um canhão
messages.movedCannon$prefix, $cannonEnviado após mover um canhão
messages.targetWorldUpdated$prefix, $cannon, $worldEnviado após alterar o mundo alvo de um canhão
messages.searchCenterUpdated$prefix, $cannonEnviado após alterar o centro de busca de um canhão
messages.reload$prefix, $countEnviado após recarregar
messages.noPermission$prefix, $cannonEnviado quando um jogador pode ver um canhão mas não pode usá-lo
messages.cannonDisabled$prefix, $cannonEnviado quando um jogador entra em um canhão desabilitado
messages.queueCalibration$prefix, $cannon, $queued, $target, $secondsEnviado enquanto um canhão ainda está pré-carregando
messages.noValidLocationYet$prefix, $cannonEnviado quando nenhuma localização segura foi encontrada ainda
messages.noValidLocationFound$prefix, $cannon, $reasonEnviado quando CannonRTP desiste após esgotar o tempo
messages.invalidConfiguration$prefix, $cannon, $reasonEnviado quando um erro de configuração é detectado
messages.statusLine$prefix, $cannon, $status, $queued, $target, $reasonFormato de linha usado por /wc status e /wc list
messages.probeAllowed$prefixEnviado por /wc probe quando a localização é válida
messages.probeBlocked$prefix, $plugin, $reasonEnviado por /wc probe quando a localização está bloqueada
messages.unknownCommand$prefixEnviado quando um admin usa um subcomando não reconhecido

Mensagens de título

ChaveMarcadoresDescrição
messages.titles.launchQueuedTitle$cannonTítulo mostrado quando um lançamento começa
messages.titles.launchQueuedSubtitle$cannonSubtítulo mostrado quando um lançamento começa
messages.titles.destinationPreviewTitle$x, $y, $zTítulo mostrado durante a contagem regressiva de aquecimento
messages.titles.destinationPreviewSubtitle$x, $y, $zSubtítulo mostrado durante a contagem regressiva de aquecimento
messages.titles.destinationConfirmedTitle$x, $y, $z, $worldTítulo mostrado logo antes do teletransporte
messages.titles.destinationConfirmedSubtitle$x, $y, $z, $worldSubtítulo mostrado logo antes do teletransporte
messages.titles.arrivalSubtitles--Lista de subtítulos; um é escolhido aleatoriamente após cada lançamento

A prévia de coordenadas durante o aquecimento não mostra o destino real -- mostra coordenadas aleatórias dentro da área de busca do canhão como efeito visual. O destino verdadeiro é revelado apenas no título confirmado.

Campos de configuração por canhão

Cada arquivo de canhão (plugins/CannonRTP/custom/fun_rtps/<id>.yml) armazena estes campos:

CampoPadrãoNotas
isEnabledtrue para canhões recém-criadosCanhões desabilitados não são acionados
displayNameCannonRTP (ou o nome fornecido na criação)Usado em mensagens, saída de status e rótulo flutuante
cannonLocationObrigatórioOnde o gatilho do canhão existe
targetWorldMundo atual no momento da criaçãoDeve estar carregado em tempo de execução
searchCenternull (recorre ao spawn do mundo alvo)Se não definido, o plugin usa a localização de spawn do mundo alvo
triggerRadius1.75Raio usado para detectar jogadores próximos (mínimo 0.5)
minSearchRadius500Distância mínima de busca de pouso a partir do centro de busca (mínimo 0)
maxSearchRadius5000Distância máxima de busca de pouso a partir do centro de busca (sempre pelo menos minSearchRadius + 1)
launchWarmupSeconds6Tempo de levitação/contagem regressiva antes do lançamento (mínimo 0; se 0, o lançamento é instantâneo)
verticalBoostTicks45Ticks de velocidade ascendente antes do teletransporte (mínimo 0)
verticalBoostVelocity1.35Velocidade ascendente aplicada durante o lançamento (mínimo 0)
enableParticlestrueControla a animação de partículas do canhão ocioso
requiredPermissionvazioPorta de permissão extra opcional para este canhão específico
customModelvazioNome opcional do modelo FreeMinecraftModels para exibir na localização do canhão

Valores padrão na criação do canhão

Quando você executa /wc create <id>:

  • o ID do canhão é convertido para minúsculas e caracteres diferentes de a-z, 0-9, _ e - são substituídos por _
  • o nome de exibição é CannonRTP por padrão se não especificado, ou o nome fornecido com underscores convertidos em espaços
  • cannonLocation é definido para sua localização atual
  • targetWorld é definido para seu mundo atual
  • searchCenter não é definido (recorre ao spawn do mundo alvo)

Após a criação, o plugin imprime o caminho do arquivo de configuração e sugere quais campos editar manualmente: displayName, customModel, requiredPermission, launchWarmupSeconds, verticalBoostTicks e verticalBoostVelocity.

Integração FreeMinecraftModels

Se uma configuração de canhão define customModel com um nome de modelo FreeMinecraftModels válido e FreeMinecraftModels está instalado:

  • Uma entidade de modelo estático é gerada na localização do canhão
  • O rótulo de texto flutuante é elevado para evitar sobreposição com o modelo
  • Se um modelo chamado fire também existe, uma animação de lançamento alternativa é usada: o jogador é teletransportado para o assento do canhão e mantido no lugar durante uma sequência de carregamento de 3 segundos (60 ticks) antes da decolagem com um efeito de partículas de explosão

Comportamento de validação em tempo de execução

CannonRTP rejeita localizações de pouso candidatas quando qualquer uma dessas verificações falha:

  • o mundo alvo não está carregado
  • o centro de busca é inválido
  • a amostra aleatória cai fora da borda do mundo
  • nenhuma superfície sólida segura é encontrada
  • o espaço dos pés ou da cabeça está bloqueado
  • o terreno ou os blocos do corpo correspondem às listas de materiais inseguros configuradas
  • uma integração de proteção bloqueia o pouso

Se um canhão não conseguir encontrar localizações válidas suficientes antes de landing.searchTimeoutSeconds, ele fica esgotado e começa a retornar a mensagem de falha configurada em vez de lançar jogadores. A mensagem de falha inclui um resumo das razões de rejeição mais comuns.

A janela de busca do canhão reinicia quando precisa reabastecer localizações consumidas (ex. após um jogador ser lançado e um espaço ficar livre).

Cooldown de interação

CannonRTP aplica um cooldown de 3 segundos entre interações por jogador. Este cooldown se aplica independentemente de a interação ter sido um lançamento bem-sucedido, uma negação de permissão ou qualquer outra verificação de canhão. O cooldown não é configurável.