LoginSignup
2
1

More than 1 year has passed since last update.

SpigotプラグインにおけるTagを用いた処理の制御

Last updated at Posted at 2022-06-24

最初に

今回はいつものダラダラ解説ではないです。

Tagを用いて処理の実行を制御する

Tagの操作

処理の条件にはTagを使いましょう。
裏側でファイルやデータベースを用いて判定してもいいですが、なにかと用意が面倒くさいと思います。
というわけでマインクラフトに搭載されているTagという機能を使って処理の制御をしてみましょう。

Tagの付与

Tagの付与は簡単です。

player.addScoreboardTag("Tag名");

で付与することができます。
付与することのできるTag名には一部使うことのできない記号があるので注意しましょう。

マインクラフト側からでは空白、/は使用することができないのでプラグインでも同じだと思われます。
またこれら以外にも使えない文字があると思われます

Tagの取得

TagはSetに格納されているのでListのように番号を指定して取得することができません。
toArrayなどを用いれば全要素の取得をすることができます。

Tagの存在確認

タグ名が明確に分かっている場合は

Set Tags = player.getScoreboardTags();
boolean TagExist = Tags.constains("確認したいTag名");

のようにして論理型で取得することができます。

Tag名が分からない場合にはforとtoArrayを用いて一つずつindexOfなどの処理を通していくことになるかと思います。

Tagの削除

Tagを削除するときは

player.removeScoreboradTags("Tag名");

で削除することができます。

Tagの利用

TagはOP権限のないプレイヤーからは取得、変更することができない上にサーバーから抜けても情報が保持されるので使い勝手は極めて良いと言えます。
私が作成しているGUIメニュープラグインではどのページを開いているかをTagを用いて取得しています。

Tagの個数上限は1エンティティにつき1024個なので使い切ることはないと思いますがむやみやたらに付与すると(多分)大変なことになるので気を付けましょう。

さいごに

みなさんもTagを用いて楽々プラグインづくりをしてみませんか?
それでは良いプラグインライフを~

追記

追記 2022/10/01
(ストックされていたので最近思うことを少し。)
タグを使うのは良いですが、出来るだけプラグイン側でデータを保持するようにしましょう。
(HashMapを使うなり、コンフィグファイルを使うなど。)
タグの衝突が発生する確率がゼロではないので危険です。
それにHashMapなどに入れれば検索や取り出しが簡単になるので、ぜひ活用してステップアップしましょう。

それでは。

-坂木啞ルカ-

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1