Aller au contenu principal

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éTypeDescription
playerPlayerLe joueur qui a déclenché le canon
cannonIdStringL'identifiant de configuration (nom de fichier sans .yml) du canon
cannonDisplayNameStringLe champ displayName du canon
cannonLocationLocationLe placement exact qui a été déclenché
destinationLocationL'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éTypeDescription
cannonIdStringL'identifiant de configuration du canon effectuant la recherche
cannonDisplayNameStringLe champ displayName du canon
candidateLocationL'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éTypeDescription
playerPlayerLe joueur qui vient d'atterrir
cannonIdStringL'identifiant de configuration du canon qui l'a lancé
cannonDisplayNameStringLe champ displayName du canon
destinationLocationUne 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.
  • CannonRTPLocationValidationEvent est 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.
  • CannonRTPLaunchEvent est dispatché immédiatement avant la construction d'une LaunchSequence, donc tout état que vous modifiez (effets de potion, inventaire, mode de jeu) prend effet avant le début de la phase de recherche.
  • CannonRTPLandingEvent est 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.