Saltar al contenido principal

API para desarrolladores de Extractioncraft

Extractioncraft expone una clase de consulta y eventos de Bukkit en com.magmaguy.extractioncraft.api para que otros plugins puedan seguir las partidas y reaccionar a ellas. Todos son eventos Bukkit síncronos estándar.

Consultas​

MétodoDevuelve
ExtractionCraftAPI.getMatch(Player player)La ExtractionMatch en la que está el jugador, como jugador o como espectador, o null
ExtractionCraftAPI.getMatches()Una copia de todas las partidas que se han creado y aún no se han destruido

ExtractionMatch extiende la clase de partida de la copia de MagmaCore incluida en el JAR de Extractioncraft, reubicada en com.magmaguy.extractioncraft.magmacore.match.Match. Entre sus métodos públicos están getPhase(), getMatchPlayers(), getActivePlayers(), admit(players), admitSpectator(player), leave(player, reason), start() y end(outcome). Extractioncraft no tiene comandos para unirse ni para ser espectador, así que admit y admitSpectator son la forma en que otro plugin introduce más jugadores o espectadores en una partida. Solo se pueden admitir jugadores mientras la partida está en espera, hasta su maxPlayers; para admitir espectadores, el paquete de contenido debe establecer spectatable: true.

Eventos​

EventoCancelableDatos expuestosCuándo se emite
ExtractionMatchJoinEventSíExtractionMatch match, Player playerAntes de admitir a un jugador o espectador, una vez por jugador
ExtractionMatchStartEventSíExtractionMatch matchCuando /exc start supera la comprobación del mínimo de jugadores, antes de la cuenta atrás
ExtractionMatchLeaveEventNoExtractionMatch match, Player player, ExtractionLeaveReason reasonMientras un participante sale de la partida
ExtractionMatchEndEventNoExtractionMatch match, ExtractionMatchOutcome outcomeCuando termina la partida

Cancelar ExtractionMatchJoinEvent deja fuera al jugador y a todos los que se estén admitiendo con él. Si rechaza al creador de una partida recién generada, la partida y su mundo se destruyen y el creador recibe The generated match could not be started.

Cancelar ExtractionMatchStartEvent mantiene la partida en espera. Los jugadores pueden volver a ejecutar /exc start.

ExtractionMatchLeaveEvent se emite después de que Extractioncraft haya vinculado o vaciado el inventario del jugador según el motivo de salida, mientras el jugador sigue siendo participante y sigue en el mundo de la partida. Después se le teletransporta fuera.

ExtractionMatchEndEvent se emite antes de retirar a los jugadores que siguen dentro. Después salen con MATCH_ENDED. Un apagado del servidor o una recarga del plugin destruye las partidas sin terminarlas, así que no se emite ningún evento de fin; en ese caso, los jugadores salen con SHUTDOWN.

Motivos de salida​

ExtractionLeaveReasonSignificadoObjetos una vez que la partida está en curso
QUITSalió por su cuenta, por ejemplo con /exc quitSe pierden con la configuración predeterminada
DISCONNECTSe desconectó del servidorSe pierden con la configuración predeterminada
DIEDRecibió daño letalSe pierden con la configuración predeterminada
EXTRACTEDSe extrajo en un punto de extracciónSe conservan y se vinculan
MATCH_ENDEDSeguía dentro cuando terminó la partida, incluido cuando se agotó el temporizadorSe pierden con la configuración predeterminada
SHUTDOWNEl servidor o el plugin se apagó durante la partidaSe conservan y se vinculan

Salir antes de que la partida comience nunca toca el inventario. Consulta muerte y pérdida de objetos.

Resultados de la partida​

ExtractionMatchOutcomeCuándo lo usa Extractioncraft
DEFEATSe agotó el temporizador de 15 minutos o salió de la partida el último jugador activo, también al extraerse
NEUTRALEl número de jugadores cayó por debajo de minPlayers durante la cuenta atrás
VICTORYExtractioncraft nunca lo establece por sí mismo; solo puede producirlo un plugin que llame a end(...)

Ejemplo de uso​

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
}
}
}