sashimi4’s diary

日々の雑多なメモを書きます

Minecraft Java サーバーのMOTDに文字化けさせずに日本語を入れる

MOTD は Message Of The Day の略ですが, ゲームサーバではサーバ名の表示欄として利用されることが多いですね. Minecraft Java サーバーの MOTD は, マルチバイト文字を入力してサーバーを起動すると設定ファイルが勝手にUnicodeエスケープされるようですが, どうも日本語だとうまくエンコードできず文字化けしてしまいます. バグでしょうかね.

なので自分でUnicodeエスケープする方法を示しておきます. PHPで書かれたエンコードツールも存在していますが, OSにバンドルされている python を使うのがスマートだと思います.

以下のコマンドをシェルにコピペすれば設定できると思います.

MOTD='ここにあなたの好きな文字列を入れます。シングルクォートは残してください。'

# これは例です
MOTD='俺のサーバー'

# ディストリビューションによってはpythonのバージョンが異なるので有効な方を利用します
PYTHON=$(command -v python3 || command -v python)

# デフォルトの MOTD を削除します
# 設定ファイルのパスは環境により異なります!
sed -i "/^motd.*$/d" /opt/minecraft/server.properties

# MOTD をエスケープします
MOTD_ESCAPED=$($PYTHON -c "print('$MOTD'.encode('unicode-escape').decode())")

# 設定ファイルで MOTD を設定します
# sed を使うと記号が解釈されてしまう場合があるので echo で挿入します
# 設定ファイルのパスは環境により異なります!
echo motd=$MOTD_ESCAPED >> /opt/minecraft/server.properties

# あとはサーバーを再起動します(環境によりコマンドは異なります)

以上.