【改】Bukkit・Spigotプラグインを作る方法<パーミッション編>
こんにちは、てれるんです!
今回は「【改】Bukkit・Spigotプラグインを作る方法」のパーミッション編となります!
前回の記事はこちらから、このシリーズの一覧はこちらから飛べますので、良ければそちらもご覧ください!!
パーミッションって何?
まずは、「パーミッションって何か」を説明しますね。
パーミッションは、コマンドを実行したり、何かの動作をするときにプレイヤーを権限毎に管理をするために必要なものになってます。
所謂OP権限の詳しく設定できる版みたいな感じです。
(まぁこの記事を見てる方々はパーミッションについて知ってる方が多いと思うのであんまり説明する必要はなかったかもしれない。。。)
因みにパーミッションを設定するには基本的にはLuckPermsなどのパーミッション管理プラグインを使うのが無難です。
パーミッションを持っているか確認してみよう!
パーミッションを確認するためには、PermissibleインターフェースのhasPermissionメソッドを使用します。
Permissibleインターフェースは、すべてのエンティティ、CommandSenderに継承されているので、取得したプレイヤー等に対してhasPermissionを使用することができます。
以下がサンプルコードです。
パーミッションを新しく追加しよう!
パーミッションを持っているか判定出来たら、次はパーミッションを新しく追加してみましょう。
パーミッションを追加するには、plugin.ymlに特定の記述が必要です。
以下がサンプルコードです。
値の説明をちょっとしておきます。
commands内
permission
前回のコマンド解説の方で少しだけ触れたんですが、commandsにpermissionを追加することで、コード内にhasPermissionを使用せずともこちらで設定が可能になるってやつです。
permission-message
これは上記permissionを設定したときにパーミッションを持っていなかったら出るメッセージを設定するところです。
permissions内
testplugin.* とか testplugin.commands とか
パーミッションノードがこれになります。
description
パーミッションの説明が入力できます
default
パーミッションをデフォルトで誰が持っているかを設定できます。
値はtrue、false、op、not opを設定できます。
trueは誰でも、falseはパーミッション管理プラグイン側からのみ追加しないとダメ、opはOPなら誰でも、not opはOP以外なら誰でもという形になります。
children
パーミッションノードの親子関係を設定できます。
簡単に言うと、testplugin.commands.*をパーミッション管理プラグインで設定したときに、testplugin.commands以下のパーミッションノードをどれを親子関係に設定するかってのができます。
因みにtestplugin.commandsにtestplugin.commands.testをtrueで追加することで親で子を設定するように(つまりtestplugin.commandsの中にtestplugin.commands.test)ができて
testplugin.commands.testにtestplugin.commandsをfalseで追加することで子で親を設定するように(つまりtestplugin.commands.testの親をtestplugin.commandsにする)
って感じになります。
最後に
何かと必要になる中々大事なパーミッションの仕組みですが、絶対に実装をしないといけない時が来ると思います。
覚えていて損なことはないので、覚えておくといいかと思います。
それでは、てれるんがお送りしました!!
おやすみなさい!!!!