Перейти к основному содержимому

Универсальные События

В игре постоянно проиходят всякие события, HollowCore позволяет ловить некоторые из них или даже отменять, если это возможно.

Список всех событий

Все события так сразу и не найдёшь, некоторые из них могут предоставляться другими модами или быть созданы вами. Но основные из них вы можете найти в пакете ru.hollowhorizon.hc.common.events.

Создание обработчика событий

Для начала создайте метод и в качестве первого аргумента укажите класс нужного вам события. После чего добавьте аннотацию @SubscribeEvent, при необходимости в её параметрах укажите приоритет. Чем он ниже, тем раньше будет вызван в сравнении с событиями других модов. (Это нужно чтобы вы могли отменить событие раньше других модов, если вам это очень важно)

Пример
@SubscribeEvent
fun onPlayerJoin(event: PlayerEvent.Join) { // Метод запустится при входе игрока на сервер.

}

Создание своих событий

Если вам нужно создать своё события, то реализуйте интерфейс ru.hollowhorizon.hc.common.events.Event и при необходимости ru.hollowhorizon.hc.common.events.Cancelable (Если ваше событие можно будет отменить)

После чего для вызова события создайте новый экземпляр класса и вызовите метод EventBus.post(event), где event - экземпляр вашего класса. Если ваше событие кто-то отменил, то значение переменной isCanceled изменится на true.

Пример
class UniverseCollapseEvent(val message: String): Event, Cancelable {
override var isCanceled: Boolean = false // Начальное значение отменяемого события должно быть - false (иначе смысл его отменять, не так ли?)
}

// Пример запуска вашего события
fun somewhereInYourCode() {
val event = UniverseCollapseEvent("Ой...") // Создаём событие

EventBus.post(event) // Вызываем событие

if(event.isCanceled) return // Если событие отменено, то завершаем метод

Minecraft.crash(...) // Событие не завершено, делайте дальше, что хотите
}

// Пример использования вашего события
@SubscribeEvent
fun onUniverseCollapse(event: UniverseCollapseEvent) {
event.isCanceled = true
}