イベントに関する解説はこちらで行ってます
イベントを監視する(イベントリスナー)クラスをイベントリスナークラスと呼びます。
イベントリスナークラスはイベントリスナーにしたいクラスにListenerインターフェースを実装することで作成が可能です。
ListenerClassimport org.bukkit.event.Listener;
public class ListenerClass implements Listener {
// こんな感じでクラスにListenerをimplementsしよう
}
イベントが発火した時に実行されるメソッドを実装していきます。
イベントリスナークラス内に@EventHandlerアノテーションをつけ、メソッドの第一引数にイベントクラスを指定したものがイベントを発火した際に実行されるメソッドになります。
つまり、@EventHandlerをメソッドに作ることで、Bukkitに「このメソッドがイベントリスナー用のメソッドだよ」と伝え、メソッドの引数で「この種類のイベントだよ」と指定している感じです。
メソッド名に制限はないですが、一般的にはonからはじめ次にイベント名を続ける形が多いです(つまりonPlayerMoveやonBlockPlaceなど)
ちなみに第一引数に指定するイベントの変数名も制限はありませんが、長さの関係上eやeventと省略されることが多いです。
イベントを監視したいけど、どんなイベントがあるのか知りたいですよね。わかる。
基本的にはSpigotAPIのJavadocを参照することが一番です。
ここから確認できます。一応イベントの種類によってパッケージが分類されているので、プレイヤー関連のイベントが見たいな〜という時にはorg.bukkit.event.playerをクリックして見ていく、みたいな感じです。
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/package-summary.html
でもこれだとわかりづらいので、優秀なサイトをご紹介します。
sya-riさんがイベント一覧を日本語でわかりやすく見つけやすいようにまとめてくれたサイトを作ってくださっています。
Bukkit・Spigot以外のイベントも掲載されていますが、フィルター等を使用し使っていきましょう。
https://spigot-event-list.s7a.dev/
実装例ではonPlayerJoinというメソッドを作成し、PlayerJoinEventというイベント、つまりプレイヤーがサーバーに参加した際に実行されるメソッドを作成します。
ListenerClassimport org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class ListenerClass implements Listener {
@EventHandler //メソッドに @EventHandler アノテーションをつけてBukkitに知らせよう
public void onPlayerJoin(PlayerJoinEvent e) {
// プレイヤーがサーバーに参加した際に実行されるよ
// メソッドの第一引数に聞きたいイベントを指定。変数名の制限はないよ。
}
}