Configuration de CannonRTP
CannonRTP répartit ses paramètres globaux dans plusieurs fichiers de plugins/CannonRTP/, ainsi qu'un fichier de configuration par canon dans plugins/CannonRTP/cannons/.
Organisation des Fichiers
| Fichier | Rôle |
|---|---|
plugins/CannonRTP/config.yml | Indicateurs d'exécution de haut niveau (état du setup, langue, intervalle des particules, priorité des modèles de canon, identifiant de ressource Spigot) |
plugins/CannonRTP/landing.yml | Réglages de la recherche d'atterrissage (taille de la file, tentatives avant timeout, durée de chute lente, listes de matériaux dangereux, comportement en cas d'échec) |
plugins/CannonRTP/sounds.yml | Sons joués durant la séquence de lancement |
plugins/CannonRTP/messages.yml | Tous les messages destinés aux joueurs, préfixes et listes de titres |
plugins/CannonRTP/protection.yml | Bascules d'intégration de protection par plugin |
plugins/CannonRTP/cannons/<id>.yml | Un fichier par canon (chacun pouvant piloter plusieurs placements) |
plugins/CannonRTP/cannons_disabled/ | Dossier de conservation pour les configurations de canons fournies avec des packages de contenu mais actuellement désactivées. Le menu /wc setup déplace les fichiers entre cannons/ et cannons_disabled/ lorsque vous activez ou désactivez un package de contenu. |
plugins/CannonRTP/content_packages/<package>.yml | Métadonnées générées pour chaque package de contenu Nightbreak (version, lien de téléchargement, préfixes utilisés pour trouver ses fichiers). Pas modifié à la main normalement. |
Le plugin fournit par défaut trois exemples de configurations de canon :
example_cannonrtp.yml-- modèle de référence vide, désactivé par défaut. À utiliser comme référence YAML lors de la rédaction manuelle de fichiers de canon.cannonrtp_free_cannon.yml-- activé, aucun placement, pointe vers le modèle FMMcannonrtpgratuit.cannonrtp_premium_cannon.yml-- activé, aucun placement, pointe vers le modèle FMMcannonrtp_premiumpremium.
Aucun d'entre eux n'a cannonLocations renseigné par défaut, donc rien n'apparaît dans le monde tant qu'un administrateur n'exécute pas /wc create ou /wc place.
config.yml
| Clé | Défaut | Comportement |
|---|---|---|
setupDone | false | Indique si la première configuration Nightbreak a été effectuée |
language | english | Fichier de traduction à charger. La Release 1 ne fournit que l'anglais ; la clé existe pour de futurs packs de traduction |
runtime.particleIntervalTicks | 15 | Fréquence d'affichage des particules de canon au repos (minimum 5) |
runtime.cannonModelPriority | [cannonrtp_premium, cannonrtp] | Liste de priorité des noms de modèles FreeMinecraftModels, vérifiée de haut en bas. Le premier modèle trouvé sur le serveur est utilisé pour tout canon qui ne définit pas son propre customModel. Si aucun n'est trouvé, le repli sur les particules orbitales est utilisé. |
runtime.spigotResourceId | "" | Identifiant de ressource Spigot utilisé par le vérificateur de version. Laissez vide pour désactiver. |
landing.yml
| Clé | Défaut | Comportement |
|---|---|---|
preloadedLocationsPerCannon | 10 | Nombre total de destinations sûres que le plugin tente de conserver en file par canon (minimum 1) |
chargedLocationsPerCannon | 1 | Nombre d'emplacements qu'un canon doit détenir avant que son étiquette de statut bascule sur Ready (minimum 1, plafonné à preloadedLocationsPerCannon). Les canons lancent les joueurs dès que la file contient au moins un emplacement -- ce seuil n'affecte que l'étiquette visuelle. |
searchTimeoutAttempts | 100 | Nombre de tentatives de recherche échouées avant qu'un canon soit marqué Exhausted (minimum 10). Les tentatives sont limitées globalement à une par tick (20 par seconde), réparties équitablement entre tous les canons actifs. |
slowFallingSeconds | 60 | Durée maximale de Chute Lente après le largage (minimum 1). L'effet est retiré plus tôt lorsque le joueur atterrit. |
failOpenOnProtectionErrors | false | Si une API de plugin de protection génère une erreur, bloquer l'atterrissage par défaut. Mettez true pour autoriser les atterrissages à continuer lorsqu'un plugin de protection ne peut être interrogé en toute sécurité. |
unsafeGroundMaterials | [LAVA, MAGMA_BLOCK, CAMPFIRE, SOUL_CAMPFIRE, CACTUS, POWDER_SNOW] | Matériaux qui disqualifient une surface d'atterrissage |
unsafeBodyMaterials | [LAVA, WATER, FIRE, SOUL_FIRE, SWEET_BERRY_BUSH, POWDER_SNOW, COBWEB] | Matériaux qui disqualifient l'espace des pieds ou de la tête d'un atterrissage |
Les matériaux sont des noms d'énumération Bukkit Material. Les entrées invalides sont consignées comme avertissements et ignorées.
sounds.yml
| Clé | Défaut | Comportement |
|---|---|---|
levitationStart.sound | BLOCK_BEACON_ACTIVATE | Son joué au début de la phase de recherche |
levitationStart.volume | 1.0 | |
levitationStart.pitch | 1.15 | |
blastOff.sound | ENTITY_GENERIC_EXPLODE | Son joué au début de la phase de tir |
blastOff.volume | 1.0 | |
blastOff.pitch | 0.9 |
Les valeurs de son peuvent être des noms d'énumération Bukkit Sound (par ex. BLOCK_BEACON_ACTIVATE) ou des clés à espace de noms (par ex. minecraft:block.beacon.activate). Les noms de son invalides sont consignés comme avertissements et le son est silencieusement ignoré à cette étape.
messages.yml
Tous les messages prennent en charge les dégradés MagmaCore, les balises MiniMessage et les codes couleur hérités &. Le placeholder $prefix est remplacé par le préfixe configuré.
Pour la liste complète des clés de message, des placeholders et des listes de titres utilisées par la séquence de lancement, consultez la page Messages et Titres.
Champs de Configuration par Canon
Chaque fichier de canon (plugins/CannonRTP/cannons/<id>.yml) stocke ces champs :
| Champ | Défaut | Notes |
|---|---|---|
isEnabled | true (pour les canons nouvellement créés) | Les canons désactivés ne se déclenchent pas et apparaissent comme Disabled |
displayName | CannonRTP (ou le nom passé à la création) | Utilisé dans les messages, la sortie de statut et l'étiquette flottante |
cannonLocations | liste vide | Liste de chaînes sérialisées world,x,y,z,pitch,yaw. Une configuration de canon peut générer plusieurs placements en jeu. Géré par /wc create, /wc place, /wc remove. |
targetWorld | monde actuel au moment de la création | Le ciblage inter-mondes est pris en charge -- définissez ceci pour faire atterrir les joueurs dans un monde différent du canon. Doit être chargé à l'exécution, sinon le canon apparaît comme Invalid. |
searchCenter | null | Si non défini, le plugin rayonne depuis l'emplacement propre du canon (lorsque le canon est dans le monde cible) ou depuis le spawn du monde cible |
triggerRadius | 1.75 | Rayon autour du canon utilisé pour détecter les joueurs proches (minimum 0,5 bloc) |
minSearchRadius | 500 | Distance minimale de recherche d'atterrissage depuis le centre de recherche (minimum 0) |
maxSearchRadius | 5000 | Distance maximale de recherche d'atterrissage (toujours plafonnée à au moins minSearchRadius + 1) |
launchWarmupTicks | 42 | Durée de la phase Searching en ticks (minimum 1) |
verticalBoostTicks | 45 | Durée de la phase Firing en ticks (minimum 0) |
verticalBoostVelocity | 1.35 | Vélocité ascendante appliquée à chaque tick de la phase de tir (minimum 0) |
enableParticles | true | Contrôle l'animation orbitale de particules au repos. Rendue uniquement lorsqu'aucun modèle personnalisé n'est actif et qu'un joueur se trouve dans un rayon de 36 blocs. |
requiredPermission | "" | Verrou de permission supplémentaire optionnel pour ce canon spécifique. Les joueurs avec cannonrtp.use mais sans ce nœud voient le message de non-permission configuré. |
customModel | "" | Nom de modèle FreeMinecraftModels optionnel pour ce canon spécifique. Si vide, le plugin se rabat sur runtime.cannonModelPriority. |
Valeurs par Défaut à la Création d'un Canon
Lorsque vous lancez /wc create <id> :
- l'identifiant du canon est mis en minuscules et les caractères autres que
a-z,0-9,_,-sont remplacés par_ displayNamevautCannonRTPpar défaut, sauf si/wc create <id> <display_name>a été utilisé (les underscores dans<display_name>sont convertis en espaces)- la position actuelle du joueur est ajoutée à
cannonLocations targetWorldest défini sur le monde actuel du joueursearchCentern'est pas défini (se rabat sur la position propre du canon s'il est dans le monde cible, sinon sur le spawn du monde cible)
Après la création, le plugin renvoie le chemin absolu du fichier de configuration afin que vous puissiez modifier manuellement displayName, customModel, requiredPermission, les rayons de recherche et les réglages de lancement.
Intégration FreeMinecraftModels
Lorsqu'un canon résout vers un modèle FreeMinecraftModels valide -- soit via son propre champ customModel, soit via la liste globale runtime.cannonModelPriority -- et que FreeMinecraftModels est installé :
- une entité modèle statique est générée à l'emplacement du canon
- l'étiquette de texte flottante est élevée à 2,0 blocs au-dessus du canon (contre 1,2 sans modèle) afin de ne pas chevaucher le modèle
- l'animation orbitale de particules au repos est supprimée tant qu'un modèle est actif
- pendant un lancement, le canon joue son animation
fire(si elle existe) au début de la phase de recherche ; le joueur est masqué avec Invisibilité durant la phase de recherche pour que l'animation soit lisible
Si FreeMinecraftModels est activé ou désactivé pendant que le serveur tourne, le cache de modèles du canon est invalidé et les visuels sont rafraîchis au tick suivant.
Repli sur Particules au Repos
Lorsqu'aucun modèle n'est actif, le canon rend une paire de particules DUST_COLOR_TRANSITION + FIREWORK en orbite autour du centre du canon. Les couleurs varient selon l'état effectif du canon :
| État | Primaire | Accent |
|---|---|---|
| Ready | orange | doré |
| Searching (charging / maintaining) | orange chaud | doré |
| Exhausted | rouge | rouge chaud |
| Invalid configuration | rouge profond | rouge |
Les particules au repos ne sont rendues que lorsqu'un joueur se trouve dans un rayon de 36 blocs du canon.
Étiquette de Statut Flottante
Chaque canon génère un TextDisplay en panneau d'affichage au-dessus de sa base, affichant le nom d'affichage et le statut actuel (Ready, Charging, Maintaining, Exhausted, Disabled ou Invalid). L'étiquette est non persistante (elle n'est jamais enregistrée dans les données de chunk) et est recréée automatiquement au rechargement du chunk.
Comportement de Validation à l'Exécution
CannonRTP rejette les emplacements d'atterrissage candidats lorsque l'une de ces vérifications échoue :
- le monde cible n'est pas chargé
- le centre de recherche est invalide
- l'échantillon aléatoire tombe hors des limites du monde
- le chunk candidat ne parvient pas à se charger
- aucune surface solide non liquide sûre n'est trouvée
- l'espace des pieds ou de la tête est obstrué
- le terrain ou les blocs corporels correspondent aux listes de matériaux dangereux configurées
- une intégration de protection bloque l'atterrissage
- un listener
CannonRTPLocationValidationEventrejette le candidat
Si un canon épuise searchTimeoutAttempts (100 par défaut) sans remplir sa réserve, il devient Exhausted et commence à renvoyer le message d'échec configuré au lieu de lancer les joueurs. Le message d'échec inclut un résumé des raisons de rejet les plus courantes. Le canon réinitialise son compteur de timeout chaque fois qu'un emplacement de la file se libère (par ex. après un lancement).
Garde d'Interaction
CannonRTP empêche un joueur de déclencher un canon alors qu'il est déjà dans une séquence de lancement active. Une fois le lancement en cours terminé (atterrissage ou déconnexion), le joueur peut à nouveau utiliser un canon. Il n'existe aucun temps de recharge supplémentaire.