基本事件处理
Bukkit 使用基于事件的系统,允许插件开发人员与世界上发生的服务器和特定操作进行交互和修改。
创建事件处理程序
事件处理程序是在事件发生时调用的方法。它们通常是公开的,无效的,并且按惯例命名为 on{EventNameStem}
。但是,所有处理程序必须具有 @EventHandler
注释,并且包含其事件作为 ONLY 参数。以下是 PlayerJoinEvent
的事件处理程序示例
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event){
//Run when a player joins
}
注意: Bukkit 事件的命名格式是 {Source}{Action}({Target})Event
。这些事件名称的一些示例是:PlayerInteractEvent
或 BlockBreakEvent
或 PlayerJoinEvent
。可以在 Spigot Javadocs 上找到所有事件的列表
注册活动
仅仅创建一个事件处理程序不足以让 Bukkit 开始向你的方法发送事件调用。你还必须通过 PluginManager 界面注册它。
注册事件的最常用方法是创建一个实现 Listener 接口的类,并使用它包装事件处理程序。
public class EventListener implements Listener { //Implements the Listener interface
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event){
//Run when a player joins
}
}
然后可以在你的主插件类中注册此侦听器类及其所有事件,如下所示:
@Override
public void onEnable(){
Bukkit.getPluginManager().registerEvents(new EventListener(), this); //Register your listener and its event handlers
}