ホワイトリスト、BAN、OP——思った通りに動かないサーバーコマンド
ホワイトリストは enforce-whitelist を有効にしない限り既にオンラインのプレイヤーをキックしない、/ban は理由がないと役に立たない、そして OP レベルは OP リストより重要。サーバー管理者がつまずく細かい仕様。
管理コマンドは見た目どおりシンプルで、実際ほとんどはそのとおりです。問題が起きるのは、構文からは読み取れない3つの挙動によるものです。
ホワイトリストは、指示しない限り既存の接続者を排除しない
/whitelist on は新規ログインに対してリストの適用を開始します。すでに接続しているプレイヤーがキックされるかどうかは、server.properties の1行で決まります:
enforce-whitelist=true
デフォルトでは false であり、その状態ではリストにないプレイヤーは /whitelist on でも /whitelist reload でも接続したままです。true に設定すると、on、reload、remove のいずれも、リストにない接続中のプレイヤーをキックします。適用をオフにしたままホワイトリストを有効にして放置するのが、典型的なミスです。
さらに2つのポイント:
/whitelist add <name>はオンラインモードのサーバーでは Mojang の API に対して名前を解決します。オフラインモードのサーバーでは、その名前のオフライン UUID をホワイトリストに登録するため、whitelist.jsonを手で編集する必要はありません。- オペレーターはデフォルトでホワイトリストをバイパスします。 だから自分のアカウントではホワイトリストが機能しているか確認できません。2つ目のアカウントでテストしてください。
/ban には理由が必要で、/ban-ip は別のリスト
/ban <player> [reason]
/ban-ip <address|player> [reason]
理由は省略可能ですが、省略はミスです。それは BAN されたプレイヤーが見るものであり、将来の自分が「なぜ BAN したのか」を思い出そうとして /banlist で読むものでもあります。理由がなければ、エントリは「Banned by an operator」と表示されるだけです。
/ban と /ban-ip は別々のファイル(banned-players.json、banned-ips.json)に書き込まれます。片方を解除してももう片方は消えません。これが「BAN 解除したのにまだ接続できない」というよくある原因です。/pardon と /pardon-ip の両方を使ってください。
OP リストではなく OP レベル
/op はデフォルトでレベル4を付与し、/stop を含む完全なアクセス権を与えます。4つのレベルは実際に存在し、server.properties の op-permission-level で設定できます:
| レベル | 付与される権限 |
|---|---|
| 1 | スポーン保護のバイパス |
| 2 | ほとんどのチートコマンド、コマンドブロック |
| 3 | プレイヤー管理 — kick、ban、op |
| 4 | /stop を含むすべて |
/kick と /ban が必要なモデレーターに欲しいのはレベル4ではなくレベル3です。モデレーションを手伝う全員にレベル4を渡すのは、乗っ取られたアカウントによってサーバーが消し飛ばされる原因になります。
function-permission-level は別個の設定で、データパックの関数が何を実行できるかを制御します。OP レベルが4なのにこれが2のままだと、「自分の関数が何も動かない」というよくある原因になります。
リスト系コマンド
/banlist players、/banlist ips、そして引数なしの /banlist はすべて存在し、サーバーターミナルから実行した場合はチャットではなくコンソールに出力されます。/whitelist list は名前だけを表示し、UUID は表示しません。本人確認が必要なときは whitelist.json を読んでください。
これらのコマンドは、サーバー管理コマンドビルダーで引数を正しい順序に並べて作成できます。ban、ban-ip、pardon、kick、op、deop、whitelist を1つのフォームで扱えます。