[教學] 使用 Minecraft Region Fixer 修復毀損 Chunk

看板Minecraft作者 (Shi-Ken Don)時間6年前 (2017/07/10 21:35), 6年前編輯推噓4(401)
留言5則, 4人參與, 最新討論串1/1
在板上至少看到兩篇有關 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

07/10 21:40, , 1F
專業推
07/10 21:40, 1F

07/10 22:32, , 2F
推 不過介紹這種需要command line的工具真的很麻煩...
07/10 22:32, 2F

07/10 22:33, , 3F
會的覺得很簡單 沒用過的光裝python設PATH就煩死了
07/10 22:33, 3F

07/11 01:53, , 4F
07/11 01:53, 4F
補充一下可能會有些人覺得明明用地圖編輯器也可以修復, 如果知道問題 chunk 在哪裡的話用 MCEdit 或 WorldEdit 也不失為個簡單方法, 但以我的經驗是常常只看到伺服器出現 chunk wrong location 的錯誤訊息, 並不知道問題 chunk 在哪,我也遇過用 MCEdit 修復好 chunk 以後重開機, 修復完的 chunk 卻跑到幾百米以外的地方,所以用外部工具掃描我覺得還是其必要性。 至於 command-line 麻煩,像 MCEdit 這種有能力出 Windows 又出 Mac 版的真的是少數, 大部分程式作者寫個 CLI 就已經竭盡全力沒有心力再做 GUI 介面, 除非有熱心人士幫忙寫個 GUI 介面不然這些工具大概就都會是這樣了吧。 ※ 編輯: shikendon (123.194.118.17), 07/14/2017 14:48:42

07/26 02:14, , 5F
作者最近出GUI了
07/26 02:14, 5F
喔喔!原來作者自己有出 GUI 在 gui 資料夾,感謝提醒。 另外我也在 Spigot 的教學文章看到有 Windows 平台的免安裝版 region-fixer.exe 但下載連結是 adfly 很煩所以我沒辦法確認載點是否還活著, Spigot 教學文章 https://www.spigotmc.org/wiki/using-the-minecraft-region-fixer/ ※ 編輯: shikendon (123.194.118.17), 07/28/2017 15:39:07
文章代碼(AID): #1POuARqG (Minecraft)