Aller au contenu principal

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éthodeRenvoie
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énementAnnulableDonnées exposéesDéclenchement
ExtractionMatchJoinEventOuiExtractionMatch match, Player playerAvant l'admission d'un joueur ou d'un spectateur, une fois par joueur
ExtractionMatchStartEventOuiExtractionMatch matchLorsque /exc start passe la vérification du nombre minimal de joueurs, avant le compte à rebours
ExtractionMatchLeaveEventNonExtractionMatch match, Player player, ExtractionLeaveReason reasonPendant le départ d'un participant
ExtractionMatchEndEventNonExtractionMatch 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​

ExtractionLeaveReasonSignificationObjets une fois la partie lancée
QUITDépart volontaire, par exemple avec /exc quitPerdus avec la configuration par défaut
DISCONNECTDéconnexion du serveurPerdus avec la configuration par défaut
DIEDDégâts mortels subisPerdus avec la configuration par défaut
EXTRACTEDExtraction à un point d'extractionConservés et liés à l'âme
MATCH_ENDEDEncore présent à la fin de la partie, y compris à l'expiration de la minuteriePerdus avec la configuration par défaut
SHUTDOWNArrêt du serveur ou du plugin pendant la partieConservé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​

ExtractionMatchOutcomeUtilisation par Extractioncraft
DEFEATLa minuterie de 15 minutes a expiré, ou le dernier joueur actif a quitté la partie, y compris par extraction
NEUTRALLe nombre de joueurs est passé sous minPlayers pendant le compte à rebours
VICTORYJamais 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
}
}
}