#Система событий
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());