基本事件處理
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
}