跳到主要内容

处理器列表

每个可以被监听的 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);
// 当然这是一个相当愚蠢的例子...
}
}

你可以基于 ListenerPlugin 进行注销,这样更方便。 同样,你也可以通过在 HandlerList 上调用 unregisterAll() 来注销特定事件的所有监听器。