Skip to main content
Version: Legacy

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


События

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


Список событий

note

се события так сразу и не найдёшь, некоторые из них могут предоставляться другими модами или быть созданы вами. Но основные из них вы можете найти в пакете 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
}