はじめに
最近(2022/6/8)、Minecraftに1.19アップデートが来たため新たにサーバーをたててフレンドと遊ぶことになった。
その時「/time set day」や「/weather clear」といったコマンドを打つことが多くあり、いちいちプレイを止めて入力するのは面倒くさいと思っていたところ、目の前にあるStreamDeckが目につき「ボタン1つでコマンド送信出来たら便利では?」と思い調べたところ、Minecraftにはもともとrconという通信機能が備わっており設定すればPythonからでも扱えることが分かったため作ってみました。
環境
Minecraft server 側
- CentOS(さくらVPS)
- Minecraft server 1.19
クライアント側
- Windows 10
- Python 3.8.2
機材
- StreamDeck 15ボタン (https://www.elgato.com/ja/stream-deck)
概要
①サーバー側の設定
②プログラムの作成
③StreamDeckに適応
①サーバー側の設定
server.propertiesの変更
サーバーを作成すると生成されるserver.propertiesファイルを変更しrconを利用できるようにする。
変更の仕方等は既にサーバーを立てている御方々には不要だと思うので変更する部分だけを紹介します。
- まずrcon通信に利用するポート番号の指定
rcon.port=25575
初期設定は25575になっている、特に希望がなければそのままでOK
ここで設定したポート番号で通信が行われるためファイアウォール等設定している場合は各々ポート開放などを行ってください。
- rcon通信時に必要なパスワードの設定
rcon.password= "任意のパスワード"
初期設定は"minecraft"もしくは空欄になっている(?)、ここで設定するパスワードが今後必要になるため任意のパスワードを設定してください。
- rconを有効にする
enable-rcon= True
初期設定はFalseのためTrueに変更する。
以上でサーバー側の設定は終了。
②プログラムの作成
今回はPythonでrconを行うライブラリmcrconを使用するためインストールをします。
pip install mcrcon
続いてコードを書いていきます。
from mcrcon import MCRcon
server_address = "サーバーのIPアドレス"
server_pass = "任意のパスワード" #server.propertiesで設定したパスワード
server_port= 25575 #server.propertiesで設定したポート番号
with MCRcon(server_address, server_pass, server_port) as mcr:
mcr.command("/weather clear") #任意のコマンド
今回は晴れにするコマンド「/weather clear」の例を書きましたが、自分が使用したい任意のコマンドを記述してください。
このプログラムを実行するとコマンドが実行されるはずです。
StreamDeckから利用するため1つのコマンドに1つのexeファイルが必要になるため自分が必要なコマンド分上記のコマンド部分を変更した.pyファイルを用意してください
今回私は天候を晴れにするweather_clear.pyと時間を昼にするtime_set_day.pyの二つを用意しました。
③StreamDeckに適応
StreamDeckに最初から搭載されている任意のアプリを開くプラグイン(【システム】→【開く】)は.pyファイルには対応していないため、pyinstallerを用いてpyファイルをexeファイルに変換します。
pip install pyinstaller
ターミナル上で先程作成したpyファイルがあるディレクトリに移動し
pyinstaller weather_clear.py --onefire
と入力すると先ほどのディレクトリにdistディレクトリが生成され、その中にexeファイルが生成されています。
このファイルをStreamDeckのプラグインで開くように設定します。
右のプラグインから【システム】→【開く】を選び画面下部のApp/ファイル部分で先ほど生成されたexeファイルを選択します。
以上で作業は終了です、今作成したボタンを押せばサーバーにコマンドが送信され実行されすはずですのでご確認ください。
参考にさせていただいた記事
最後に
この環境を整えるまでは鯖主である自分がプレイ中orコンソールをいじれる場面でしかコマンドを入力できず、入力できる場面でもプレイ中断→入力といった手間があった。
しかし、今回StreamDeckのボタンワンぽちでコマンドを送れるようになったためパソコンの前にさえいれば実行できるようになった上、物理的なボタンを押すだけなので作業もほぼ中断せずサーバーの操作ができるようになったためだいぶQOLが向上した。