API développeur d'Extractioncraft
Extractioncraft expose une classe de requêtes et des événements Bukkit sous com.magmaguy.extractioncraft.api, afin que d'autres plugins puissent suivre les parties et y réagir. Tous les événements sont des événements Bukkit synchrones standards.
Requêtes
| Méthode | Renvoie |
|---|---|
ExtractionCraftAPI.getMatch(Player player) | L'ExtractionMatch dans lequel se trouve le joueur, en tant que joueur ou spectateur, ou null |
ExtractionCraftAPI.getMatches() | Une copie de toutes les parties créées et pas encore détruites |
ExtractionMatch hérite de la classe de partie de la copie de MagmaCore intégrée au jar d'Extractioncraft, déplacée vers com.magmaguy.extractioncraft.magmacore.match.Match. Ses méthodes publiques incluent getPhase(), getMatchPlayers(), getActivePlayers(), admit(players), admitSpectator(player), leave(player, reason), start() et end(outcome). Extractioncraft ne possède aucune commande pour rejoindre une partie ou la regarder en spectateur : admit et admitSpectator permettent donc à un autre plugin d'ajouter des joueurs ou des spectateurs à une partie. Les joueurs ne peuvent être admis que pendant l'attente de la partie, dans la limite de son maxPlayers ; les spectateurs exigent que le pack de contenu définisse spectatable: true.
Événements
| Événement | Annulable | Données exposées | Déclenchement |
|---|---|---|---|
ExtractionMatchJoinEvent | Oui | ExtractionMatch match, Player player | Avant l'admission d'un joueur ou d'un spectateur, une fois par joueur |
ExtractionMatchStartEvent | Oui | ExtractionMatch match | Lorsque /exc start passe la vérification du nombre minimal de joueurs, avant le compte à rebours |
ExtractionMatchLeaveEvent | Non | ExtractionMatch match, Player player, ExtractionLeaveReason reason | Pendant le départ d'un participant |
ExtractionMatchEndEvent | Non | ExtractionMatch match, ExtractionMatchOutcome outcome | À la fin de la partie |
Annuler ExtractionMatchJoinEvent refuse le joueur ainsi que tous les joueurs admis en même temps que lui. S'il refuse le créateur d'une partie tout juste générée, la partie et son monde sont détruits et le créateur reçoit The generated match could not be started.
Annuler ExtractionMatchStartEvent maintient la partie en attente. Les joueurs peuvent exécuter /exc start de nouveau.
ExtractionMatchLeaveEvent se déclenche après qu'Extractioncraft a lié à l'âme ou vidé l'inventaire du joueur selon le motif de départ, alors que le joueur est encore participant et se trouve encore dans le monde de la partie. Il est téléporté hors de ce monde ensuite.
ExtractionMatchEndEvent se déclenche avant le retrait des joueurs encore présents. Ceux-ci partent ensuite avec MATCH_ENDED. Un arrêt du serveur ou un rechargement du plugin détruit les parties sans les terminer : aucun événement de fin n'est déclenché et les joueurs partent avec SHUTDOWN.
Motifs de départ
ExtractionLeaveReason | Signification | Objets une fois la partie lancée |
|---|---|---|
QUIT | Départ volontaire, par exemple avec /exc quit | Perdus avec la configuration par défaut |
DISCONNECT | Déconnexion du serveur | Perdus avec la configuration par défaut |
DIED | Dégâts mortels subis | Perdus avec la configuration par défaut |
EXTRACTED | Extraction à un point d'extraction | Conservés et liés à l'âme |
MATCH_ENDED | Encore présent à la fin de la partie, y compris à l'expiration de la minuterie | Perdus avec la configuration par défaut |
SHUTDOWN | Arrêt du serveur ou du plugin pendant la partie | Conservés et liés à l'âme |
Partir avant le lancement de la partie ne touche jamais à l'inventaire. Voir Mort et perte d'objets.
Issues de partie
ExtractionMatchOutcome | Utilisation par Extractioncraft |
|---|---|
DEFEAT | La minuterie de 15 minutes a expiré, ou le dernier joueur actif a quitté la partie, y compris par extraction |
NEUTRAL | Le nombre de joueurs est passé sous minPlayers pendant le compte à rebours |
VICTORY | Jamais défini par Extractioncraft lui-même ; seul un plugin appelant end(...) peut le produire |
Exemple d'utilisation
import com.magmaguy.extractioncraft.api.ExtractionLeaveReason;
import com.magmaguy.extractioncraft.api.ExtractionMatchLeaveEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class MyExtractionListener implements Listener {
@EventHandler
public void onLeave(ExtractionMatchLeaveEvent event) {
if (event.getReason() == ExtractionLeaveReason.EXTRACTED) {
// Reward the player for a successful extraction
}
}
}