発生したイベントを画面に表示するプラグインを作った
[マインクラフト] [2015/08/30 19:07]
以前に作ったBukkitイベントの一覧を最新版にするために、
発生したありとあらゆるイベントを画面に表示するプラグインを作ってみた。
プラグインを作るときに、どんなときにどんなイベントが発生するのかを調べてみたい人向け。
木材を一個投げ、一個設置した状態。ただの2アクションでこれだけのログが出る。
イベント名と簡単な説明が表示される。イベント名はカテゴリごとに色分けされている。
またイベント名と実際のイベントクラス名が異なる場合(親クラスのイベントハンドラは子クラスのイベントも拾うので、その場合)は、
画像の2行目のようにイベント名の後ろに実際のイベントクラス名が表示される。
導入
導入方法は簡単。EventCatchAll.jarファイルをダウンロードして、Spigotのpluginsフォルダに入れるだけ。
Spigotの1.8.3-R0.1-SNAPSHOTで動作確認済み。
EventCatchAll.jar - 15KB
使用
プラグインを導入してサーバーを起動するだけで、あらゆるイベントを全体チャットで表示し始める。
通常のワールドではログが多すぎて使い物にならないので、上記画像のようなフラットワールドを準備するのがお勧め。
このプラグインには、「イベントの非表示条件」を設定することができる。
不要なイベントを非表示にすることで目的のイベントを確認しやすくできる。
非表示条件は以下のコマンドで設定する。(pluginsフォルダ下のconfig.ymlを直接編集して/reloadしてもいい。)
※PlayerMoveEventを非表示条件に追加・削除する場合の例 /event add PlayerMoveEvent PlayerMoveEventを表示しないようにする。大文字と小文字は区別しない。 非表示条件は先頭一致で判定するので、フルネームを記載する必要はない。引数は複数指定できる。 /event del PlayerMoveEvent PlayerMoveEventを非表示条件から削除する(表示されるようになる)。 大文字と小文字は区別しない。引数は複数指定できる。 /event show 現在設定されている非表示条件の一覧を表示する。 /event save 現在設定されている非表示条件を、ファイル(config.yml)に保存する。次回以降起動時にも自動的に読み込まれる。 ※本コマンドを実行しないと設定を変更しても保存されないので注意。 /event load 現在ファイル(config.yml)に保存されている非表示条件を読み込む。
なお、あまりにも煩雑に出すぎる4つのイベント(VehicleUpdateEvent, PlayerMoveEvent, BlockPhysicsEvent, PlayerAnimationEvent)は、
あらかじめ非表示条件に設定してある。上記コマンドで確認/削除できる。
非表示条件に合致したイベントは、ゲーム画面には表示されなくなるが、サーバーコンソールには表示される。
ソースコード
改造したい人向け。
EventCatchAll.java - メインクラス
EventListener.java - イベントを捕まえるクラス
plugin.yml - プラグインの設定
config.yml - 動作設定。色名はChatColor列挙型の列挙子から選ぶ。
この記事を評価
この記事にコメント
- ...