读取 level.dat:硬核模式状态、出生点以及你能实际修复的问题
硬核模式死亡在 level.dat 中只是一个布尔值。本文将介绍该文件包含的内容、损坏存档的表现形式,以及检查能恢复的真实局限。
level.dat 是每个世界文件夹根目录下的一个小型 gzip 压缩的 NBT 文件。它存储的是世界的设置而非地形,这使得它既是最有用的检查文件,也是最安全的探索文件。
文件内容
| 路径 | 存储内容 |
|---|---|
Data.LevelName | 世界列表中显示的名称 |
Data.hardcore | 1b 或 0b — 硬核模式标记 |
Data.Difficulty | 0 和平 → 3 困难 |
Data.allowCommands | 是否开启作弊 |
Data.SpawnX/Y/Z | 世界出生点 |
Data.Time / Data.DayTime | 总游戏刻和一天中的时间 |
Data.GameRules | 每个游戏规则(以字符串形式) |
Data.DataVersion | 最后一次写入的 Minecraft 版本 |
Data.Player | 单人世界中的玩家数据 |
DataVersion 是人们容易忽视但对故障排除最重要的一个:它告诉你世界是否已在较新版本中打开过,这通常是不可逆的。
硬核模式标记
硬核模式并非一种独立的世界类型。它只是 Data.hardcore: 1b 加上难度锁定为困难。当你死亡时,游戏不会更改文件——它只是拒绝让你重生。
所以“我能解除一个已死亡世界的硬核模式吗?”是一个合理的问题,答案是该标记可以编辑,但这是一种修改,而非检查。读取文件的工具可以显示该标记;更改它意味着写回 NBT,这会带来文件损坏的风险。务必始终先备份世界文件夹。
损坏存档的表现形式
level.dat无法读取,level.dat_old存在 — 游戏会保留一个上一代的备份。将level.dat_old重命名为level.dat可以恢复世界,但会丢失最近一次会话的数据。这种方法成功的几率远高于人们的预期。- 世界加载,但区块缺失或显示为黑色 — 这是
region/*.mca中的区域文件损坏,而非level.dat的问题。这是不同的问题,需要不同的工具。 - 世界根本不出现在列表中 — 通常是
level.dat缺失或大小为零字节。在做任何其他操作之前,请先检查level.dat_old。
检查无法做到的事
读取存档文件无法恢复:
- 因死亡或消失而丢失的物品
- 从未生成的区块
- 已删除的世界文件夹
这里没有任何一项是恢复服务。该工具显示文件所说的内容;它不会重建文件不再包含的内容。
玩家数据
在单人模式中,Data.Player 存储玩家的物品栏、位置、经验和生命值。在多人模式中,每个玩家都是 playerdata/ 中一个独立的 .dat,以 UUID 命名——这就是为什么单人世界转换为服务器后会“丢失”你的物品栏。它仍然在 level.dat 中,只是不在服务器查找的位置。
使用 World Save File Inspector 在浏览器中打开 level.dat、玩家 .dat,或检查硬核世界的状态——所有解析都在你的浏览器中进行,无需上传。