【Minecraft】rcon-cliでサーバを制御する
こんにちは。かけです。
マイクラサークルハマクラさん主催の2024年アドベントカレンダー2日目の記事です。他の記事もぜひご覧ください。
RCONとは
RCON(Remote CONsole)とはゲームサーバをリモートで管理するためのもので、Minecraftにおいてはコマンドをリモートで実行し結果を受け取れます。
既にRCONに関しては別の方が本記事より丁寧にまとめられていますが、本記事ではitzg/rcon-cliを使用します。
rcon-cliとは
itzgさんがGo言語で開発されているRCON clientです。
既に述べたようにRCON clientには Tiiffi/mcrcon があり、こちらでも十分に機能します。
しかし、itzg/rcon-cliはconfigファイルで事前にホストやパスワードを準備しておける機能があるため実用性が高いです。と、便利ではあるもののそこまでの差があるわけではありません。必要がない方はmcrconで大丈夫です。
筆者はitzg/docker-minecraft-serverでサーバを構築しており、内部で利用されているRCON clientに興味を持ったためこちらを使用しています。
環境構築
Go言語がインストールされている必要があるため事前に準備しておきましょう。
README.md通りにgo getgo installでインストールしていきます。
go install go get github.com/itzg/rcon-cli@latest
上記のコマンドを実行すると、ホームディレクトリのgo/binに実行ファイルがダウンロードされているかと思います。
使ってみる
まずはヘルプを表示してみます。
~/go/binに移動して、以下のようにヘルプを実行してみます。
$ ./rcon-cli -h
rcon-cli is a CLI for attaching to an RCON enabled game server, such as Minecraft.
Without any additional arguments, the CLI will start an interactive session with
the RCON server.
If arguments are passed into the CLI, then the arguments are sent
as a single command (joined by spaces), the response is displayed,
and the CLI will exit.
Usage:
rcon-cli [flags] [RCON command ...]
Examples:
rcon-cli --host mc1 --port 25575
rcon-cli --port 25575 stop
RCON_PORT=25575 rcon-cli stop
Flags:
--config string config file (default is $HOME/.rcon-cli.yaml)
-h, --help help for rcon-cli
--host string RCON server's hostname (default "localhost")
--password string RCON server's password
--port int Server's RCON port (default 25575)
使い方を説明してくれました。--hostや--password --portでrconを接続する情報が入力できるだけでなく、--config(デフォルトでは~/.rcon-cli.yml)で接続情報を指定もできるようです。
# ~/.rcon-cli.yml
host: HOSTNAME
port: PORT
password: PASSWD
接続情報は上記のフォーマットで指定できます。
これで接続できたらMinecraftサーバへコマンドを送信できます。例えば、参加プレイヤーの一覧を表示するならば`list`などですね。