Integrações de proteção do CannonRTP
O CannonRTP pode verificar destinos de aterragem candidatos em vários plugins de proteção antes de os colocar na fila.
Integrações suportadas
São suportados os seguintes plugins de proteção:
- WorldGuard (também precisa do WorldEdit, que já é um requisito do WorldGuard)
- Towny
- Lands
- GriefPrevention
- HuskTowns
- HuskClaims
Todos estão declarados como softdepend no plugin.yml, juntamente com WorldEdit e FreeMinecraftModels. O CannonRTP funciona sem nenhum deles instalado; os plugins ausentes são ignorados sem aviso.
Funcionamento das verificações de proteção
- Os adaptadores são consultados por uma ordem fixa: WorldGuard, Towny, Lands, GriefPrevention, HuskTowns, HuskClaims.
- Um adaptador só é registado quando (a) a sua opção
enabledestá atrueemprotection.ymlE (b) o respetivo plugin está presente e carregado no servidor. - O primeiro adaptador que bloqueia um local termina a verificação e fornece o motivo apresentado.
- Se uma API de proteção lançar um erro, o CannonRTP bloqueia a aterragem por predefinição. Este comportamento é controlado por
failOpenOnProtectionErrorsemlanding.yml. - Se o adaptador estiver ativado e o plugin presente, mas o adaptador não conseguir carregar, por exemplo devido a uma classe em falta ou a uma versão de API incompatível, o CannonRTP regista
Failed to hook into <plugin>e mantém um substituto para esse plugin na cadeia de verificações, para que a falha não seja tratada como se o plugin não estivesse instalado.failOpenOnProtectionErrorsdecide o que o substituto faz:false(predefinição): o substituto bloqueia todos os locais com o motivoits adapter failed to initialize (...)e os canhões deixam de pesquisar. Cada canhão é marcado como Exhausted, com terreno protegido como motivo, em vez de analisar locais que não podem passar. Corrija a integração, ou desative-a emprotection.yml, e depois execute/wc reload.true: o substituto permite todos os locais e os outros adaptadores continuam a ser executados.
A opção global que controla as falhas das APIs é:
failOpenOnProtectionErrors(emlanding.yml)
Predefinição: false
Com true, o CannonRTP permite continuar as aterragens quando não consegue consultar um plugin de proteção com segurança. Com false, um erro de consulta bloqueia esse local com o motivo its API could not be queried safely. Os erros de consulta são registados como avisos com qualquer uma das definições.
Comando /wc probe
Um administrador pode colocar-se num local e executar /wc probe para verificar se esse local passa todas as verificações de proteção ativadas. O resultado identifica o plugin que o bloqueou e o motivo, ou confirma que os adaptadores o permitem. Este comando não valida o terreno, a coluna de queda, o raio de pesquisa nem o evento de validação de localizações da API.
Ficheiro de configuração
Todas as opções de proteção estão em plugins/CannonRTP/protection.yml. As chaves partem do nível principal, por exemplo worldGuard.enabled, e não protection.worldGuard.enabled.
Comportamento por plugin
WorldGuard
Chaves de configuração:
worldGuard.enabledworldGuard.allowGlobalRegionOnlyworldGuard.allowBuildAllowedRegionsworldGuard.allowPassthroughRegions
Comportamento predefinido:
- ativado
- locais abrangidos apenas por
__global__são permitidos - regiões com
build=ALLOWsão permitidas - regiões com
passthrough=ALLOWsão permitidas - outras regiões protegidas que abranjam o local são bloqueadas
Towny
Chaves de configuração:
towny.enabledtowny.allowWildernesstowny.allowNationZonestowny.allowClaimedTownBlocks
Comportamento predefinido:
- ativado
- mundos onde o Towny não está ativo são sempre permitidos
- áreas selvagens são permitidas
- zonas de nações são bloqueadas
- blocos reclamados por cidades são bloqueados
Lands
Chaves de configuração:
lands.enabledlands.allowUnclaimedAreaslands.allowClaimedAreas
Comportamento predefinido:
- ativado
- áreas não reclamadas são permitidas
- áreas reclamadas são bloqueadas
GriefPrevention
Chaves de configuração:
griefPrevention.enabledgriefPrevention.allowWildernessgriefPrevention.allowAdminClaimsgriefPrevention.allowPlayerClaims
Comportamento predefinido:
- ativado
- áreas selvagens são permitidas
- terrenos reclamados por administradores são bloqueados
- terrenos reclamados por jogadores são bloqueados
HuskTowns
Chaves de configuração:
huskTowns.enabledhuskTowns.allowWildernesshuskTowns.allowAdminClaimshuskTowns.allowRegularClaimshuskTowns.allowFarmClaimshuskTowns.allowPlotClaims
Comportamento predefinido:
- ativado
- áreas selvagens são permitidas
- terrenos reclamados por administradores são bloqueados
- terrenos normais reclamados por cidades são bloqueados
- terrenos agrícolas reclamados são bloqueados
- lotes reclamados são bloqueados
HuskClaims
Chaves de configuração:
huskClaims.enabledhuskClaims.allowWildernesshuskClaims.allowAdminClaimshuskClaims.allowPlayerClaims
Comportamento predefinido:
- ativado
- áreas selvagens são permitidas
- terrenos reclamados por administradores são bloqueados
- terrenos reclamados por jogadores são bloqueados
As restantes validações continuam a aplicar-se
As integrações de proteção são apenas uma parte da validação de aterragem. Um local pode continuar a ser rejeitado porque:
- fica fora do limite do mundo
- não tem uma superfície segura
- o espaço para os pés ou a cabeça está obstruído
- o terreno contém materiais das listas de materiais inseguros configuradas
- um listener de
CannonRTPLocationValidationEvento rejeita (consulte Eventos da API)
Comunicação de falhas
Quando um canhão fica esgotado (não encontra destinos válidos suficientes antes de esgotar searchTimeoutAttempts, ou para antes disso porque uma integração de proteção não conseguiu carregar), o estado e as mensagens aos jogadores enumeram as categorias de rejeição encontradas nessa janela de pesquisa. Os terrenos protegidos aparecem mesmo que apenas uma amostra tenha sido rejeitada por esse motivo. O texto não inclui contagens nem ordena as categorias por frequência, apesar de expressões como «most samples» na mensagem predefinida. Use-o para identificar verificações a investigar, não para medir qual rejeitou mais locais.