仲間内でMinecraftサーバを立てて、一緒に遊んでいる場合、誰かのPCをホストにする場合は、WindowsPCをホストとして起動することもあると思います。
その場合、メモリの割り当てが初期設定だと少ない(jdkのバージョンによって異なる)ので、動作が重いなぁと感じてしまうことでしょう。
なので、サーバの起動にバッチファイルを作るのは常套手段となっていますが、私はついでにバックアップを取得しておくことにしました。
コード
以下実際のコードです。これをテキストエディタで保存し、拡張子を.batに変更してダブルクリックで起動できます。
後述するconfファイルがないとエラーになりますので、minecraftのサーバ本体が置いてあるフォルダにconfファイルも作成してください。
@ECHO OFF
@setlocal enabledelayedexpansion
cd /d %~dp0
SET CONFFILE_NAME=start_minecraft_server.conf
FOR /F "usebackq delims== tokens=1,2" %%a IN (%CONFFILE_NAME%) DO SET %%a=%%b
SET /P ANSWER="サーバを起動します。よろしいですか (Y/N)?"
if /i {%ANSWER%}=={y} (goto :startserver)
if /i {%ANSWER%}=={yes} (goto :startserver)
goto :backup
:startserver
echo %XMS%
echo %XMX%
"C:\Program Files (x86)\Minecraft Launcher\runtime\jre-x64\bin\java" -Xms%XMS% -Xmx%XMX% -jar server.jar
PAUSE
:backup
SET /P ANSWER="バックアップを取得します。よろしいですか (Y/N)?"
if /i {%ANSWER%}=={y} (goto :startbackup)
if /i {%ANSWER%}=={yes} (goto :startbackup)
EXIT
:startbackup
SET BACKUPDIRNAME=!BACKUP_PATH!\world
SET /a srcNum=%SAVEGEN%
SET /a dstNum=!srcNum!+1
SET oldBackup=!BACKUPDIRNAME!_!dstNum!
REM 保存世代数より1世代古いバックアップがある場合、削除を行う。
if exist %oldBackup% (
rd /s /q %oldBackup%
)
for /l %%c in (1, 1, %SAVEGEN%) do (
if exist !BACKUPDIRNAME!_!srcNum! (
robocopy !BACKUPDIRNAME!_!srcNum! !BACKUPDIRNAME!_!dstNum! /E /DCOPY:T 2>&1 > nul
rd /s /q !BACKUPDIRNAME!_!srcNum!
)
set /a srcNum=!srcNum!-1
set /a dstNum=!srcNum!+1
)
ECHO バックアップを取得しています・・・
robocopy world %BACKUPDIRNAME%_1 /E /DCOPY:T 2>&1 > nul
ECHO バックアップの取得が完了しました。
ECHO 保存世代数より古いバックアップを削除しています。
if exist %oldBackup% (
rd /s /q %oldBackup%
)
PAUSE
以下がconfファイルです。start_minecraft_server.confという名前で作成してください。
SAVEGEN=3
BACKUP_PATH=<バックアップ取得先>
XMS=4G
XMX=4G
説明
confファイルで設定できる設定の説明です。
SAVEGEN : バックアップを取得する世代数を指定します。3 としておけば自動的に3世代取得できます。
BACKUP_PATH: バックアップの取得先をフルパスで指定してください。私は家にあるNASのパスを指定しています。(SMBでのネットワーク経由の取得も可能)
XMS: メモリ割り当てプールの初期値を指定します。4Gとした場合、4Gのメモリを初期値として割り当てます。
XMX: メモリ割り当てプールの最大値を指定します。4Gとした場合、4Gまでのメモリが割り当てられます。
XmsとXmxを同じにした場合は割り当てるメモリを固定化できます。
Minecraftを遊ぶ程度ならヒープなどのチューニングは基本的に不要かと思います。
また、スクリプト内の「C:\Program Files (x86)\Minecraft Launcher\runtime\jre-x64\bin\java」という部分は、インストールしたときの環境によるので、変更が必要な場合があります。
Minecraftをインストールしたときのjava runtimeの探し方
いつもMinecraft Luncherを用いて起動している場合、以下の手順で場所を特定します。
まずMinecraft Luncherのアイコンを右クリックし「プロパティ」を開きます。
以下の画面が開いたら「ファイルの場所を開く」をクリックします。
ファイルの場所を開くと、Minecraft Luncher.exeが置いてあるフォルダが表示されるので、[runtime] – [jre-x64] – [bin]を開きます。(36bit版の場合は表記が異なる場合があります。)
binフォルダまで来たらその中に「java.exe」があることを確認します。
確認したら、エクスプローラのアドレスバーから現在のフォルダパスをコピーして、先ほどのバッチスクリプトの該当箇所に貼り付けます。
コメント