Minecraft-Region-Fixer:一条命令完成区块数据修复的完整指南
【免费下载链接】Minecraft-Region-FixerPython script to fix some of the problems of the Minecraft save files (region files, *.mca).项目地址: https://gitcode.com/gh_mirrors/mi/Minecraft-Region-Fixer
凌晨上线,主世界突然多出一个地形大窟窿,房子只剩半截;服务器日志刷满Error parsing chunk data;两年心血悬在一线。Minecraft-Region-Fixer 就是冲着这种情况来的免费开源存档修复工具:它整档扫描区域文件,把坏掉的区块挑出来,只动坏块,其余数据一概不碰。
🧩 先对号入座:这是不是你能处理的毛病
| 损坏症状 | 可能原因 | 本工具能否处理 |
|---|---|---|
| 某片地形消失、房子悬空,其余区域正常 | 单个.mca区域文件里的区块损坏 | 能:替换、删除或抢救 |
日志反复出现Error parsing chunk data | 区块 NBT 数据读不出来 | 能:扫描会定位到具体区块坐标 |
| 实体标签缺失导致加载失败 | 区块缺Entities标签 | 能:直接补上标签 |
| 服务器周期性卡顿、实体数量爆炸 | 单区块实体超标 | 能:按阈值清理实体 |
| 游戏启动直接崩溃、存档目录整个丢失 | level.dat或.dat文件损坏、误删 | 帮不上:这类只能告警 |
游戏根本打不开、存档目录消失的情况,超出本工具的射程,本文不展开。
🦷 它是怎么看出毛病的
把一次修复想象成看牙:X 光片本身不替你拔牙,它只负责把问题照得一清二楚——是隐裂、错位还是蛀洞,片子上一目了然,然后再由你决定治疗方案。Minecraft-Region-Fixer 对存档干的就是这件事:逐文件逐区块地读,把每一处异常照出来。核心扫描逻辑就放在仓库的 regionfixer_core/scan.py 里,官方说明见 README.rst。
| 存档里的概念 | 对应到"看牙" |
|---|---|
.mca区域文件 | 一颗牙齿(约 512×512 格世界) |
| 区块(Chunk) | 一层牙质,16×16 格的地形数据 |
| NBT 数据 | 神经:游戏真正要读的内容 |
| 损坏区块 | 隐裂,照出来了但神经可能已坏透 |
| 位置错乱 / 共享偏移 | 错颌,牙齿长到了不该在的位置 |
| 实体超标 / 缺实体标签 | 蛀洞 / 漏做的根管记录 |
🛠️ 修复命令怎么选:四条路线对号入座
先把工具拿回来,依赖库仓库里已打包齐全:
git clone https://gitcode.com/gh_mirrors/mi/Minecraft-Region-Fixer cd Minecraft-Region-Fixer说白了:把代码下载到本地并进目录,nbt、progressbar 等依赖都已随仓库打包,不需要额外安装。
无论走哪条路线,第一条命令永远相同——只读扫描,不改任何数据:
python3 regionfixer.py /你的存档路径说白了:扫描该存档下所有.mca文件和level.dat,输出一份坏块清单,不写入任何东西;首次使用务必先跑这一步,想看全部参数就跑python3 regionfixer.py --help。
有旧备份:替换路线
适用场景:出事前做过备份的服务器或单人生存档。
python3 regionfixer.py --backups /备份目录 --replace-corrupted /你的存档路径说白了:--backups指向旧存档备份(多个目录用逗号分隔,逗号后不要加空格),工具从备份中把同一坐标的完好区块拷回来覆盖坏块,只写损坏区块,其余一个字节都不动。
⚠️ 红线:替换路线一次只能扫一个世界;备份目录必须指向有效的存档文件夹,否则一个块都换不成。
没备份:切除路线
适用场景:没有任何备份,只想让存档重新能开。
python3 regionfixer.py --delete-corrupted /你的存档路径说白了:清空损坏区块的数据并把位置标为"待生成",下次进游戏 Minecraft 会重新长出一片新地形,只删坏块,不碰健康区块。
代价:这一跑,那片区域的建筑就没了。想保住建筑,只有替换路线一条路。
数据没坏透:温和抢救路线
适用场景:扫描报告里是"损坏但能读出部分信息""区块存错了位置""缺实体标签"这三类,而不是彻底乱码。
python3 regionfixer.py --fix-corrupted --fix-wrong-located --fix-missing-tag /你的存档路径说白了:--fix-corrupted尽量从坏数据里榨出可用信息,--fix-wrong-located把区块挪回它数据里记录的坐标,--fix-missing-tag给缺标签的区块补上Entities标签。
红线:抢救只能"尽力而为",坏透的数据救不回来,跑之前先确认备份是新的。
实体爆满:清仓路线
适用场景:农场服或刷怪塔服,单区块实体堆到几百上千,服务器开始周期性卡顿。
python3 regionfixer.py --delete-entities --entity-limit 500 /你的存档路径说白了:清空单区块实体数超过阈值的区块里所有实体,默认阈值是 300;只删地上的怪和掉落物,箱子里的物品一根手指都不碰。
代价:该区块所有生物和掉落物清零,刷怪塔的"库存"一并消失。
🤔 动手前,先回答这几个问题
什么时候做备份?
任何带--delete-*或--replace-*的命令跑起来之前,把整个存档文件夹原样复制一份,哪怕只拷到桌面。README 里这句警告写得很重:MAKE A BACKUP OF YOUR WORLD BEFORE RUNNING it。
Python 版本有要求吗?
工具只认 Python 3.x,用 Python 2 启动会直接提示 "only works with python 3.x" 并退出,换成python3命令即可。
哪些参数必须成对使用?
--replace-corrupted必须搭配--backups,少一个,程序会直接报错拒绝执行——这是保护机制,不是 bug。反过来,--backups单独出现、不带任何--replace-*选项,同样会被拦下。
备份路径填错了怎么识别?
扫描会正常跑完,但输出里出现[WARNING] No valid backup directories found,最终替换数为 0。别只盯"扫描完成",盯这句警告和替换计数。
实体阈值怎么定?
默认 300(--entity-limit)。有刷怪塔、大型农场的服先调到 500 跑一遍,观察报告再决定,别一上来就用默认值清全场。
⚡ 再往前一步
批量体检多个世界:把每个存档路径写进一个 txt(每行一个路径,#开头是注释,支持通配符),然后:
python3 regionfixer.py --text-file-input worlds.txt --replace-corrupted --backups /备份目录说白了:一条命令扫完列表里的所有世界并执行替换,省去逐个敲路径。
留一份可对比的报告:加-l 报告.log,每个坏块的区域文件名、区块坐标、毛病类型都会落盘;名字写-就在屏幕末尾直接打印。注意-l不能和--replace-*、--delete-*同时使用。
大存档提速:-p 4让 4 个进程并行扫描,几万区块的世界肉眼可见地变快,默认是 1(单进程)。
不想敲命令:跑python3 regionfixer.py之外的图形版python3 regionfixer_gui.py,基于 wxPython 的窗口界面能完成同样的扫描与修复操作,需要另外安装 wxPython。
局限与口诀
先把丑话说完:Minecraft-Region-Fixer 只修"区块和区域文件"这一层。level.dat或玩家.dat文件损坏,它只能打印警告,不会替你修;游戏启动直接崩溃这类情况,得先查这两个文件,而不是先跑修复。
记住口诀:先扫、再拷、再选路。
【免费下载链接】Minecraft-Region-FixerPython script to fix some of the problems of the Minecraft save files (region files, *.mca).项目地址: https://gitcode.com/gh_mirrors/mi/Minecraft-Region-Fixer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考