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
| Chave | Padrão | Comportamento |
|---|---|---|
runtime.scanIntervalTicks | 2 | Com que frequência os canhões verificam jogadores próximos (mínimo 2) |
runtime.particleIntervalTicks | 15 | Com que frequência as partículas do canhão ocioso são renderizadas (mínimo 5) |
Configurações de busca de pouso
| Chave | Padrão | Comportamento |
|---|---|---|
landing.searchAttemptsPerTick | 2 | Tentativas de busca por canhão por tick durante o pré-carregamento (mínimo 1) |
landing.preloadedLocationsPerCannon | 10 | Número total de destinos seguros que o plugin tenta manter na fila por canhão (mínimo 1) |
landing.chargedLocationsPerCannon | 5 | Quantas localizações um canhão deve ter antes de ser considerado carregado e pronto para lançar (mínimo 1, limitado a preloadedLocationsPerCannon) |
landing.searchTimeoutSeconds | 1000 | Tempo em segundos antes que um canhão ainda buscando seja marcado como esgotado (mínimo 10) |
landing.slowFallingSeconds | 60 | Duração da Queda Lenta após a chegada em segundos; o efeito é removido antecipadamente quando o jogador pousa (mínimo 1) |
landing.failOpenOnProtectionErrors | false | Se 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 ficarlanding.unsafeBodyMaterials-- blocos que nunca devem ocupar o espaço dos pés ou da cabeça
Materiais de chão inseguros padrão:
LAVAMAGMA_BLOCKCAMPFIRESOUL_CAMPFIRECACTUSPOWDER_SNOW
Materiais de corpo inseguros padrão:
LAVAWATERFIRESOUL_FIRESWEET_BERRY_BUSHPOWDER_SNOWCOBWEB
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:
| Chave | Marcadores | Descrição |
|---|---|---|
messages.prefix | -- | Prefixo usado por todas as mensagens do CannonRTP |
messages.helpHeader | $prefix | Cabeçalho mostrado por /cannonrtp |
messages.createdCannon | $prefix, $cannon, $id, $path | Enviado após criar um canhão |
messages.deletedCannon | $prefix, $cannon | Enviado após excluir um canhão |
messages.movedCannon | $prefix, $cannon | Enviado após mover um canhão |
messages.targetWorldUpdated | $prefix, $cannon, $world | Enviado após alterar o mundo alvo de um canhão |
messages.searchCenterUpdated | $prefix, $cannon | Enviado após alterar o centro de busca de um canhão |
messages.reload | $prefix, $count | Enviado após recarregar |
messages.noPermission | $prefix, $cannon | Enviado quando um jogador pode ver um canhão mas não pode usá-lo |
messages.cannonDisabled | $prefix, $cannon | Enviado quando um jogador entra em um canhão desabilitado |
messages.queueCalibration | $prefix, $cannon, $queued, $target, $seconds | Enviado enquanto um canhão ainda está pré-carregando |
messages.noValidLocationYet | $prefix, $cannon | Enviado quando nenhuma localização segura foi encontrada ainda |
messages.noValidLocationFound | $prefix, $cannon, $reason | Enviado quando CannonRTP desiste após esgotar o tempo |
messages.invalidConfiguration | $prefix, $cannon, $reason | Enviado quando um erro de configuração é detectado |
messages.statusLine | $prefix, $cannon, $status, $queued, $target, $reason | Formato de linha usado por /wc status e /wc list |
messages.probeAllowed | $prefix | Enviado por /wc probe quando a localização é válida |
messages.probeBlocked | $prefix, $plugin, $reason | Enviado por /wc probe quando a localização está bloqueada |
messages.unknownCommand | $prefix | Enviado quando um admin usa um subcomando não reconhecido |
Mensagens de título
| Chave | Marcadores | Descrição |
|---|---|---|
messages.titles.launchQueuedTitle | $cannon | Título mostrado quando um lançamento começa |
messages.titles.launchQueuedSubtitle | $cannon | Subtítulo mostrado quando um lançamento começa |
messages.titles.destinationPreviewTitle | $x, $y, $z | Título mostrado durante a contagem regressiva de aquecimento |
messages.titles.destinationPreviewSubtitle | $x, $y, $z | Subtítulo mostrado durante a contagem regressiva de aquecimento |
messages.titles.destinationConfirmedTitle | $x, $y, $z, $world | Título mostrado logo antes do teletransporte |
messages.titles.destinationConfirmedSubtitle | $x, $y, $z, $world | Subtí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:
| Campo | Padrão | Notas |
|---|---|---|
isEnabled | true para canhões recém-criados | Canhões desabilitados não são acionados |
displayName | CannonRTP (ou o nome fornecido na criação) | Usado em mensagens, saída de status e rótulo flutuante |
cannonLocation | Obrigatório | Onde o gatilho do canhão existe |
targetWorld | Mundo atual no momento da criação | Deve estar carregado em tempo de execução |
searchCenter | null (recorre ao spawn do mundo alvo) | Se não definido, o plugin usa a localização de spawn do mundo alvo |
triggerRadius | 1.75 | Raio usado para detectar jogadores próximos (mínimo 0.5) |
minSearchRadius | 500 | Distância mínima de busca de pouso a partir do centro de busca (mínimo 0) |
maxSearchRadius | 5000 | Distância máxima de busca de pouso a partir do centro de busca (sempre pelo menos minSearchRadius + 1) |
launchWarmupSeconds | 6 | Tempo de levitação/contagem regressiva antes do lançamento (mínimo 0; se 0, o lançamento é instantâneo) |
verticalBoostTicks | 45 | Ticks de velocidade ascendente antes do teletransporte (mínimo 0) |
verticalBoostVelocity | 1.35 | Velocidade ascendente aplicada durante o lançamento (mínimo 0) |
enableParticles | true | Controla a animação de partículas do canhão ocioso |
requiredPermission | vazio | Porta de permissão extra opcional para este canhão específico |
customModel | vazio | Nome 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 é
CannonRTPpor padrão se não especificado, ou o nome fornecido com underscores convertidos em espaços cannonLocationé definido para sua localização atualtargetWorldé definido para seu mundo atualsearchCenternã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
firetambé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.