API de CannonRTP
CannonRTP expose trois événements Bukkit permettant à d'autres plugins de s'y connecter. Tous les événements résident dans le package com.magmaguy.cannonrtp.api et sont déclenchés sur le thread principal du serveur.
Pour écouter, enregistrez un @EventHandler Bukkit normal -- il n'y a pas d'étape d'enregistrement séparée.
CannonRTPLaunchEvent
Déclenché au moment où un joueur est sur le point de commencer une séquence de lancement de canon, avant que tout visuel ou effet ne soit appliqué. Annulable.
| Propriété | Type | Description |
|---|---|---|
player | Player | Le joueur qui a déclenché le canon |
cannonId | String | L'identifiant de configuration (nom de fichier sans .yml) du canon |
cannonDisplayName | String | Le champ displayName du canon |
cannonLocation | Location | Le placement exact qui a été déclenché |
destination | Location | L'emplacement d'atterrissage sûr pré-validé choisi pour ce lancement |
Annuler l'événement interrompt entièrement le lancement : le joueur reste sur place, aucun effet n'est appliqué et la destination est remise en tête de la file du canon pour être réutilisée lors du prochain lancement. Utile pour les listes noires basées sur les régions, les plugins de temps de recharge, les verrous économiques ou les vérifications de régions PvP.
@EventHandler
public void onLaunch(CannonRTPLaunchEvent event) {
if (event.getPlayer().getWorld().getName().equals("event_world")) {
event.setCancelled(true);
}
}
CannonRTPLocationValidationEvent
Déclenché pour chaque emplacement d'atterrissage candidat lorsque CannonRTP le valide pendant la recherche de préchargement. Déclenché uniquement après que toutes les vérifications intégrées (limites du monde, surface, matériaux dangereux, intégrations de protection) soient passées.
| Propriété | Type | Description |
|---|---|---|
cannonId | String | L'identifiant de configuration du canon effectuant la recherche |
cannonDisplayName | String | Le champ displayName du canon |
candidate | Location | L'emplacement d'atterrissage candidat considéré |
Cet événement n'est pas annulable au sens Bukkit. Pour rejeter un candidat, appelez :
event.setRejected("inside arena spawn protection");
CannonRTP rejettera alors le candidat comme s'il avait échoué à une vérification interne et poursuivra la recherche. Les listeners peuvent implémenter des règles de région personnalisées au-delà des adaptateurs de protection intégrés.
Remarque : déclenché sur le thread principal pendant les tentatives de préchargement (une par tick globalement, en tourniquet entre les canons actifs). Gardez le gestionnaire rapide.
CannonRTPLandingEvent
Déclenché après qu'un joueur ait été téléporté à la destination et que la séquence de lancement soit entièrement terminée (la phase LANDING s'est exécutée, Chute Lente a été retirée et l'explosion d'impact a été jouée). Non annulable -- utilisez CannonRTPLaunchEvent pour rejeter un lancement avant qu'il ne se produise.
| Propriété | Type | Description |
|---|---|---|
player | Player | Le joueur qui vient d'atterrir |
cannonId | String | L'identifiant de configuration du canon qui l'a lancé |
cannonDisplayName | String | Le champ displayName du canon |
destination | Location | Une copie de la destination où il a été envoyé |
Utile pour attribuer des récompenses à la première arrivée, déclencher des effets de suivi, accorder des permissions de région, diffuser les arrivées ou faire de l'analytique.
Threading et Cycle de Vie
- Les trois événements sont dispatchés sur le thread principal.
CannonRTPLocationValidationEventest dispatché pendant le tick global de préchargement (une tentative par tick de serveur, en tourniquet entre les canons actifs), donc un traitement lourd dans les listeners ralentira visiblement la vitesse à laquelle les canons chargent leurs files.CannonRTPLaunchEventest dispatché immédiatement avant la construction d'uneLaunchSequence, donc tout état que vous modifiez (effets de potion, inventaire, mode de jeu) prend effet avant le début de la phase de recherche.CannonRTPLandingEventest dispatché une fois par lancement, au tick de la phase LANDING, après l'explosion d'impact.
Travailler avec cannonId
cannonId est le même identifiant utilisé par chaque commande administrateur (/wc place, /wc target, etc.) et correspond au nom de fichier de la configuration du canon sans .yml. Notez qu'une seule configuration de canon peut piloter plusieurs placements en jeu ; tous partagent le même cannonId et cannonDisplayName. Si vous avez besoin du placement exact, utilisez cannonLocation depuis CannonRTPLaunchEvent.