如何解决Minecraft基岩WIN10世界由于缺少db / MANIFEST文件而损坏
我最近遇到了一个非常具体的问题,该问题导致了我的世界minecraft基岩世界被破坏了(实际上,我的世界中缺少了大块)。原来,问题是因为我使用的是通过7zip使用以下命令创建的备份:
7z.exe a -r minecraftWorlds.7z %LOCALAPPDATA%\Packages\Microsoft.minecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\minecraftWorlds\*.*
…这不是在没有扩展名的情况下添加文件,尤其是MANIFEST
目录中的{worldID}/db
文件。
我不得不卸载Windows 10的minecraft,该版本删除了所有资源包并保存了世界,但是我认为我很好,因为我有一个每天进行备份的脚本。因此,我重新安装了minecraft并还原了备份,然后加载了我的世界,就像我说的那样,我的世界中只剩下了整整一块。
因此,我创建了一个新世界,并将其保存文件夹与还原的文件夹进行了比较,那时我注意到我的世界缺少MANIFEST
子目录中的/db
文件。
在我的调查中,我发现了很多针对损坏的世界的修复程序,但它们都与损坏的level.dat
文件有关,与db
目录中丢失的文件无关。
由于缺少MANIFEST文件,像MCCToolchest这样的工具都无法打开世界数据文件。
那么有什么事要做吗?
解决方法
首先,使用7-zip备份Minecraft Bedrock(Windows 10)世界的正确命令是:
7z.exe a -r minecraftWorlds.7z %LOCALAPPDATA%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\minecraftWorlds\*
…最后没有“。*”。这将创建存储在minecraftWorlds目录中的所有文件的备份。
我做的研究越多,看来《我的世界》世界数据是以称为leveldb
的数据库格式保存的。这是一个基于键/值对的数据库,已加载到内存中并存储在{worldID}/db
文件夹中的一系列文件中。
以下是我能够恢复工作的MANIFEST
文件并恢复世界的方式!
您将需要POSIX操作系统。由于没有人,我通过Ubuntu 18.04 LTS安装了“ Windows-subsystem-for-linux”,可以从Microsoft Store应用免费安装。
一旦安装,配置并启动了此应用程序,基本上就会进入bash命令提示符。
- 首先,安装构建工具
sudo apt-get install git cmake g++ libsnappy-dev
- 下载并构建leveldb:
git clone --recurse-submodules https://github.com/google/leveldb.git
cd leveldb && mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build .
构建成功后,您将需要使用喜爱的linux编辑器创建以下c ++程序,并将文件另存为ldbrpr.cc
:
#include <cstdlib>
#include <leveldb/db.h>
int main(int argc,char *argv[])
{
if(argc==2)
{
leveldb::Options o;
leveldb::Status s=leveldb::RepairDB(argv[1],o);
return s.ok()?EXIT_SUCCESS:EXIT_FAILURE;
}
else return EXIT_FAILURE;
}
保存文件后,需要对其进行编译。
g++ -o ldbrpr ldbrpr.cc -lleveldb -lpthread -L ~/leveldb/lib -I ~/leveldb/include
执行此命令后,您应该找到一个名为ldbrpr
ls -las
您现在需要为每个保存世界的文件夹执行该程序。这是通过以下命令完成的:
./ldbrpr /mnt/c/Users/DEV/AppData/Local/Packages/Microsoft.MinecraftUWP_8wekyb3d8bbwe/LocalState/games/com.mojang/minecraftWorlds/{worldsavefoldername}/db
将{worldsavefoldername}替换为您要恢复的每个世界的文件夹名称。如果您没有运行Windows-子系统-Linux,则路径可能会有所不同。如果您在其他计算机或VM上运行这些命令,则需要将保存世界的文件夹复制到该实例。
现在,下一部分至关重要。 Minecraft使用专有版本的leveldb
,因此它似乎仅还原一个数据文件,并将所有其他数据文件放置在名为lost
的子目录中。
由于我们的数据文件实际上并未遭到破坏,因此只有我们的MANIFEST
文件在Windows资源管理器中打开每个世界的保存文件夹,并在db
子文件夹中删除*.ldb
文件,以及LOG
文件。这应该只剩下两个MANIFEST
文件和一个名为lost
的文件夹。现在,将所有文件从db\lost
文件夹复制回db
文件夹。
现在启动Minecraft,您的世界应该就好了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。