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étodo | Devuelve |
|---|---|
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
| Evento | Cancelable | Datos expuestos | Cuándo se emite |
|---|---|---|---|
ExtractionMatchJoinEvent | Sí | ExtractionMatch match, Player player | Antes de admitir a un jugador o espectador, una vez por jugador |
ExtractionMatchStartEvent | Sí | ExtractionMatch match | Cuando /exc start supera la comprobación del mínimo de jugadores, antes de la cuenta atrás |
ExtractionMatchLeaveEvent | No | ExtractionMatch match, Player player, ExtractionLeaveReason reason | Mientras un participante sale de la partida |
ExtractionMatchEndEvent | No | ExtractionMatch match, ExtractionMatchOutcome outcome | Cuando 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
ExtractionLeaveReason | Significado | Objetos una vez que la partida está en curso |
|---|---|---|
QUIT | Salió por su cuenta, por ejemplo con /exc quit | Se pierden con la configuración predeterminada |
DISCONNECT | Se desconectó del servidor | Se pierden con la configuración predeterminada |
DIED | Recibió daño letal | Se pierden con la configuración predeterminada |
EXTRACTED | Se extrajo en un punto de extracción | Se conservan y se vinculan |
MATCH_ENDED | Seguía dentro cuando terminó la partida, incluido cuando se agotó el temporizador | Se pierden con la configuración predeterminada |
SHUTDOWN | El servidor o el plugin se apagó durante la partida | Se 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
ExtractionMatchOutcome | Cuándo lo usa Extractioncraft |
|---|---|
DEFEAT | Se agotó el temporizador de 15 minutos o salió de la partida el último jugador activo, también al extraerse |
NEUTRAL | El número de jugadores cayó por debajo de minPlayers durante la cuenta atrás |
VICTORY | Extractioncraft 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
}
}
}