Skip to main content

EternalTD Developer API

EternalTD exposes custom Bukkit events under com.magmaguy.eternaltd.api that other plugins can listen to for integration.

Tower Events

These events fire when a player interacts with towers during a level session.

EventCancellableExposed data
TowerPlaceEventYesTower tower
TowerSellEventYesTower tower
TowerUpgradeEventYesTower tower

Cancelling a tower event prevents the action from completing.

Wave Phase Events

These events fire during wave lifecycle transitions. None of them are cancellable.

EventExposed data
WaveConstructionPhaseStartEventLevelSession levelSession
WaveStartingPhaseStartEventLevelSession levelSession
WaveDefensivePhaseEventLevelSession levelSession
WaveEndingPhaseEventLevelSession levelSession

Wave Entity Events

These events fire when wave entities take damage or die.

EventCancellableExposed data
WaveEntityDamageEventNoTower tower, WaveEntity waveEntity, boolean directDamage
WaveEntityDeathEventNoWaveEntity waveEntity

Usage Example

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

  • All events are standard synchronous Bukkit events.
  • Tower and WaveEntity are EternalTD internal types. Use their public getters for data access.
  • LevelSession exposes the session's player, wave number, towers, and config through its public getters.