メインコンテンツまでスキップ

EternalTD 開発者API

生成されたJavaリファレンスでクラス、メソッド、シグネチャを検索できます。各モジュールのソースバージョンとコミットも記録されています。

EternalTDは com.magmaguy.eternaltd.api パッケージの下にカスタムBukkitイベントを公開しており、他のプラグインが連携のためにリッスンできます。

タワーイベント​

これらのイベントは、レベルセッション中にプレイヤーがタワーを操作したときに発火します。

イベントキャンセル可能公開データ
TowerPlaceEventはいTower tower
TowerSellEventはいTower tower
TowerUpgradeEventはいTower tower

タワーイベントをキャンセルすると、そのアクションの完了が阻止されます。

TowerPlaceEventはグリッドのセルを割り当てた後、タワーのエンティティ生成、費用の支払い、セッションのタワー集合への追加より前に発行されます。このコールバックでgetLivingEntity()が利用できるとは限りません。強化と売却のイベントも、通貨やタワーの変更前に発行されます。

ウェーブフェーズイベント​

これらのイベントはウェーブのライフサイクル遷移中に発火します。いずれもキャンセルできません。

イベント公開データ
WaveConstructionPhaseStartEventLevelSession levelSession
WaveStartingPhaseStartEventLevelSession levelSession
WaveDefensivePhaseEventLevelSession levelSession
WaveEndingPhaseEventLevelSession 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です。