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.