EventJS

EventJS

KubeJS 的可重载原生事件支持
forge 作者 ZZZank 支持版本 1.16.5 - 1.20.1
下载量
31,944
关注数
5
数据来源
Modrinth
模组详细介绍

EventJS

是一个 KubeJS 附加模组,为 KubeJS 添加了可重载的原生事件支持。

使用 EventJS,你可以:

  • 无需重启整个游戏即可刷新原生事件监听器,或将处理器存储在 global['someId'] 中,这既更简单又更高效。
  • 按需添加/移除原生事件监听器而无需重启游戏,这在 KubeJS 1.16-1.20 版本中是不可能的
  • 防止原生事件监听器出错时导致游戏崩溃
  • 仅在服务端或客户端添加事件监听器

使用方法

默认情况下,EventJS 会替换原有的原生事件监听方法,使其变得可重载。因此,你实际上不需要学习任何新知识就能使用 EventJS,只需安装它,你的 Forge 事件监听就会变得可重载了。

但是,如果你正在寻找更动态和定义更明确的事件监听方式,你可以使用 NativeEvents.onEvent(...),以及用于泛型事件监听的 NativeEvents.onGenericEvent(...)

NativeEvents 将可用于所有 3 种脚本类型(客户端/服务端/启动),因此你可以执行侧限定的事件监听,例如,在 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)

JS 端的 handler 是一个接收事件的回调函数,例如:(event) => {...}

eventTypegenericClassType 是能够表示类的东西,比如包含事件类名的字符串,或者通过 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 开箱即用,eventTypegenericClassFilter 将仅主动支持通过 java(...)(1.16.5)或 Java.loadClass(...)(1.20.1)加载的 Class

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 之间的所有版本都抛在了后面。

适用于 1.21+ 的 KubeJS 也包含对原生事件监听器重载的支持,使用相同的名称 NativeEvents,但其实现方式与 EventJS 不同,因此在通过 Java 与 EventJS 内部交互时请不要做出假设。

基本信息
模组名称EventJS
作者ZZZank
下载量31,944
关注数5
支持版本1.16.5 - 1.20.1
加载器forge
客户端required
服务端required