Intégrations de protection de CannonRTP
CannonRTP peut vérifier les emplacements d'atterrissage candidats auprès de plusieurs plugins de protection avant de les mettre en file.
Intégrations prises en charge
Les plugins de protection pris en charge sont :
- WorldGuard, qui nécessite également WorldEdit
- Towny
- Lands
- GriefPrevention
- HuskTowns
- HuskClaims
Ils sont tous déclarés en softdepend dans plugin.yml, aux côtés de WorldEdit et FreeMinecraftModels. CannonRTP fonctionne même si aucun d'eux n'est installé ; les plugins absents sont ignorés silencieusement.
Fonctionnement des vérifications de protection
- Les adaptateurs sont interrogés dans un ordre fixe : WorldGuard, Towny, Lands, GriefPrevention, HuskTowns, puis HuskClaims.
- Un adaptateur de protection n'est enregistré que si son réglage
enabledvauttruedansprotection.ymlet si le plugin est présent et chargé sur le serveur. - Le premier adaptateur qui bloque un emplacement arrête la vérification et fournit la raison signalée.
- Si une API de protection provoque une erreur, CannonRTP bloque l'atterrissage par défaut. Ce comportement est contrôlé par
failOpenOnProtectionErrorsdanslanding.yml. - Si un adaptateur est activé et son plugin présent, mais que l'adaptateur ne parvient pas à se charger, par exemple à cause d'une classe manquante ou d'une version d'API incompatible, CannonRTP consigne
Failed to hook into <plugin>et conserve un substitut pour ce plugin dans la chaîne de vérification : l'échec n'est donc pas traité comme si le plugin n'était pas installé.failOpenOnProtectionErrorsdétermine le comportement du substitut :false(par défaut) : le substitut bloque tous les emplacements avec le motifits adapter failed to initialize (...), et les canons cessent leur recherche. Chaque canon est marqué Exhausted avec les terrains protégés comme motif, au lieu d'examiner des emplacements qui ne peuvent pas passer. Corrigez l'intégration, ou désactivez-la dansprotection.yml, puis exécutez/wc reload.true: le substitut autorise tous les emplacements, et les autres adaptateurs s'exécutent toujours.
Le réglage global de sécurité en cas d'échec d'API est :
failOpenOnProtectionErrors, danslanding.yml
Valeur par défaut : false
Avec la valeur true, CannonRTP autorise la poursuite des atterrissages lorsqu'il ne peut pas interroger correctement un plugin de protection. Avec false, une erreur de requête bloque cet emplacement avec le motif its API could not be queried safely. Les erreurs de requête sont consignées comme avertissements quel que soit le réglage.
Commande /wc probe
Les administrateurs peuvent se placer à n'importe quel endroit et exécuter /wc probe pour vérifier si cet emplacement passe toutes les protections activées. Le résultat indique quel plugin bloque l'emplacement et pourquoi, ou confirme que les adaptateurs de protection l'autorisent. Cette commande ne vérifie ni le terrain, ni la colonne de largage, ni le rayon de recherche, et ne déclenche pas l'événement de validation de localisation de l'API.
Fichier de configuration
Tous les réglages de protection se trouvent dans plugins/CannonRTP/protection.yml. Les clés partent de la racine du fichier : par exemple worldGuard.enabled, et non protection.worldGuard.enabled.
Comportement par plugin
WorldGuard
Clés de configuration :
worldGuard.enabledworldGuard.allowGlobalRegionOnlyworldGuard.allowBuildAllowedRegionsworldGuard.allowPassthroughRegions
Comportement par défaut :
- intégration activée
- emplacements couverts uniquement par
__global__autorisés - régions avec
build=ALLOWautorisées - régions avec
passthrough=ALLOWautorisées - autres régions protégées correspondantes bloquées
Towny
Clés de configuration :
towny.enabledtowny.allowWildernesstowny.allowNationZonestowny.allowClaimedTownBlocks
Comportement par défaut :
- intégration activée
- mondes où Towny n'est pas activé toujours autorisés
- zones sauvages autorisées
- zones de nation bloquées
- terrains revendiqués par une ville bloqués
Lands
Clés de configuration :
lands.enabledlands.allowUnclaimedAreaslands.allowClaimedAreas
Comportement par défaut :
- intégration activée
- zones non revendiquées autorisées
- zones revendiquées bloquées
GriefPrevention
Clés de configuration :
griefPrevention.enabledgriefPrevention.allowWildernessgriefPrevention.allowAdminClaimsgriefPrevention.allowPlayerClaims
Comportement par défaut :
- intégration activée
- zones sauvages autorisées
- territoires d'administration bloqués
- territoires de joueurs bloqués
HuskTowns
Clés de configuration :
huskTowns.enabledhuskTowns.allowWildernesshuskTowns.allowAdminClaimshuskTowns.allowRegularClaimshuskTowns.allowFarmClaimshuskTowns.allowPlotClaims
Comportement par défaut :
- intégration activée
- zones sauvages autorisées
- territoires d'administration bloqués
- territoires de ville ordinaires bloqués
- territoires agricoles bloqués
- parcelles revendiquées bloquées
HuskClaims
Clés de configuration :
huskClaims.enabledhuskClaims.allowWildernesshuskClaims.allowAdminClaimshuskClaims.allowPlayerClaims
Comportement par défaut :
- intégration activée
- zones sauvages autorisées
- territoires d'administration bloqués
- territoires de joueurs bloqués
Les autres validations restent applicables
Les intégrations de protection ne constituent qu'une partie de la validation de l'atterrissage. Un emplacement peut encore être refusé pour les raisons suivantes :
- il se trouve hors de la bordure du monde
- aucune surface sûre n'existe
- l'espace destiné aux pieds ou à la tête est obstrué
- le terrain correspond aux listes configurées de matériaux dangereux
- un écouteur de
CannonRTPLocationValidationEventle rejette ; voir Événements de l'API
Signalement des échecs
Lorsqu'un canon est épuisé, parce qu'il atteint searchTimeoutAttempts sans trouver assez d'emplacements valides ou parce qu'il s'arrête plus tôt après l'échec du chargement d'une intégration de protection, le statut et les messages aux joueurs listent les catégories de rejet rencontrées pendant cette période de recherche. Les terrains protégés apparaissent même si un seul candidat a été refusé pour cette raison. Le texte ne donne ni nombres ni classement par fréquence, malgré des expressions comme « most samples » dans le message par défaut. Utilisez-le pour identifier les vérifications à examiner, pas pour mesurer laquelle a rejeté le plus d'emplacements.