API do Extractioncraft para programadores
O Extractioncraft disponibiliza uma classe de consulta e eventos Bukkit em com.magmaguy.extractioncraft.api, para que outros plugins possam acompanhar as partidas e reagir a elas. Todos são eventos Bukkit síncronos normais.
Consultas
| Método | Devolve |
|---|---|
ExtractionCraftAPI.getMatch(Player player) | A ExtractionMatch em que o jogador está, como jogador ou espectador, ou null |
ExtractionCraftAPI.getMatches() | Uma cópia de todas as partidas que foram criadas e ainda não foram destruídas |
ExtractionMatch estende a classe de partida da cópia do MagmaCore incluída no jar do Extractioncraft, relocalizada para com.magmaguy.extractioncraft.magmacore.match.Match. Os seus métodos públicos incluem getPhase(), getMatchPlayers(), getActivePlayers(), admit(players), admitSpectator(player), leave(player, reason), start() e end(outcome). O Extractioncraft não tem comando para entrar nem para assistir, por isso admit e admitSpectator são a forma de outro plugin trazer mais jogadores ou espectadores para uma partida. Os jogadores só podem ser admitidos enquanto a partida está em espera, até ao seu maxPlayers; os espectadores exigem que o pacote de conteúdo defina spectatable: true.
Eventos
| Evento | Cancelável | Dados disponíveis | Quando ocorre |
|---|---|---|---|
ExtractionMatchJoinEvent | Sim | ExtractionMatch match, Player player | Antes de um jogador ou espectador ser admitido, uma vez por jogador |
ExtractionMatchStartEvent | Sim | ExtractionMatch match | Quando /exc start passa a verificação do mínimo de jogadores, antes da contagem decrescente |
ExtractionMatchLeaveEvent | Não | ExtractionMatch match, Player player, ExtractionLeaveReason reason | Enquanto um participante está a sair |
ExtractionMatchEndEvent | Não | ExtractionMatch match, ExtractionMatchOutcome outcome | Quando a partida termina |
Cancelar ExtractionMatchJoinEvent impede a entrada do jogador e de todos os jogadores que estão a ser admitidos com ele. Quando recusa o criador de uma partida acabada de gerar, a partida e o seu mundo são destruídos e o criador recebe The generated match could not be started.
Cancelar ExtractionMatchStartEvent mantém a partida em espera. Os jogadores podem executar /exc start novamente.
ExtractionMatchLeaveEvent ocorre depois de o Extractioncraft ter vinculado ou limpado o inventário do jogador conforme o motivo de saída, enquanto o jogador ainda é participante e ainda está no mundo da partida. O teletransporte para fora acontece depois.
ExtractionMatchEndEvent ocorre antes de os jogadores que ainda estão lá dentro serem removidos. Esses jogadores saem depois com MATCH_ENDED. Desligar o servidor ou recarregar o plugin destrói as partidas sem as terminar, pelo que não ocorre nenhum evento de fim; nesse caso, os jogadores saem com SHUTDOWN.
Motivos de saída
ExtractionLeaveReason | Significado | Itens depois de a partida começar |
|---|---|---|
QUIT | Saiu por iniciativa própria, por exemplo com /exc quit | Perdidos com a configuração predefinida |
DISCONNECT | Desligou-se do servidor | Perdidos com a configuração predefinida |
DIED | Sofreu dano letal | Perdidos com a configuração predefinida |
EXTRACTED | Foi extraído num ponto de extração | Conservados e vinculados |
MATCH_ENDED | Ainda estava lá dentro quando a partida terminou, incluindo quando o temporizador chegou ao fim | Perdidos com a configuração predefinida |
SHUTDOWN | O servidor ou o plugin foi desligado durante a partida | Conservados e vinculados |
Sair antes de a partida começar nunca altera o inventário. Consulte morte e perda de itens.
Resultados da partida
ExtractionMatchOutcome | Quando o Extractioncraft o usa |
|---|---|
DEFEAT | O temporizador de 15 minutos chegou ao fim, ou o último jogador ativo saiu da partida, incluindo por extração |
NEUTRAL | O número de jogadores desceu abaixo de minPlayers durante a contagem decrescente |
VICTORY | Nunca é definido pelo próprio Extractioncraft; só um plugin que chame end(...) o pode produzir |
Exemplo de utilização
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
}
}
}