解读 level.dat:极限模式状态、出生点,以及你真正能修复的东西
极限模式下的死亡不过是 level.dat 里的一个布尔值。本文介绍这个文件里都存了什么、存档损坏是什么样子,以及检查能恢复什么——以及它诚实的极限,游玩规则现在移到了 game_rules.dat 中,不再存在 level.dat 里面。
level.dat 是每个世界文件夹根目录下一个小小的 gzip 压缩 NBT 文件。它保存的是世界的设置而非地形,因此它既是最值得检查的文件,也是最不怕你好奇去翻看的文件。
里面都有什么
| 路径 | 内容 |
|---|---|
Data.LevelName | 世界列表中显示的名称 |
Data.difficulty_settings.hardcore | 1b 或 0b —— 极限模式标志 |
Data.difficulty_settings.difficulty | peaceful → hard,旁边还有一个 locked 标志 |
Data.allowCommands | 是否开启作弊 |
Data.spawn | 世界出生点:pos、dimension、yaw、pitch |
Data.Time | 总刻数(当前时间现在存放在 data/minecraft/world_clocks.dat 中) |
Data.DataVersion | 最后写入它的 Minecraft 版本 |
Data.singleplayer_uuid | 哪个玩家文件属于单人存档的所有者 |
游戏规则也不再放在这里了——它们已移到同一世界文件夹下的 data/minecraft/game_rules.dat。
DataVersion 是人们最容易忽略、却在排查问题时最关键的一项:它会告诉你这个世界是否已经在更新的版本中被打开过,而这一般是不可逆的。
极限模式标志
极限模式并不是一种独立的世界类型。它就是 difficulty_settings.hardcore: 1b 加上难度设为困难,再加上 locked。当你死亡时,游戏并不会改动文件——它只是不让你重生。
所以“我能把一个已死亡的世界解除极限模式吗”是个合理的问题,答案是:这个标志确实可以编辑,但那是修改,不是检查。读取文件的工具能给你看这个标志;要改动它就意味着把 NBT 写回去,而这会让文件面临风险。务必先备份世界文件夹。
存档损坏是什么样子
level.dat无法读取,level.dat_old存在 —— 游戏会保留一份上一代的备份。把level.dat_old重命名为level.dat,就能恢复这个世界,只是会丢掉最近一次游戏会话。这招奏效的频率远高于人们的预期。- 世界能加载,但区块缺失或一片漆黑 —— 那是
region/*.mca中的区域文件损坏,不是level.dat的问题。不同的问题,不同的工具。 - 世界压根不出现在列表里 —— 通常是
level.dat缺失或为零字节。先检查有没有level.dat_old,再考虑别的。
检查做不到的事
读取存档文件无法找回:
- 因死亡或消失而丢失的物品
- 从未生成过的区块
- 已被删除的世界文件夹
这里没有任何东西是恢复服务。工具只展示文件里写着什么;它无法重建文件里已经不存在的内容。
玩家数据
每个玩家——包括单人存档的所有者——都是 players/data/ 中一个独立的 .dat,以 UUID 命名,保存着物品栏、位置、经验和生命值。level.dat 只记录这些文件中哪一个属于所有者(singleplayer_uuid)。如果你把世界迁移到服务器后觉得物品栏丢了,去那里找你 UUID 对应的文件,而不是在 level.dat 里找。
打开一个 level.dat、一个玩家 .dat,或者查看某个极限模式世界的状态——全部在浏览器中解析,不上传任何内容——请使用 世界存档文件检查器。