API do EternalTD para programadores
A referência Java gerada permite pesquisar classes, métodos e assinaturas, com a versão e o commit do código-fonte registados para cada módulo.
O EternalTD disponibiliza eventos Bukkit personalizados em com.magmaguy.eternaltd.api, aos quais outros plugins podem responder para integrar funcionalidades.
Eventos de torres
Estes eventos são disparados quando um jogador interage com torres durante uma sessão de nível.
| Evento | Cancelável | Dados disponíveis |
|---|---|---|
TowerPlaceEvent | Sim | Tower tower |
TowerSellEvent | Sim | Tower tower |
TowerUpgradeEvent | Sim | Tower tower |
Cancelar um evento de torre impede a conclusão da ação.
TowerPlaceEvent ocorre depois de atribuir a célula à torre, mas antes de gerar a entidade, cobrar o custo ou adicionar a torre ao conjunto da sessão. Não assuma que getLivingEntity() está disponível nesse callback. Os eventos de melhoria e venda ocorrem antes da alteração da moeda e da torre.
Eventos das fases das vagas
Estes eventos assinalam transições do ciclo de vida das vagas. Nenhum pode ser cancelado.
| Evento | Dados disponíveis |
|---|---|
WaveConstructionPhaseStartEvent | LevelSession levelSession |
WaveStartingPhaseStartEvent | LevelSession levelSession |
WaveDefensivePhaseEvent | LevelSession levelSession |
WaveEndingPhaseEvent | LevelSession levelSession |
WaveStartingPhaseStartEvent é disparado quando a sessão entra no estado inicial de espera pelo início. WaveConstructionPhaseStartEvent ocorre entre vagas. WaveDefensivePhaseEvent é disparado antes de incrementar o número da vaga, pelo que consultar esse número no callback devolve o valor anterior. Apesar do nome, WaveEndingPhaseEvent ocorre ao terminar a sessão, e não após cada vaga concluída.
Durante o evento inicial, a sessão já está em LevelSession.getSessions(), mas ainda não está marcada como jogável, e o jogador continua fora do mundo do nível e sem os itens da partida; o teletransporte de entrada acontece no tick seguinte. Durante o evento final, a vaga atual já foi encerrada e qualquer novo recorde já foi registado, mas a sessão continua registada e as torres, o estado do próprio jogador e o mundo da instância ainda não foram limpos. Quando a partida termina porque o jogador se desligou, o jogador já saiu: o seu estado foi restaurado e a sessão já não está em LevelSession.getSessions().
Eventos das entidades das vagas
Estes eventos são disparados quando as entidades das vagas recebem dano ou morrem.
| Evento | Cancelável | Dados disponíveis |
|---|---|---|
WaveEntityDamageEvent | Não | Tower tower, WaveEntity waveEntity, boolean directDamage |
WaveEntityDeathEvent | Não | WaveEntity waveEntity |
WaveEntityDamageEvent é uma notificação e não permite editar o dano: não tem um setter para a quantidade. Um impacto direto de área dispara-o para iniciar o dano de área, sem aplicar um impacto direto adicional. No dano normal, impactos não letais disparam o evento depois de alterar a vida; os letais disparam WaveEntityDeathEvent em vez disso, depois de remover a entidade. Dano direto totalmente absorvido pela armadura não dispara nenhum dos dois imediatamente; dano ao longo do tempo agendado separadamente pode disparar eventos posteriores.
Exemplo de utilização
import com.magmaguy.eternaltd.api.TowerPlaceEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class MyETDIntegration implements Listener {
@EventHandler
public void onTowerPlace(TowerPlaceEvent event) {
// React to tower placement
}
}
Observações
- Todos são eventos Bukkit síncronos normais.
TowereWaveEntitysão tipos internos EternalTD. Use os getters públicos para consultar os dados.LevelSessiondisponibiliza o número da vaga, as torres e a configuração através de getters. Aceda ao jogador comgetMatchPlayer().getPlayer().LevelSessionestende a classeMatchdo MagmaCore. O EternalTD inclui o MagmaCore por shading emcom.magmaguy.eternaltd.magmacore, por isso, no jar do plugin, essa classe écom.magmaguy.eternaltd.magmacore.match.Match.