跳转至

脚本引擎 - 事件监听文档

事件系统让插件可以 响应 特定的游戏事件,让你可以在特定事件发生时执行代码

下面这些API,提供了监听游戏事件并做出响应的相关能力。

🔔 监听 API

注册指定的监听函数。
当游戏中的某种事件发生时,你设置的对应的监听函数将被引擎调用,这时候你可以对相关事件进行处理。

注册监听器

mc.listen(event,callback)

  • 参数:

  • event : String
    要监听的事件名(见下方监听事件列表)

  • callback : Function
    注册的监听函数(函数相关参数见下)
    当指定的事件发生时,BDS会调用你给出的监听函数,并传入相应的参数

  • 返回值:是否成功监听事件
  • 返回值类型:Boolean

拦截事件

在脚本引擎的事件监听系统中,一般你可以通过返回false来拦截某个可以被拦截的事件。拦截事件意味着在脚本拦截之后BDS将不再处理这个事件,就像他从没发生过一样。
举例:拦截某条聊天事件,会造成所有人都看不到这条聊天消息

不过,拦截事件仅对BDS有效。
也就是说,拦截事件并不影响其他有对应监听的脚本引擎脚本处理这个事件,只是BDS无法再接收到它。

避开误区

有些时候,在某些事件监听内部调用特定的API会造成死循环崩服,请务必避免这些情况的发生
举例:在onConsoleCmd事件监听中调用mc.runcmd(Ex)系列函数执行后台指令,将导致死循环

📜 监听事件列表

侧边栏中给出了脚本引擎支持监听的各种事件的列表。

提示:你可以根据监听得到的游戏对象来获取他们的相关信息,比如说方块的坐标、实体的名字等等。
同时,这些对象的成员函数也都可以被调用。

注意!传入的回调参数中,有些有时候可能为 Null,这需要在编写代码的时候做好判断检查