purajukuIcon
ログイン

イベントの実装方法

イベント

イベントとは

イベントに関する解説はこちらで行ってます

イベントリスナークラスを作る

イベントを監視する(イベントリスナー)クラスをイベントリスナークラスと呼びます。

イベントリスナークラスはイベントリスナーにしたいクラスにListenerインターフェースを実装することで作成が可能です。

実装例

ListenerClass
import org.bukkit.event.Listener;

public class ListenerClass implements Listener {
    // こんな感じでクラスにListenerをimplementsしよう    
}

メソッドを作る

イベントが発火した時に実行されるメソッドを実装していきます。

イベントリスナークラス内に@EventHandlerアノテーションをつけ、メソッドの第一引数にイベントクラスを指定したものがイベントを発火した際に実行されるメソッドになります。

つまり、@EventHandlerをメソッドに作ることで、Bukkitに「このメソッドがイベントリスナー用のメソッドだよ」と伝え、メソッドの引数で「この種類のイベントだよ」と指定している感じです。

メソッド名に制限はないですが、一般的にはonからはじめ次にイベント名を続ける形が多いです(つまりonPlayerMoveonBlockPlaceなど)

ちなみに第一引数に指定するイベントの変数名も制限はありませんが、長さの関係上eeventと省略されることが多いです。

イベントの種類

イベントを監視したいけど、どんなイベントがあるのか知りたいですよね。わかる。

基本的には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というイベント、つまりプレイヤーがサーバーに参加した際に実行されるメソッドを作成します。

ListenerClass
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class ListenerClass implements Listener {
    
    @EventHandler //メソッドに @EventHandler アノテーションをつけてBukkitに知らせよう
    public void onPlayerJoin(PlayerJoinEvent e) {
        // プレイヤーがサーバーに参加した際に実行されるよ
        // メソッドの第一引数に聞きたいイベントを指定。変数名の制限はないよ。
    }
    
}