#Система событий

Ovrex использует event-driven архитектуру. Плагины подписываются на события через аннотацию @EventHandler.

#Регистрация слушателя

java
public class MyPlugin extends Plugin {
    @Override
    public void onEnable() {
        getProxy().getEventBus().register(this, new MyListener());
    }
}

public class MyListener {

    @EventHandler(priority = EventPriority.NORMAL)
    public void onPlayerConnect(PlayerConnectEvent event) {
        ProxyPlayer player = event.getPlayer();
        System.out.println(player.getUsername() + " подключается!");
    }
}

#Доступные события

Событие Отменяемое Описание
PlayerConnectEvent Подключение игрока к proxy
PlayerDisconnectEvent Отключение игрока
ServerSwitchEvent Смена сервера
PacketSendEvent Отправка пакета клиенту
PacketReceiveEvent Получение пакета от клиента

#PlayerConnectEvent

java
@EventHandler
public void onConnect(PlayerConnectEvent event) {
    event.setCancelled(true);
    event.setCancelReason("Сервер на обслуживании");
}

#PlayerDisconnectEvent

java
@EventHandler
public void onDisconnect(PlayerDisconnectEvent event) {
    System.out.println(event.getPlayer().getUsername() + " вышел");
}

#ServerSwitchEvent

java
@EventHandler
public void onSwitch(ServerSwitchEvent event) {
    String from = event.getPreviousServer() != null ? event.getPreviousServer().getName() : "нет";
    String to = event.getNewServer().getName();
    System.out.println(event.getPlayer().getUsername() + ": " + from + " -> " + to);
}

#Приоритеты

Приоритет Порядок
LOWEST Первый
LOW
NORMAL По умолчанию
HIGH
HIGHEST
MONITOR Последний (только чтение)

#Асинхронная отправка

java
getProxy().getEventBus().fireAsync(new MyCustomEvent());