作者shikendon (Shi-Ken Don)
看板Minecraft
标题[教学] 使用 Minecraft Region Fixer 修复毁损 Chunk
时间Mon Jul 10 21:35:17 2017
在板上至少看到两篇有关 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://webptt.com/cn.aspx?n=bbs/Minecraft/M.1499693723.A.D10.html
1F:推 error405: 专业推 07/10 21:40
2F:推 HMKRL: 推 不过介绍这种需要command line的工具真的很麻烦... 07/10 22:32
3F:→ HMKRL: 会的觉得很简单 没用过的光装python设PATH就烦死了 07/10 22:33
4F:推 Roentgenium: 推 07/11 01:53
补充一下可能会有些人觉得明明用地图编辑器也可以修复,
如果知道问题 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
5F:推 eagle0917: 作者最近出GUI了 07/26 02:14
喔喔!原来作者自己有出 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