[教學] 使用 Minecraft Region Fixer 修復毀損 Chunk
在板上至少看到兩篇有關 chunk 毀損的討論,
卻沒有人提到 Minecraft Region Fixer(以下簡稱 MRF)真的很可惜,
MRF 需求:Python 2.7
如果第一次使用 MRF 基本上以前一定沒有備份檔,
因此 MRF 的用途就剩「刪除毀損 chunks」,
把 chunk 刪除後遊戲伺服器會根據地圖種子碼重新生成該 chunk。
MRF 使用方法很簡單,
首先先把 MRF 下載下來,我習慣用 git clone 的方式:
$ git clone https://github.com/Fenixin/Minecraft-Region-Fixer.git
不熟悉 Git 的人用瀏覽器下載 .zip 回來自己解壓縮也可以,
下載網址:https://github.com/Fenixin/Minecraft-Region-Fixer/releases
MRF 是一個 Python 腳本因此必須在命令列執行,
如果在 Windows 就是用「命令提示字元」,
在 Linux 則是用「bash」或其他系統自帶 Shell,
之後進入 Minecraft-Region-Fixer 的目錄:
$ cd Minecraft-Region-Fixer
MRF 可以單獨掃描 .mca 檔或掃描整個 World 資料夾,
World 資料夾就是 level.dat 所在的那個路徑,
假設有個 /usr/share/minecraft/my_world/level.dat 檔案,那我的指令就是:
$ python regionfixer.py /usr/share/minecraft/my_world
這個掃描不會進行任何修復動作僅僅顯示掃描結果而已,
如果選擇掃描整個 World 資料夾它還會一起檢查所有玩家 UUID.dat 及 data 資料夾,
但這兩個我都沒有壞過所以也不知道可以做到什麼程度的修復,
如果地圖很大掃描完所有檔案可能會花到半小時以上,
除非過了半小時畫面一點改變都沒有才嘗試關閉重新執行掃描,
掃描完後會給出一個結果,
如果都正常會是以下畫面:
================================================================================
Unreadable data files:
No problems found.
Chunk problems:
No problems found.
Region problems:
No problems found.
================================================================================
如果掃描結果發現 chunk 有毀損就會顯示類似下面這樣:
================================================================================
Unreadable player files:
No problems found.
Unreadable data files:
No problems found.
Chunk problems:
--------------------------------------------------------------------
| Problem | Corrupted Wrong l. Entities Shared o. Total chunks |
--------------------------------------------------------------------
| Counts | 644 1 0 3 21808 |
--------------------------------------------------------------------
Region problems:
No problems found.
================================================================================
其中 chunk 毀損又有分三種情形
1. Corrupted - chunk 本身資料毀損
2. Wrong located - chunk 在錯誤的座標出現
3. Shared offset - 兩個不同地方的 chunk 卻指到同一個 chunk 資料
由於 Minecraft 有一定容錯能力所以輕微毀損並不一定能在遊戲內發覺,
毀損的 chunk 還是可以蓋東西但伺服器重開機後就可能移位甚至直接消失,
針對以上三種毀損各自有三個刪除參數:
--delete-corrupted
--delete-wrong-located
--delete-shared-offset
刪除前請先備份好原始 World 資料夾避免誤刪任何玩家建築,
接下來真正執行刪除毀損 chunk,例如:
$ python regionfixer.py --delete-corrupted /usr/share/minecraft/my_world
刪除成功後建議再執行一次掃描確認所有結果都顯示「No problems found.」
最後重新啟動 Minecraft 伺服器,
當有玩家靠近的的時候伺服器就會重新生成該 chunk,
至此完成 chunk 修復。
最後的最後講講 chunk 毀損可能的原因以及日後該如何避免,
首先最可能造成 chunk 錯誤的就是伺服器不正常關閉,
例如引爆過多 TNT 導致伺服器無法回應、RAM 不足導致 Java 被系統 kill、或踢到插頭造成斷電,
凡是沒有讓 Minecraft 伺服器正常執行 save-all 儲存動作都可能導致 chunk 毀損,
為了避免日後再次發生毀損的情形,
唯一的解法就是勤備份,
如果有備份檔 MRF 可以從舊備份中將 chunk 還原覆蓋掉毀損的 chunk,
我自己的做法是每天早上 5 點會自動 copy 一份 World 資料夾,
然後用 MRF 檢查一次地圖有無毀損,
如果沒有毀損就正常封存,
這樣確保日後萬一發生毀損的時候上一份備份檔肯定是完好的,
其他 MRF 的詳細使用方法 GitHub 上面都有我就不贅述:
https://github.com/Fenixin/Minecraft-Region-Fixer/wiki/Usage
文章有點長,感謝大家收看。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.118.17
※ 文章網址: https://www.ptt.cc/bbs/Minecraft/M.1499693723.A.D10.html
留言