Прослушивание событий
Около 208 словМеньше 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
и др.), фактическая обработка данных выполняется после завершения всех слушателей событий. Поэтому получить результат операции напрямую из самого события невозможно, но можно настроить для события соответствующий callback, чтобы обработать результат после завершения операции с данными.
Например, для 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());
});
}
}