イベントのリッスン
188字程度1分以内
2025-08-21
基本
他のすべてのBukkitEventと同様に、Dominionのイベントをリッスンするには、リスナークラスを実装し、その中でリッスンしたいイベントを実装する必要があります。 必要に応じてイベントをキャンセル(イベントの発生を防ぐ)したり、イベント内のデータを変更したりできます。
// DominionEventHandler.java
import cn.lunadeer.dominion.events.dominion.DominionCreateEvent;
public class YourPluginMainClass extends JavaPlugin implements Listener {
@EventHandler
public void onDominionCreateEvent(DominionCreateEvent event) {
if (event.isCancelled()) return;
// do something you want
}
@Override
public void onEnable() {
// Plugin startup logic
getServer().getPluginManager().registerEvents(this, this);
}
}
イベント操作の結果を取得する方法
領地データ操作に関する一部のイベント(例:DominionCreateEvent
、MemberAddedEvent
など)では、実際のデータ処理はすべてのイベントリスナーの処理が終わった後に実行されます。 そのため、イベント本体から直接操作結果を取得することはできませんが、イベントにコールバックを設定することで、データ操作が完了した後に結果を処理できます。
MemberAddedEvent
を例に、メンバー追加が成功した後に自動でメンバーを領地にテレポートさせる場合を示します:
import cn.lunadeer.dominion.events.member.MemberAddedEvent;
public class AutoTpMember implements Listener {
@EventHandler
public void onDominionAddMember(MemberAddedEvent event) {
if (event.isCancelled()) return;
// the lambda function will be called after the member is added
event.afterAdded(memberDTO -> {
if (memberDTO == null) return; // if memberDTO is null, means the addition failed
DominionDTO dominion = event.getDominion();
Player player = Bukkit.getPlayer(memberDTO.getPlayerUUID());
player.teleportAsync(dominion.getTpLocation());
});
}
}