【改】Bukkit・Spigotプラグインを作る方法<イベント編>
こんにちは、てれるんです!
今回は「【改】Bukkit・Spigotプラグインを作る方法<イベント編>」のイベント編です!
プラグインを作る上で一二を争う程大事なものですので、覚えておきましょう!
イベントって何?
まずは、イベントとは何か、軽くさらっておきましょう。
イベントは、例えば「プレイヤーが動いた時」だったり、「インベントリをクリックした時」だったり、「アイテムを右クリックした時」だったり。
つまり、「〇〇をした時」に処理が実行される塊のことをイベントといいます。
例えば、
インベントリでアイテムを右クリックしたらテレポートしたい!
という時は「InventoryClickEvent」というイベントを使用します。
イベントの探し方
私の中では一応3つ方法があります。
その①: Google先生と仲良くなる
私の場合、Google先生と仲良くなるのが一番だと思ってます。
例えば。
今回は「かまどで焼いた時」に起こるイベントを知りたかった時の話です。
検索窓に「spigot event furnace smelt event」とかで調べると、大体上の方にSpigotMCのスレッドが出てきます。
今回だとこんな感じ↓
基本的にこの辺のスレッドを漁ってたらいつかたどり着きます。多分。
その②: 「石橋を叩いて壊すブログ」さんを参考にする
全く赤の他人のブログさんで申し訳ないのですが、かなり参考になる記事がございます。
こちらがその記事です。(石橋さん、勝手にすみません...)
これは普通に参考になる記事でございます。いい記事をありがとうございます。
1.8.3なので少しバージョンは古いですが、まだまだ現役で使えます。
このブログを見ているだけでも「こんなのがあるんだな~」と思うことがあるので学びにもなっていいかも。
その③: SpigotAPIのJavadocでゴリ押す
これが一番正確な情報が入ります。が...まぁ、検索には向いてませんね。
検索窓が右上にあるので、対象のクラス名とかを検索すれば全部出てきます。
一番いいと思う使い方は、
- SpigotMCのスレッドで出てきたイベント名をここで検索する
- イベント一覧を眺める
のが一番じゃないかって思います。
その④: sya-riさんがまとめたイベントリストを使用する
最近見つけて良!と思ってお借りしました。
日本語でBukkit, Spigot, Paper, Purpurのイベント一覧がまとまってるので参考にするのもアリ...!
イベントの実装方法
まずは、イベントを実装するクラスを作ります。普通にクラス作れば大丈夫です。
今回は「SampleEventListenerClass」としておきます。
そのクラスにListenerをimplementsしてください。したらこんな感じ。
できたら、@EventListenerアノテーションをつけてから名前は何でもよいのでpublic voidなメソッドを作成して第一引数にListenしたいイベントのクラスを書いたメソッドを書きます。実装するとこんな感じ。FurnaceSmeltEventが発火(呼び出されることを発火って言ったりします)したらメッセージが流れるって感じですね。
因みに、イベントにも発火した時のListenの優先度(早めに呼び出されるか遅めに呼び出されるか)が設定できます。優先度が高い順(つまり直ぐに呼び出される方)に書くと
- LOWEST
- LOW
- NORMAL
- HIGH
- HIGHEST
- MONITOR
という順番になります。一応例も載せておきます。
第一引数の中身を見てみると、イベントが起きた時のいろんな情報が入ってます。それを使ってやっていくのが基本な感じですかね。(因みにこの中身についても先ほどのJavaDocに書いてあるよ)
イベントメソッドの実装が終わったら、イベントの登録をします。メインクラス等でPluginインスタンスを取得しておきましょう。Listenerをimplementsしたクラス(さっきまで処理を書いていたクラス)を登録してあげれば大丈夫です。
こんな感じですね。
イベントのキャンセル
イベントにはキャンセルが可能なイベントが存在します。
JavaDocに「implements Cancellable」という様に、対象のイベントのクラスでCancellableが実装されていた場合にイベントをキャンセルできます。
イベントをキャンセルするとどうなるかというと、例えばBlockPlaceEventをキャンセルした場合、ブロックを置けなくなるのようにその動作をキャンセルすることが出来ます。
キャンセルしているかどうかは「isCancelled」で確認、キャンセルするには「setCancelled」で設定できます。
詳しくはここからどーぞ。
最後に
イベントについて理解できましたでしょうか?これを身に着けて、君もイベントマスター!
...まぁ、イベントは本当によく使うので、覚えておきましょう。大事。大事。
ということで今回は【改】Bukkit・Spigotプラグインを作る方法の「イベント編」をお送りしました!なにか質問等あればコメントやTwitterのDMにて受け付けてます!
ではでは、お疲れさまでした~てれるんでした(*'▽')