[Bukkitプラグイン制作講座-其之十二]MOBスポナーから湧いた敵か判定する2016/12/19HimaJyun前回の記事ではメタデータを取り扱いました。これを利用するとMOBスポナーから湧いた敵を簡単に判定出来るので、紹介しておきましょう。(小ネタかも知れませんがね)前回の記事は「[Bukkitプラグイン制作講座-其之十一]メタデータを扱う」です。サンプル君、どこ出身?MOBがスポナーから湧いたかどうかを判定したい、なんて状況はきっといずれ訪れる事でしょう。BukkitにはどうやらそのMOBがスポナーから湧いたかどうかを判定出来る機能はないみたいです。それを自分でやっちまえば良い、それがプログラミングです。実家はスポナー?スポナーからMOBが発生すると「SpawnerSpawnEvent」が発生します。答えが見えていますね。「SpawnerSpawnEvent」が発生した際に「こいつの実家はスポナーだぜ!!」と言う目印を付けてしまえば良いのです。もって、判定が必要な時にその目印があるかどうかを見る!!それだけ。目印メタデータの出番です。目印はメタデータを利用する事で管理をBukkitに丸投げしてしまいましょう。サーバが終了すると目印が消えますが、その程度は無視して構わないでしょう。ダチョウアルゴリズムって奴ね。実際にやってみる簡単すぎますね、簡単、楽勝ともいう。メタデータのキーはメタデータ使い方の記事に倣って定数化しておきます。&quot;50BC7B80-995A-498C-A589-2C79C8CCF80F&quot;;今回はキーの他プラグインとの衝突チェックはしませんので、UUIDを利用する事でそれを回避しようと思います。目印を付けるSpawnerSpawnEventでメタデータを付けるだけです。何でも良い));上の例ではメタデータの値にはtrueを指定していますが、これは実際には使わないので何でも良いです。booleanなら1bitで済むから早くなるかな?、と思ってtrueにしているだけですので。(未確認、Bukkitの実装によってはそうじゃないかも)目印を確認するメタデータがあるかどうか、すなわち「hasMetadata」で確認するだけです。entity.hasMetadata(KEY);}超簡単、値なんて使わないぜ!!KEYが他のプラグインと同じだと衝突しますが、UUIDとかを使ってKEYの衝突をなくせば良しダチョウアルゴリズム万歳!!サンプルサンプルとして、エンティティ(と言うよりMOB)を殺害した際にスポナーから沸いたMOBであれば「このMOBはスポナーから沸いたMOBです。」そうでなければ「このMOBはスポナーから沸いたMOBではありません。