API développeur d'EternalTD
La référence Java générée permet de rechercher les classes, méthodes et signatures, avec la version et le commit source indiqués pour chaque module.
EternalTD expose des événements Bukkit personnalisés sous com.magmaguy.eternaltd.api que d'autres plugins peuvent écouter à des fins d'intégration.
Événements de tour
Ces événements se déclenchent lorsqu'un joueur interagit avec les tours pendant une session de niveau.
| Événement | Annulable | Données exposées |
|---|---|---|
TowerPlaceEvent | Oui | Tower tower |
TowerSellEvent | Oui | Tower tower |
TowerUpgradeEvent | Oui | Tower tower |
Annuler un événement de tour empêche l'action de se terminer.
TowerPlaceEvent se déclenche après l'affectation de la case à la tour, mais avant la création de son entité, le paiement de son coût ou son ajout aux tours de la session. Ne supposez pas que getLivingEntity() est disponible dans ce callback. Les événements d'amélioration et de vente précèdent le changement de monnaie et la modification de la tour.
Événements de phase de vague
Ces événements se déclenchent lors des transitions du cycle de vie des vagues. Aucun d'entre eux n'est annulable.
| Événement | Données exposées |
|---|---|
WaveConstructionPhaseStartEvent | LevelSession levelSession |
WaveStartingPhaseStartEvent | LevelSession levelSession |
WaveDefensivePhaseEvent | LevelSession levelSession |
WaveEndingPhaseEvent | LevelSession levelSession |
WaveStartingPhaseStartEvent se déclenche lorsque la session entre dans son état initial d'attente du lancement. WaveConstructionPhaseStartEvent se déclenche entre les vagues. WaveDefensivePhaseEvent est envoyé avant que la session incrémente le numéro de vague : lire ce numéro pendant le callback renvoie donc la valeur précédente. Malgré son nom, WaveEndingPhaseEvent se déclenche à la fin de la session, et non après chaque vague terminée.
Pendant l'événement initial, la session figure déjà dans LevelSession.getSessions() mais n'est pas encore marquée comme jouable, et le joueur se trouve encore hors du monde du niveau, sans les objets de partie ; la téléportation d'entrée a lieu au tick suivant. Pendant l'événement final, la vague courante a été arrêtée et un éventuel nouveau meilleur score a été enregistré, mais la session reste enregistrée et ses tours, l'état propre du joueur ainsi que le monde d'instance ne sont pas encore nettoyés. Lorsque la partie se termine parce que le joueur s'est déconnecté, celui-ci est déjà parti : son état est restauré et la session ne figure plus dans LevelSession.getSessions().
Événements d'entité de vague
Ces événements se déclenchent lorsque les entités de vague subissent des dégâts ou meurent.
| Événement | Annulable | Données exposées |
|---|---|---|
WaveEntityDamageEvent | Non | Tower tower, WaveEntity waveEntity, boolean directDamage |
WaveEntityDeathEvent | Non | WaveEntity waveEntity |
WaveEntityDamageEvent est une notification, pas un hook de modification des dégâts : il ne possède aucun setter de quantité. Un impact direct à dégâts de zone l'émet pour déclencher le traitement de zone sans appliquer un coup direct supplémentaire. Pour les dégâts ordinaires, un coup non mortel émet l'événement après la modification de la santé ; un coup mortel émet plutôt WaveEntityDeathEvent, après la suppression de l'entité. Les dégâts directs entièrement absorbés par l'armure n'émettent aucun des deux immédiatement ; des dégâts périodiques programmés séparément peuvent émettre des événements plus tard.
Exemple d'utilisation
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
}
}
Notes
- Tous les événements sont des événements Bukkit synchrones standards.
ToweretWaveEntitysont des types internes d'EternalTD. Utilisez leurs getters publics pour accéder aux données.- Les getters de
LevelSessionexposent le numéro de vague, les tours et la configuration. Accédez au joueur pargetMatchPlayer().getPlayer(). LevelSessionhérite de la classeMatchde MagmaCore. EternalTD intègre MagmaCore (shading) souscom.magmaguy.eternaltd.magmacore; dans le jar du plugin, cette classe est donccom.magmaguy.eternaltd.magmacore.match.Match.