LoginSignup
4
1

mcrconを利用してpythonからminecraftサーバにコマンドを出力する

Last updated at Posted at 2022-04-04

mcrconについての記事が少なくて困ったので備忘録。

mcrconの導入

任意のコンソール(本記事ではgitbashを使う)で次のどちらかを行う。

詳しくは以下を参照して環境に合わせてインストールしてください。
https://pypi.org/project/mcrcon/

gitbash
pip install mcrcon
python -m pip install mcrcon

まず初めに準備

サーバ側のserver.propertiesを次のように書き換える
server.properties
      :
rcon.port=任意のポート番号      #約24行目 初期設定:rcon.port=25575 
      :
rcon.password=任意のパスワード   #約34行目 初期設定:rcon.password=minecraft
      :
enable-rcon=true         #約40行目 初期設定:enable-rcon=false
      :

rcon.port=ではポート番号の指定ができるが特に特別な理由がない限り25575にするのが無難だろう。
※もし考えるのがめんどうであればenable-rcontrueに編集すればよいだろう。

起動するpythonのファイルコードの頭に次のように記述(本記事ではファイル名をcmd.pyとしている)
cmd.py
import mcrcon from MCRcon            #mcrconのインポート
server_address = "サーバのアドレス"  #マルチプレイするときに入れるアドレス 
server_pass = "任意のパスワード"     #server.propertiesと同じパスワード
server_port="任意のポート番号"       #server.propertiesと同じポート番号

プログラムの解説

cmd.py
with MCRcon(server_address, server_pass, server_port) as mcr:
    cm=input("起動したいコマンドを入力してね!")
    log=mcr.command(cm)
    print(log)
入力(例)
/stop
出力(例)
stopping server!

出力と同時にサーバが止まります。

解説

server_addresserver_passserver_port まず初めに準備で設定した値が入る。
with MCRcon(~) as mcr: MCRcon(~):で接続したいサーバに接続します。 with ~ as mcr:で~の処理をmcrという変数にします。
mcr.command() ここでminecraftサーバのコンソールに打つようなコマンドを実行できます。

今回の場合は入力したコマンドを実行します。
実行結果を出力してくれるので(log=はなくても実行できます)今回はlogに入れて出力しています。

コード全体像
cmd.py
import mcrcon from MCRcon            #mcrconのインポート
server_address = "サーバのアドレス"  #マルチプレイするときに入れるアドレス 
server_pass = "任意のパスワード"     #server.propertiesと同じパスワード
server_port="任意のポート番号"       #server.propertiesと同じポート番号

with MCRcon(server_address, server_pass, server_port) as mcr:
    cm=input("起動したいコマンドを入力してね!")
    log=mcr.command(cm)
    print(log)

最後に

今回はコマンドを出力する方法しかわかりませんでした。

他にもできることがわかり次第記事を書いていきたいのでコメントくださるとうれしいです。

参考

https://blog.takunology.jp/entry/2019/08/24/070219
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1