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 # あとはサーバーを再起動します(環境によりコマンドは異なります)
以上.