处理器列表
每个可以被监听的 Event 都有一个
HandlerList,其中包含了所有监听该事件的监听器。
这个列表用于在事件被调用时调用监听器。
获取事件的处理器列表
要获取事件的处理器列表,你可以在特定的事件类上调用 getHandlerList()。
ExampleListener.java
public class ExampleListener implements Listener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
HandlerList handlerList = event.getHandlerList();
// ...
}
// 或者:
public ExampleListener() {
// 通过静态获取器访问处理器列表
HandlerList handlerList = PlayerJoinEvent.getHandlerList();
// ...
}
}
注销监听器
要注销监听器,你可以在监听器注册到的 HandlerList 上调用 unregister()。
ExampleListener.java
public class ExampleListener implements Listener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
HandlerList handlerList = event.getHandlerList();
handlerList.unregister(this);
// ...
}
// 或者:
public ExampleListener() {
// 通过静态获取器访问处理器列表
HandlerList handlerList = PlayerJoinEvent.getHandlerList();
handlerList.unregister(this);
// 当然这是一个相当愚蠢的例子...
}
}
你可以基于 Listener
或 Plugin 进行注销,这样更方便。
同样,你也可以通过在 HandlerList 上调用
unregisterAll() 来注销特定事件的所有监听器。