Configuration de CannonRTP
CannonRTP utilise un fichier de configuration global plus un fichier de configuration par canon.
Structure des fichiers
- Configuration globale :
plugins/CannonRTP/config.yml - Configurations par canon :
plugins/CannonRTP/custom/fun_rtps/<id>.yml
Le plugin inclut également un paquet de canon d’exemple nommé example_world_cannon. Il est désactivé par défaut.
Structure de la configuration globale
La configuration principale est organisée sous :
runtime.*landing.*messages.*protection.*
Paramètres d’exécution
| Clé | Par défaut | Comportement |
|---|---|---|
runtime.scanIntervalTicks | 2 | Fréquence à laquelle les canons vérifient les joueurs à proximité (minimum 2) |
runtime.particleIntervalTicks | 15 | Fréquence de rendu des particules de canon inactif (minimum 5) |
Paramètres de recherche d’atterrissage
| Clé | Par défaut | Comportement |
|---|---|---|
landing.searchAttemptsPerTick | 2 | Tentatives de recherche par canon par tick pendant le préchargement (minimum 1) |
landing.preloadedLocationsPerCannon | 10 | Nombre total de destinations sûres que le plugin essaie de maintenir en file d’attente par canon (minimum 1) |
landing.chargedLocationsPerCannon | 5 | Combien d’emplacements un canon doit avoir avant d’être considéré chargé et prêt au lancement (minimum 1, plafonné à preloadedLocationsPerCannon) |
landing.searchTimeoutSeconds | 1000 | Temps en secondes avant qu’un canon encore en recherche soit marqué comme épuisé (minimum 10) |
landing.slowFallingSeconds | 60 | Durée de la Chute Lente après l’arrivée en secondes ; l’effet est retiré prématurément quand le joueur atterrit (minimum 1) |
landing.failOpenOnProtectionErrors | false | Si une API de protection génère une erreur, l’atterrissage est bloqué par défaut |
Sons d’atterrissage
Les clés de son suivantes sont configurables :
landing.sounds.levitationStart.sound(par défaut :BLOCK_BEACON_ACTIVATE)landing.sounds.levitationStart.volume(par défaut :1.0)landing.sounds.levitationStart.pitch(par défaut :1.15)landing.sounds.blastOff.sound(par défaut :ENTITY_GENERIC_EXPLODE)landing.sounds.blastOff.volume(par défaut :1.0)landing.sounds.blastOff.pitch(par défaut :0.9)
Les valeurs de son utilisent les noms de registre Sound de Bukkit ou des clés avec espace de noms. Les noms de son invalides sont enregistrés comme avertissements et le son est silencieusement ignoré.
Listes de matériaux dangereux
CannonRTP rejette les emplacements d’atterrissage candidats basé sur deux listes de matériaux :
landing.unsafeGroundMaterials-- blocs sur lesquels on ne devrait jamais se tenirlanding.unsafeBodyMaterials-- blocs qui ne devraient jamais occuper l’espace des pieds ou de la tête
Matériaux de sol dangereux par défaut :
LAVAMAGMA_BLOCKCAMPFIRESOUL_CAMPFIRECACTUSPOWDER_SNOW
Matériaux de corps dangereux par défaut :
LAVAWATERFIRESOUL_FIRESWEET_BERRY_BUSHPOWDER_SNOWCOBWEB
Paramètres de messages
Tous les messages supportent les dégradés MagmaCore, les balises MiniMessage et les codes de couleur hérités. Le marqueur $prefix est remplacé par la valeur de préfixe configurée.
Le plugin expose les clés de messages sous :
| Clé | Marqueurs | Description |
|---|---|---|
messages.prefix | -- | Préfixe utilisé par tous les messages CannonRTP |
messages.helpHeader | $prefix | En-tête affiché par /cannonrtp |
messages.createdCannon | $prefix, $cannon, $id, $path | Envoyé après la création d’un canon |
messages.deletedCannon | $prefix, $cannon | Envoyé après la suppression d’un canon |
messages.movedCannon | $prefix, $cannon | Envoyé après le déplacement d’un canon |
messages.targetWorldUpdated | $prefix, $cannon, $world | Envoyé après le changement du monde cible d’un canon |
messages.searchCenterUpdated | $prefix, $cannon | Envoyé après le changement du centre de recherche d’un canon |
messages.reload | $prefix, $count | Envoyé après le rechargement |
messages.noPermission | $prefix, $cannon | Envoyé quand un joueur peut voir un canon mais ne peut pas l’utiliser |
messages.cannonDisabled | $prefix, $cannon | Envoyé quand un joueur entre dans un canon désactivé |
messages.queueCalibration | $prefix, $cannon, $queued, $target, $seconds | Envoyé pendant qu’un canon précharge encore |
messages.noValidLocationYet | $prefix, $cannon | Envoyé quand aucun emplacement sûr n’a encore été trouvé |
messages.noValidLocationFound | $prefix, $cannon, $reason | Envoyé quand CannonRTP abandonne après expiration du délai |
messages.invalidConfiguration | $prefix, $cannon, $reason | Envoyé quand une erreur de configuration est détectée |
messages.statusLine | $prefix, $cannon, $status, $queued, $target, $reason | Format de ligne utilisé par /wc status et /wc list |
messages.probeAllowed | $prefix | Envoyé par /wc probe quand l’emplacement est valide |
messages.probeBlocked | $prefix, $plugin, $reason | Envoyé par /wc probe quand l’emplacement est bloqué |
messages.unknownCommand | $prefix | Envoyé quand un admin utilise une sous-commande non reconnue |
Messages de titre
| Clé | Marqueurs | Description |
|---|---|---|
messages.titles.launchQueuedTitle | $cannon | Titre affiché quand un lancement commence |
messages.titles.launchQueuedSubtitle | $cannon | Sous-titre affiché quand un lancement commence |
messages.titles.destinationPreviewTitle | $x, $y, $z | Titre affiché pendant le compte à rebours de préchauffage |
messages.titles.destinationPreviewSubtitle | $x, $y, $z | Sous-titre affiché pendant le compte à rebours de préchauffage |
messages.titles.destinationConfirmedTitle | $x, $y, $z, $world | Titre affiché juste avant la téléportation |
messages.titles.destinationConfirmedSubtitle | $x, $y, $z, $world | Sous-titre affiché juste avant la téléportation |
messages.titles.arrivalSubtitles | -- | Liste de sous-titres ; un est choisi au hasard après chaque lancement |
L’aperçu des coordonnées pendant le préchauffage ne montre pas la destination réelle -- il affiche des coordonnées aléatoires dans la zone de recherche du canon comme effet visuel. La vraie destination n’est révélée que dans le titre confirmé.
Champs de configuration par canon
Chaque fichier de canon (plugins/CannonRTP/custom/fun_rtps/<id>.yml) stocke ces champs :
| Champ | Par défaut | Notes |
|---|---|---|
isEnabled | true pour les canons nouvellement créés | Les canons désactivés ne se déclenchent pas |
displayName | CannonRTP (ou le nom fourni à la création) | Utilisé dans les messages, la sortie de statut et l’étiquette flottante |
cannonLocation | Requis | Où le déclencheur du canon existe |
targetWorld | Monde actuel au moment de la création | Doit être chargé à l’exécution |
searchCenter | null (revient au spawn du monde cible) | Si non défini, le plugin utilise l’emplacement de spawn du monde cible |
triggerRadius | 1.75 | Rayon utilisé pour détecter les joueurs à proximité (minimum 0.5) |
minSearchRadius | 500 | Distance minimale de recherche d’atterrissage depuis le centre de recherche (minimum 0) |
maxSearchRadius | 5000 | Distance maximale de recherche d’atterrissage depuis le centre de recherche (toujours au moins minSearchRadius + 1) |
launchWarmupSeconds | 6 | Temps de lévitation/compte à rebours avant le lancement (minimum 0 ; si 0, le lancement est instantané) |
verticalBoostTicks | 45 | Ticks de vélocité ascendante avant la téléportation (minimum 0) |
verticalBoostVelocity | 1.35 | Vélocité ascendante appliquée pendant le lancement (minimum 0) |
enableParticles | true | Contrôle l’animation des particules du canon inactif |
requiredPermission | vide | Porte de permission supplémentaire optionnelle pour ce canon spécifique |
customModel | vide | Nom optionnel du modèle FreeMinecraftModels à afficher à l’emplacement du canon |
Valeurs par défaut à la création d’un canon
Quand vous exécutez /wc create <id> :
- l’ID du canon est mis en minuscules et les caractères autres que
a-z,0-9,_et-sont remplacés par_ - le nom d’affichage est
CannonRTPpar défaut si non spécifié, ou le nom fourni avec les underscores convertis en espaces cannonLocationest défini à votre emplacement actueltargetWorldest défini à votre monde actuelsearchCentern’est pas défini (revient au spawn du monde cible)
Après la création, le plugin affiche le chemin du fichier de configuration et suggère quels champs modifier manuellement : displayName, customModel, requiredPermission, launchWarmupSeconds, verticalBoostTicks et verticalBoostVelocity.
Intégration FreeMinecraftModels
Si une configuration de canon définit customModel avec un nom de modèle FreeMinecraftModels valide et que FreeMinecraftModels est installé :
- Une entité de modèle statique est générée à l’emplacement du canon
- L’étiquette de texte flottante est relevée pour éviter le chevauchement avec le modèle
- Si un modèle nommé
fireexiste aussi, une animation de lancement alternative est utilisée : le joueur est téléporté au siège du canon et maintenu en place pendant une séquence de charge de 3 secondes (60 ticks) avant le décollage avec un effet de particules d’explosion
Comportement de validation à l’exécution
CannonRTP rejette les emplacements d’atterrissage candidats quand 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 en dehors de la bordure du monde
- aucune surface solide sûre n’est trouvée
- l’espace des pieds ou de la tête est bloqué
- le terrain ou les blocs du corps correspondent aux listes de matériaux dangereux configurées
- une intégration de protection bloque l’atterrissage
Si un canon ne peut pas trouver assez d’emplacements valides avant landing.searchTimeoutSeconds, il devient épuisé et commence à retourner 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.
La fenêtre de recherche du canon redémarre quand il doit remplir les emplacements consommés (ex. après qu’un joueur se lance et qu’un emplacement se libère).
Cooldown d’interaction
CannonRTP applique un cooldown de 3 secondes entre les interactions par joueur. Ce cooldown s’applique que l’interaction soit un lancement réussi, un refus de permission ou toute autre vérification de canon. Le cooldown n’est pas configurable.