Saltar para o conteúdo principal

Configuração do CannonRTP

O CannonRTP distribui as definições globais por vários ficheiros em plugins/CannonRTP/ e guarda uma configuração por canhão em plugins/CannonRTP/cannons/.

Organização dos ficheiros​

FicheiroFunção
plugins/CannonRTP/config.ymlOpções gerais de funcionamento: estado da configuração inicial, idioma, intervalo de partículas, tempo de espera entre lançamentos, prioridade dos modelos de canhão, ID do recurso Spigot e definições de atualização do Nightbreak
plugins/CannonRTP/landing.ymlAjustes da pesquisa de destinos: tamanho da fila, limite de tentativas, duração da queda lenta, materiais inseguros e comportamento perante erros de proteção
plugins/CannonRTP/sounds.ymlSons da sequência de lançamento
plugins/CannonRTP/messages.ymlMensagens aos jogadores, prefixos e conjuntos de títulos
plugins/CannonRTP/protection.ymlOpções de integração com cada plugin de proteção
plugins/CannonRTP/cannons/<id>.ymlUm ficheiro por canhão, que pode controlar várias posições no mundo
plugins/CannonRTP/cannons_disabled/Configurações de canhões incluídas em pacotes de conteúdo e atualmente desativadas. O menu /wc setup move os ficheiros entre cannons/ e cannons_disabled/ ao ativar ou desativar um pacote.
plugins/CannonRTP/content_packages/<package>.ymlMetadados gerados para cada pacote Nightbreak: versão, ligação de transferência e prefixos usados para localizar os seus ficheiros. Normalmente não se editam à mão.
plugins/CannonRTP/imports/Pasta para importações manuais de conteúdo. Consulte Pacotes de conteúdo.
plugins/CannonRTP/nightbreak-changelogs.ymlEstado de leitura da caixa de entrada partilhada /wcchangelog. Consulte Notificações de notas de lançamento.

O plugin inclui três configurações de exemplo:

  • example_cannonrtp.yml: modelo de referência vazio, com o nome Example World Cannon, desativado por predefinição. Use-o como referência YAML ao escrever ficheiros de canhão manualmente.
  • cannonrtp_free_cannon.yml: ativado, sem posições definidas, usa o modelo FMM gratuito cannonrtp.
  • cannonrtp_premium_cannon.yml: ativado, sem posições definidas, usa o modelo FMM premium cannonrtp_premium.

Nenhum tem cannonLocations preenchido inicialmente. Nada aparece no mundo até um administrador executar /wc create ou /wc place. Nenhum define targetWorld, pelo que cada colocação envia os jogadores para o mundo onde se encontra.

O CannonRTP recria qualquer um destes três ficheiros que falte em cannons/ sempre que carrega as configurações dos canhões. Eliminar um deles com /wc delete, ou retirá-lo ao desativar o respetivo pacote de conteúdo, deixa uma cópia predefinida nova, sem posições, após o recarregamento.

config.yml​

ChavePredefiniçãoComportamento
setupDonefalseRegista se a configuração inicial do Nightbreak foi concluída
languageenglishFicheiro de tradução a carregar. A versão 1 inclui apenas inglês; a chave permite futuros pacotes de tradução
runtime.particleIntervalTicks15Intervalo exato, em ticks do servidor, entre apresentações das partículas do canhão em repouso. Mínimo 1; use 1 para as apresentar em todos os ticks
runtime.launchCooldownSeconds30Segundos que um jogador deve esperar entre lançamentos aceites. Mínimo 0; 0 desativa a espera. Eventos CannonRTPLaunchEvent cancelados não iniciam este período.
runtime.cannonModelPriority[cannonrtp_premium, cannonrtp]Lista de modelos FreeMinecraftModels por ordem de preferência. O primeiro disponível no servidor é usado pelos canhões sem customModel próprio. Se nenhum existir, são usadas partículas em órbita.
runtime.spigotResourceId""ID do recurso Spigot usado pelo verificador de versões. Deixe vazio para desativar.
nightbreak.autoDownloadPluginUpdatesfalseAdicionado pela biblioteca MagmaCore incorporada. Com true, o CannonRTP transfere automaticamente as atualizações disponíveis do plugin e do conteúdo alguns minutos após o arranque. As atualizações de conteúdo são usadas após o próximo reinício do servidor; uma atualização do plugin segue nightbreak.applyPluginUpdatesWithoutRestart. As transferências automáticas do plugin exigem um token Nightbreak válido e uma subscrição de apoiante ativa. Mantenha false para usar o botão de atualização no jogo.
nightbreak.applyPluginUpdatesWithoutRestartneverAdicionado pela biblioteca MagmaCore incorporada. Decide quando uma atualização do plugin transferida é aplicada, recarregando o CannonRTP a partir do novo JAR. never aguarda o próximo reinício. when-empty aplica-a de imediato se não houver jogadores online; caso contrário, verifica a cada 30 segundos e aplica-a quando o servidor ficar vazio. immediately aplica-a assim que a transferência termina. Qualquer outro valor conta como never. O recarregamento cancela os lançamentos ativos, conforme descrito em Proteção contra ativações repetidas. /wc applypluginupdate aplica manualmente uma atualização transferida, independentemente desta definição.

landing.yml​

ChavePredefiniçãoComportamento
preloadedLocationsPerCannon10Número total de destinos seguros que o plugin tenta manter na fila de cada canhão. Mínimo 1
chargedLocationsPerCannon1Destinos necessários para o rótulo passar a Ready. Mínimo 1, limitado a preloadedLocationsPerCannon. Um canhão já lança jogadores com um único destino na fila; este limiar só afeta o rótulo visual.
searchTimeoutAttempts100Tentativas de pesquisa falhadas antes de o canhão ficar Exhausted. Mínimo 10. Existe um limite global de uma tentativa por tick, 20 por segundo, repartida de forma equilibrada pelos canhões ativos.
slowFallingSeconds60Duração máxima da queda lenta após o teletransporte aéreo. Mínimo 1. O efeito é removido antecipadamente quando o jogador aterra.
failOpenOnProtectionErrorsfalseUm erro na API de um plugin de proteção bloqueia a aterragem por predefinição. Com true, as aterragens continuam quando não é possível consultar esse plugin com segurança. Com false, uma integração de proteção ativa que não conseguiu carregar também impede todos os canhões de pesquisar (consulte Integrações de proteção).
unsafeGroundMaterials[LAVA, MAGMA_BLOCK, CAMPFIRE, SOUL_CAMPFIRE, CACTUS, POWDER_SNOW]Materiais que tornam a superfície de aterragem inválida
unsafeBodyMaterials[LAVA, WATER, FIRE, SOUL_FIRE, SWEET_BERRY_BUSH, POWDER_SNOW, COBWEB]Materiais proibidos em toda a coluna vertical de aterragem e queda, incluindo o espaço para a cabeça na chegada

Os materiais usam nomes do enum Bukkit Material. Entradas inválidas geram avisos no registo e são ignoradas.

sounds.yml​

ChavePredefiniçãoComportamento
levitationStart.soundBLOCK_BEACON_ACTIVATESom reproduzido no início da fase de pesquisa
levitationStart.volume1.0
levitationStart.pitch1.15
blastOff.soundENTITY_GENERIC_EXPLODESom reproduzido no início da fase de disparo
blastOff.volume1.0
blastOff.pitch0.9

Os sons aceitam nomes do enum Bukkit Sound, como BLOCK_BEACON_ACTIVATE, ou chaves com namespace, como minecraft:block.beacon.activate. Um nome no estilo do enum é convertido substituindo cada sublinhado por um ponto, pelo que um som cuja chave contenha um sublinhado, como minecraft:block.note_block.pling, tem de ser escrito com a chave com namespace. Nomes inválidos geram avisos no registo e o som dessa etapa é omitido. Deixe um som em branco para não reproduzir nada. Volume e tom abaixo de 0 passam a 0.

messages.yml​

Todas as mensagens aceitam gradientes MagmaCore, tags MiniMessage e códigos de cor antigos com &. O marcador $prefix é substituído pelo prefixo configurado.

Consulte Mensagens e títulos para ver todas as chaves, os marcadores e os conjuntos de títulos da sequência de lançamento.

Campos de configuração por canhão​

Cada ficheiro de canhão (plugins/CannonRTP/cannons/<id>.yml) guarda estes campos:

CampoPredefiniçãoObservações
isEnabledtrue para novos canhõesCanhões desativados não são acionados, não criam rótulo nem modelo e apresentam Disabled em /wc list e /wc status
displayNameCannonRTP, ou o nome indicado na criaçãoUsado nas mensagens, na informação de estado e no rótulo flutuante
cannonLocationslista vaziaLista de posições serializadas como world,x,y,z,yaw,pitch. Uma configuração pode criar vários canhões no mundo. Gerida por /wc create, /wc place e /wc remove.
targetWorldmundo atual no momento da criaçãoPermite enviar jogadores para um mundo diferente daquele onde está o canhão. Se estiver vazio ou ausente, cada colocação envia os jogadores para o seu próprio mundo. O mundo deve estar carregado durante o funcionamento; enquanto não estiver, o pré-carregamento para e /wc status apresenta Target world <name> is not loaded.
searchCenternullSe não estiver definido, a pesquisa parte da posição do canhão quando este está no mundo de destino, ou do spawn desse mundo. Se estiver definido como uma posição noutro mundo, as suas coordenadas X e Z são usadas no mundo de destino.
triggerRadius1.75Raio de deteção de jogadores à volta do canhão. Mínimo 0.5 blocos
minSearchRadius500Distância mínima da pesquisa de destinos em relação ao centro. Mínimo 0
maxSearchRadius5000Distância máxima da pesquisa, sempre ajustada para pelo menos minSearchRadius + 1
launchWarmupTicks42Duração da fase Searching em ticks. Mínimo 1
verticalBoostTicks45Duração da fase Firing em ticks. Mínimo 0. Com 0, o impulso ascendente é omitido; o som de disparo, a explosão visual e o título do destino continuam a ser apresentados antes do teletransporte.
verticalBoostVelocity1.35Velocidade ascendente aplicada em cada tick da fase de disparo. Mínimo 0
enableParticlestrueControla as partículas em órbita durante o repouso. Só aparecem sem um modelo personalizado ativo e com um jogador a menos de 36 blocos.
requiredPermission""Permissão adicional opcional para este canhão. Jogadores com cannonrtp.use mas sem esta permissão recebem a mensagem de falta de permissão configurada.
customModel""Nome opcional de um modelo FreeMinecraftModels para este canhão. Se estiver vazio ou indisponível, o plugin recorre a runtime.cannonModelPriority.

Predefinições na criação de canhões​

Ao executar /wc create <id>:

  • o ID é convertido para minúsculas e todos os caracteres fora de a-z, 0-9, _ e - são substituídos por _
  • displayName fica como CannonRTP, exceto se usar /wc create <id> <display_name>; os sublinhados em <display_name> tornam-se espaços
  • a posição atual do jogador é acrescentada a cannonLocations
  • targetWorld recebe o mundo atual do jogador
  • searchCenter fica por definir, usando a posição do canhão se este estiver no mundo de destino, ou o spawn desse mundo caso contrário

Após a criação, o plugin apresenta o caminho absoluto do ficheiro de configuração. Pode editar manualmente displayName, customModel, requiredPermission, os raios de pesquisa e os parâmetros de lançamento.

Integração com FreeMinecraftModels​

Quando o FreeMinecraftModels está instalado e o canhão encontra um modelo válido, pelo seu campo customModel ou pela lista global runtime.cannonModelPriority:

  • é criada uma entidade de modelo estático na posição do canhão
  • o rótulo flutuante sobe para 2.0 blocos acima do canhão, em vez de 1.2 sem modelo, para não o atravessar
  • as partículas em órbita deixam de aparecer enquanto o modelo estiver ativo
  • durante um lançamento, o canhão reproduz a animação fire, se existir, no início da fase de pesquisa; o jogador recebe Invisibilidade nessa fase para não interferir visualmente com a animação

Se o FreeMinecraftModels for ativado ou desativado com o servidor em execução, a cache de modelos do canhão é invalidada. As versões atuais do FMM também notificam o CannonRTP quando termina um recarregamento de conteúdo: as referências antigas são descartadas e os modelos são recriados a partir do registo atualizado. O CannonRTP também deteta diretamente instâncias de modelos removidas, incluindo com o FMM 2.4.0, anterior ao evento de conclusão de recarregamento. Enquanto o FMM estiver ativo, as recriações pendentes são repetidas a cada 20 ticks até existir um modelo utilizável.

Partículas de repouso sem modelo​

Sem um modelo ativo, o canhão apresenta um par de partículas DUST_COLOR_TRANSITION + FIREWORK em órbita à volta do centro. As cores dependem do estado efetivo:

EstadoCor principalCor de realce
Prontolaranja (255, 179, 71)dourado claro (255, 241, 168)
A pesquisar, a carregar ou a manter a filalaranja quente (255, 140, 66)dourado (255, 209, 102)
Esgotadovermelho (255, 107, 107)laranja quente (255, 159, 104)

Estas partículas só aparecem com um jogador a menos de 36 blocos, enableParticles a true e nenhum modelo personalizado ativo.

Rótulo flutuante de estado​

Cada canhão ativo cria um TextDisplay acima da base, orientado para o observador, com o nome e o estado atual: Ready, Charging, Maintaining ou Exhausted. Os canhões desativados não criam rótulo. O rótulo não é persistente, nunca é guardado nos dados do chunk e é recriado automaticamente ao recarregar esse chunk. Fica 1.2 blocos acima do canhão, ou 2.0 com um modelo FreeMinecraftModels ativo.

Validação durante o funcionamento​

O CannonRTP rejeita destinos candidatos quando falha qualquer uma destas verificações:

  • o mundo de destino não está carregado
  • não é possível determinar o centro de pesquisa, o que só acontece se o mundo de destino não estiver carregado
  • a posição aleatória fica fora do limite do mundo
  • o chunk candidato não carrega
  • não existe uma superfície sólida, segura e não líquida
  • algum bloco da coluna de queda de 52 blocos acima do destino está obstruído
  • a superfície ou algum bloco da coluna pertence às listas de materiais inseguros configuradas
  • uma integração de proteção bloqueia a aterragem
  • um listener de CannonRTPLocationValidationEvent rejeita o candidato

Após searchTimeoutAttempts pesquisas falhadas, 100 por predefinição, o pré-carregamento pode passar a Exhausted. Os destinos já na fila continuam utilizáveis. Uma ativação só devolve a mensagem de falha configurada quando a fila está vazia; essa mensagem resume os motivos de rejeição comuns. Libertar uma posição da fila após um lançamento repõe o contador de tentativas.

O terreno de destino já deve existir: os chunks candidatos são carregados sem gerar terreno novo. Gere ou explore a área de pesquisa primeiro; num mundo novo, um raio ainda por explorar pode deixar a fila vazia.

Proteção contra ativações repetidas​

O CannonRTP impede um jogador de ativar outro canhão durante uma sequência de lançamento. O bloqueio só termina quando o lançamento acaba e o jogador sai realmente do raio de ativação. Assim, regressar ao assento do canhão durante a recuperação não inicia imediatamente outro lançamento. Depois de um lançamento ser aceite, um tempo de espera por jogador, comum a todos os canhões, bloqueia novos lançamentos durante runtime.launchCooldownSeconds, 30 segundos por predefinição. Este período mantém-se após uma desconexão enquanto o servidor continuar em execução, usa um relógio monotónico e é limpo sempre que o CannonRTP reconstrói os seus canhões: /wc reload, uma atualização do plugin sem reinício, o encerramento do plugin ou qualquer comando que edite canhões (create, place, remove, delete, target, center). Uma reconstrução também cancela os lançamentos ativos, devolve esses jogadores ao assento do respetivo canhão e descarta todos os destinos em fila. Entrar num canhão antes de terminar apresenta a mensagem configurável launchCooldown; use 0 na configuração para desativar esta restrição.