EternalTD 開発者API
生成されたJavaリファレンスでクラス、メソッド、シグネチャを検索できます。各モジュールのソースバージョンとコミットも記録されています。
EternalTDは com.magmaguy.eternaltd.api パッケージの下にカスタムBukkitイベントを公開しており、他のプラグインが連携のためにリッスンできます。
タワーイベント
これらのイベントは、レベルセッション中にプレイヤーがタワーを操作したときに発火します。
| イベント | キャンセル可能 | 公開データ |
|---|---|---|
TowerPlaceEvent | はい | Tower tower |
TowerSellEvent | はい | Tower tower |
TowerUpgradeEvent | はい | Tower tower |
タワーイベントをキャンセルすると、そのアクションの完了が阻止されます。
TowerPlaceEventはグリッドのセルを割り当てた後、タワーのエンティティ生成、費用の支払い、セッションのタワー集合への追加より前に発行されます。このコールバックでgetLivingEntity()が利用できるとは限りません。強化と売却のイベントも、通貨やタワーの変更前に発行されます。
ウェーブフェーズイベント
これらのイベントはウェーブのライフサイクル遷移中に発火します。いずれもキャンセルできません。
| イベント | 公開データ |
|---|---|
WaveConstructionPhaseStartEvent | LevelSession levelSession |
WaveStartingPhaseStartEvent | LevelSession levelSession |
WaveDefensivePhaseEvent | LevelSession levelSession |
WaveEndingPhaseEvent | LevelSession levelSession |
WaveStartingPhaseStartEventは最初の開始待ち状態に入ったとき、WaveConstructionPhaseStartEventはウェーブ間に発行されます。WaveDefensivePhaseEventはウェーブ番号の加算前に発行されるため、コールバック中に番号を読むと前の値が返ります。WaveEndingPhaseEventは名前に反して各ウェーブの終了時ではなく、セッション終了時に発行されます。
開始イベント時点では、セッションはすでにLevelSession.getSessions()に含まれていますが、まだプレイ可能にはなっていません。プレイヤーもまだレベルワールドの外にいて、マッチ用アイテムを持っていません。入場時のテレポートは次のティックで行われます。終了イベント時点では現在のウェーブの停止と新しいハイスコアの記録は済んでいますが、セッションはまだ登録されており、タワー、プレイヤー自身の状態、インスタンスワールドの後片付けも未完了です。プレイヤーの切断によってランが終了した場合、プレイヤーはすでに退出しています。その状態は復元済みで、セッションもLevelSession.getSessions()から外れています。
ウェーブエンティティイベント
これらのイベントは、ウェーブエンティティがダメージを受けたり死亡したりしたときに発火します。
| イベント | キャンセル可能 | 公開データ |
|---|---|---|
WaveEntityDamageEvent | いいえ | Tower tower, WaveEntity waveEntity, boolean directDamage |
WaveEntityDeathEvent | いいえ | WaveEntity waveEntity |
WaveEntityDamageEventは通知用で、ダメージ量を変更するsetterはありません。範囲攻撃の直撃は、追加の直接ダメージを与えず、範囲処理を起動するためにこのイベントを発行します。通常の非致死ダメージでは体力変更後に発行されます。致死ダメージではエンティティを削除した後、代わりにWaveEntityDeathEventを発行します。防具に完全に吸収された直接ダメージは直後にはどちらも発行しませんが、別に予約された継続ダメージは後でイベントを発行する場合があります。
使用例
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
}
}
備考
- すべてのイベントは標準的な同期Bukkitイベントです。
TowerとWaveEntityはEternalTDの内部型です。データアクセスにはパブリックなgetterを使用してください。LevelSessionのgetterでウェーブ番号、タワー、設定を取得できます。プレイヤーにはgetMatchPlayer().getPlayer()でアクセスします。LevelSessionはMagmaCoreのMatchクラスを継承しています。EternalTDはMagmaCoreをcom.magmaguy.eternaltd.magmacore配下にシェードしているため、プラグインjar内でのこのクラスはcom.magmaguy.eternaltd.magmacore.match.Matchです。