Minecraftサーバーを動かす知識

commands.ymlの設定

投稿:  By: HimaJyun

commands.ymlはコマンドの別名や上書きを設定するためのファイルです。

よく使うコマンドに短い別名を割り当てて使いやすくできます。

この記事ではSpigot 1.13.2で動作確認を行っています。バージョンによっては設定ファイルの設定項目が異なることもあるでしょう。

スポンサーリンク

古い設定

command-block-overridesignore-vanilla-permissionsは以前までのBukkitの名残です。

古いBukkitではバニラのコマンドと同じものをBukkitでも実装していたためこれらの設定があるのですが、すでにこれらの実装は削除されており今はバニラの実装を使っています。

そのため、設定が必要となるのはaliasesだけです。

設定

ここでは実際の設定例をいくつか紹介します。

別名を割り当てる

たとえば、/icanhasbukkit/versionの別名として割り当てる場合には次のように設定します。

aliases:
  icanhasbukkit:
  - "version"

この場合は/icanhasbukkitを実行すると/versionを実行した時と同じ結果が得られます。

コマンドを削除する

逆に/versionコマンドを削除して何も起こらないようにするためには次のように設定します。

aliases:
  version:
  - []

ちなみにですが、エイリアス機能はセキュリティ機能ではないため、/versionコマンドなどを実行できないようにするためにはパーミッションで設定しましょう。

コマンドを変更する

先ほどの2つの例を組み合わせることで、/version/icanhasbukkitに変更する事も可能です。

aliases:
  icanhasbukkit:
  - "bukkit:version"
  version:
  - []

この場合は/icanhasbukkit/versionと同じ処理が実行され、/versionでは何も起こりません。

引数を使用する

引数を使用してコマンドを実行する場合は次のように

aliases:
  diamond:
  - "give $$1 minecraft:diamond"

この場合は/diamond <プレイヤー名>で指定したプレイヤーにダイアモンドを与えます。

使用できる引数の書き方は後述します。

複数のコマンドを実行する

複数のコマンドをまとめて実行する場合は次のように設定します。

aliases:
  kk:
  - "kill $$1"
  - "kick $$1"

この場合は/kk <プレイヤー名>で指定したプレイヤーを殺害してkickします。

使用するコマンドを選択する

プラグインがBukkitやバニラと同じコマンドを提供しており、どちらを使用するか選択する場合は次のように。

aliases:
  tp:
  - "minecraft:tp $1-"

この場合は/tpコマンドを使用した際にバニラのtpコマンドを使用します。

コマンドの構文はプラグイン名:コマンド名で、たとえばプラグイン名がadmincmdの場合はadmincmd:コマンド名、Bukkitコマンドの場合はbukkit:コマンド名、バニラコマンドの場合はminecraft:コマンド名です。

引数の指定

引数には次のような設定が可能です。

修飾子説明
$<番号>指定した番号の引数say $1 $2 $3
$<番号>-指定した番号より後の引数say $1-
$$<番号>指定した番号の引数、必須say $$1
$$<番号>-指定した番号より後の引数、必須say $$1-
\エスケープsay \$100

いくつかの例を紹介しましょう。

次の例は/broadcast/sayを実行する例です。

aliases:
  broadcast:
  - "say $$1-"

送信するメッセージには空白を含む場合があるので、$$1-を使用しないと空白から後の部分の引数の番号が変わってしまうのため思ったように実行されません。

たとえば/broadcast おはよう こんにちは こんばんはを実行した際に、$$1だと「おはよう」の部分だけが引数として扱われてしまいます。

$$1-を使用すれば後続の文字も含まれるため、意図した通りに動作します。

次の例は1つの引数が必須、2つめ以降はオプションの引数を実行する例です。

aliases:
  bansay:
  - "ban $$1 $2-"
  - "say Banned $$1. Reason: $2-"

この場合は/bansay <プレイヤー名> [理由]でプレイヤーをBANし、BANしたことを他のユーザーに知らせます。理由があれば理由も表示されます。

ちなみに、$2-ではなく$$2-とすれば理由を必須にできます。

\はエスケープ記号です。$をコマンドの引数として渡したい場合は\$のように設定します。

aliases:
  dollar:
  - "say \$100 dollar"

参考