Saltar para o conteúdo principal

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étodoDevolve
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​

EventoCancelávelDados disponíveisQuando ocorre
ExtractionMatchJoinEventSimExtractionMatch match, Player playerAntes de um jogador ou espectador ser admitido, uma vez por jogador
ExtractionMatchStartEventSimExtractionMatch matchQuando /exc start passa a verificação do mínimo de jogadores, antes da contagem decrescente
ExtractionMatchLeaveEventNãoExtractionMatch match, Player player, ExtractionLeaveReason reasonEnquanto um participante está a sair
ExtractionMatchEndEventNãoExtractionMatch match, ExtractionMatchOutcome outcomeQuando 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​

ExtractionLeaveReasonSignificadoItens depois de a partida começar
QUITSaiu por iniciativa própria, por exemplo com /exc quitPerdidos com a configuração predefinida
DISCONNECTDesligou-se do servidorPerdidos com a configuração predefinida
DIEDSofreu dano letalPerdidos com a configuração predefinida
EXTRACTEDFoi extraído num ponto de extraçãoConservados e vinculados
MATCH_ENDEDAinda estava lá dentro quando a partida terminou, incluindo quando o temporizador chegou ao fimPerdidos com a configuração predefinida
SHUTDOWNO servidor ou o plugin foi desligado durante a partidaConservados e vinculados

Sair antes de a partida começar nunca altera o inventário. Consulte morte e perda de itens.

Resultados da partida​

ExtractionMatchOutcomeQuando o Extractioncraft o usa
DEFEATO temporizador de 15 minutos chegou ao fim, ou o último jogador ativo saiu da partida, incluindo por extração
NEUTRALO número de jogadores desceu abaixo de minPlayers durante a contagem decrescente
VICTORYNunca é 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
}
}
}