EventJS
является аддоном KubeJS, добавляющим перезагружаемые нативные события для KubeJS.
С EventJS вы можете:
- обновлять обработчики нативных событий без перезапуска игры или хранения обработчика в
global['someId'], что проще и производительнее. - добавлять/удалять обработчики нативных событий без перезапуска, что было невозможно в KubeJS для версий 1.16-1.20
- предотвращать сбои игры при ошибках в обработчике нативных событий
- добавлять обработчики только на стороне сервера или клиента
Использование
По умолчанию EventJS заменяет оригинальный метод прослушивания нативных событий для обеспечения перезагрузки. Для использования EventJS не требуется изучать новые методы — достаточно установить аддон, и обработка Forge-событий станет перезагружаемой.
Для более динамичного и детализированного прослушивания используйте NativeEvents.onEvent(...) и NativeEvents.onGenericEvent(...) для обработки generic-событий.
NativeEvents доступен для всех типов скриптов (client/server/startup), что позволяет выполнять sided-прослушивание (например, обработка клиентских событий только в client_scripts).
Синтаксис (v1.0.0~1.3.0)
NativeEvents.onEvent(eventType, handler)
NativeEvents.onEvent(priority, receiveCancelled, eventType, handler)
NativeEvents.onGenericEvent(genericClassFilter, eventType, handler)
NativeEvents.onGenericEvent(genericClassFilter, priority, receiveCancelled, eventType, handler)Параметр handler — функция обратного вызова, принимающая событие. Пример: (event) => {...}
eventType и genericClassType — идентификаторы класса (строка с именем класса или сам класс, загруженный через java(...) или Java.loadClass(...)).
let handler : (event: AnyForgeEvent) => void
let eventType : string | Class
let genericClassFilter: string | Class
let priority : $EventPriority | "highest" | "high" | "normal" | "low" | "lowest"
let receiveCancelled : booleanИзменения в 1.4.0
В EventJS 1.4.0 для поддержки ProbeJS Legacy параметры eventType и genericClassFilter поддерживают только классы, загруженные через java(...) (1.16.5) или Java.loadClass(...) (1.20.1).
let eventType : Class
let genericClassFilter: ClassПоддерживаемые версии
1.0.0: 1.16.5
1.1.0: 1.16.5, 1.20.1
1.2.0: все основные версии между 1.16 и 1.20
Примечание
Данный мод создан из-за неприемлемо медленной реализации аналогичных функций в KubeJS. Перезагрузка обработчиков нативных событий была добавлена в KubeJS только после обновления до 1.21, оставив версии 1.16-1.20 без поддержки.
KubeJS для 1.21+ также реализует перезагрузку через NativeEvents, но её внутренняя структура отличается от EventJS. Не следует делать допущения при взаимодействии с EventJS через Java.


