Minecraftのサーバ(spigot)で「ChunkNibbleArrays」エラーが出たときの対策

Minecraft,ゲーム,技術

この記事は2017年10月11日に書かれたものです。ご注意ください。

Minecraftで以下のエラーが出てサーバが落ちる現象が解決したので、メモ。

java.lang.IllegalArgumentException: ChunkNibbleArrays should be 2048 bytes not: 0
    at net.minecraft.server.v1_12_R1.NibbleArray.<init>(NibbleArray.java:14)
    at net.minecraft.server.v1_12_R1.ChunkRegionLoader.a(ChunkRegionLoader.java:402)
    at net.minecraft.server.v1_12_R1.ChunkRegionLoader.a(ChunkRegionLoader.java:94)
    at net.minecraft.server.v1_12_R1.ChunkRegionLoader.loadChunk(ChunkRegionLoader.java:72)
    at org.bukkit.craftbukkit.v1_12_R1.chunkio.ChunkIOProvider.callStage1(ChunkIOProvider.java:21)
    at org.bukkit.craftbukkit.v1_12_R1.chunkio.ChunkIOProvider.callStage1(ChunkIOProvider.java:1)
    at org.bukkit.craftbukkit.v1_12_R1.util.AsynchronousExecutor$Task.init(AsynchronousExecutor.java:150)
    at org.bukkit.craftbukkit.v1_12_R1.util.AsynchronousExecutor$Task.initAsync(AsynchronousExecutor.java:95)
    at org.bukkit.craftbukkit.v1_12_R1.util.AsynchronousExecutor$Task.run(AsynchronousExecutor.java:85)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

下準備

GitHubへアクセスして緑色のボタン「Clone or download」をクリックし「Download ZIP」でZIPをダウンロードする。そして適当な場所で解凍。

つぎにPythonを。ただし3.xだと動かないので2.xを必ずダウンロードすること(今回はPython 2.7.14を「Download Windows x86-64 MSI installer」から入手)。ダウンロードが終わったらインストールします。

インストールが完了したら、Windowsの「システムのプロパティー」から「環境変数」の設定で「Path」に「C:\Python27;」を最後尾に追加する。コレについては各自調べてくれ。
PythonのインストールとPathの設定が終わったら、コマンドプロンプトを起動して「python」と入力し、エンター。そうすると以下のログがでればインストール完了。

C:\Users\UserName>python
Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:25:58) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

作業

新しくコマンドプロンプトを起動して、以下のコマンドを入力し、エンター。

C:\Users\UserName>Python C:\foo\Minecraft-Region-Fixer-master\regionfixer.py -p 4 --delete-corrupted C:\bar\world

※最初の「C:\foo\Minecraft-Region-Fixer-master\regionfixer.py」はGitHubからダウンロードしたファイルの解凍場所に合わせてください。
※最後の「C:\bar\world」は壊れたデータの場所に合わせて下さい。ただし必ずバックアップを取って下さい(壊れた箇所を削除しますので)。

うまくいくと、以下のようなログがでます。

もしエラー箇所がなければ以下のログが出ます。

############################################################
################# Scan results for: world ##################
############################################################
Unreadable player files:
No problems found.

Unreadable data files:
No problems found.

Chunk problems:
No problems found.

Region problems:
No problems found.

No chunks to delete with status: Corrupted

これで解決しない場合は… 頑張って下さい。宜しくお願いします。