server-icon.png: 厳密な要件と、誰も使わない管理API
64x64、PNG、サーバーのルートに配置 — この3つのうちどれか1つでも間違っていると、アイコンは表示されません。さらに、コンソール画面のスクレイピングに代わるJSON-RPC管理APIについても解説します。
サーバーアイコンは、Minecraftの小さな機能の中で最も融通が利かないものです。なぜなら、すべての失敗パターンが同じに見えるからです。アイコンが表示されず、エラーも出ません。
3つの必須要件
- 正確に64×64ピクセル。 63でも128でもありません。サーバーはリサイズしません。
- PNG形式。 実際にPNGであること。名前を変更したJPGではありません。
server-icon.pngという名前で、サーバーのルートに配置 —server.propertiesの隣に置き、ワールドフォルダの中には入れないでください。
これらのうちどれか1つでも間違っていると、サーバーは正常に起動し、デフォルトのアイコンが表示されます。デフォルトのログレベルでは何も記録されません。
他にもアイコン表示を妨げるもの
- インターレースPNG。 一部のエディタはデフォルトでインターレース形式で保存しますが、Minecraftのリーダーはこれを拒否します。非インターレース形式で再エクスポートしてください。
- 16ビットの色深度。 チャンネルごとに8ビットで保存してください。
- カラープロファイル。 埋め込みのICCプロファイルがパーサーを時々誤作動させることがあります。エクスポート時にメタデータを削除してください。
- 透過は問題ありません。サーバーリストで正しくレンダリングされます。
クライアントがキャッシュする
一度クライアントがあなたのサーバーを見た後、そのアイコンを保持します。サーバー側で変更しても既存のエントリは更新されません — プレイヤーはサーバーを削除して再追加するか、キャッシュの期限切れを待つ必要があります。自分のクライアントからアイコンの変更をテストすると、実際には機能しているのに機能していないと誤解することがあります。
管理API
最近のサーバーバージョンでは、JSON-RPC管理インターフェースが公開されています。これは、コンソール出力を解析したり、プラグインを組み込んだりする代わりに推奨される方法です。
server.propertiesで有効にします。
management-server-enabled=true
management-server-host=localhost
management-server-port=25585
その後、そのポートでJSON-RPCを介して通信します。
{ "jsonrpc": "2.0", "id": 1, "method": "minecraft:players" }
メソッドは、プレイヤーリスト、サーバーの状態、許可リストと禁止リスト、ゲームルール、設定、そして保存/停止のペアをカバーしています。それぞれ、正規表現で解析する必要があるテキスト行ではなく、構造化されたJSONを返します。
localhostにバインドする
デフォルトはlocalhostであり、そのままであるべきです。このインターフェースはインターネットに公開されることを意図していません — これにアクセスできるものは何でもサーバーを停止させることができます。リモートアクセスが必要な場合は、SSHトンネルまたは認証付きのリバースプロキシを介して公開し、ホストを0.0.0.0に変更してはいけません。
なぜそれが重要なのか
ダッシュボード、Discordボット、稼働時間モニターは、これまでコンソールログを読み取ったり、RCONを使用したりしていましたが、どちらも不安定でした。型付きAPIは、ログ行の形式が変わってもプレイヤー数ウィジェットが壊れないことを意味します。
任意の画像を準拠するserver-icon.pngに変換し、Server Icon & API ToolsでJSON-RPCメソッドを参照してください。