存档基础数据存储格式

2025-08-29 10:59:53 5299

本条目介绍的是Java版的存档基础数据存储格式。关于基岩版中有类似功能的文件及格式,请见“基岩版存档格式 § level.dat”。

本文章所述内容仅适用于Java版。

存档基础数据存储文件是存档的核心文件,存储各种存档基础信息、维度信息和世界生成信息。

目录

1 存储格式

2 存储行为

3 历史

4 导航

存储格式[编辑 | 编辑源代码]

存档基础数据存储文件位于<存档根目录>/level.dat。在不同情况下,此文件会有多个副本,见下文§ 存储行为。

存档基础数据存储文件使用GZip压缩的NBT文件格式保存,其内部有下列NBT结构:

根标签

**Data:存档基础数据。

*DataVersion:保存此存档基础数据存储文件的游戏的数据版本。如果此项不存在则游戏认为此项是-1。

*allowCommands:存档是否启用命令。如果此项不存在,则游戏判断GameType是否为1(创造模式)。如果是则为true,否则为false。

*BorderCenterX:世界边界中心的X坐标。如果此项不存在则游戏默认为0。

*BorderCenterZ:世界边界中心的Z坐标。如果此项不存在则游戏默认为0。

*BorderDamagePerBlock:超出边界安全区后,玩家每远离安全区一格增加的伤害值。如果此项不存在则游戏默认0.2。

*BorderSafeZone:超出边界后,玩家仍然不会受到伤害的安全区的宽度。如果此项不存在则游戏默认为5。

*BorderSize:边界宽度。如果此项不存在则游戏默认为59999968。

*BorderSizeLerpTarget:边界宽度过渡到的目标宽度。如果此项不存在则游戏默认为59999968。

*BorderSizeLerpTime:边界宽度的过渡时间。如果此项不存在则游戏默认为0。

*BorderWarningBlocks:玩家接近边界渲染出现红色警告框的最大距离。如果此项不存在则游戏默认为5。

*BorderWarningTime:当玩家接近边界距离小于边界过渡速度乘以此值时渲染出现红色警告框。如果此项不存在则游戏默认为15。

*clearWeatherTime:存档内世界晴天剩余时间,在此期间天气将保持晴天,但此值大于0不是晴天的必要条件。当此值不存在时游戏默认为0。

CustomBossEvents:自定义Boss栏数据。

:一项自定义Boss栏数据。

**Color:Boss栏的颜色代码,可以为pink(粉色)、blue(蓝色)、red(红色)、green(绿色)、yellow(黄色)、purple(紫色)和white(白色)。

**CreateWorldFog:Boss栏是否创建世界迷雾效果。

**DarkenScreen:Boss栏是否会使天空变得黯淡。

**Max:Boss栏的最大值。

**Name:(文本组件)Boss栏所显示的文本。

**Overlay:Boss栏的显示样式。可以的值有progress(完整进度条)、notched_6(进度条分为6段)、notched_10(进度条分为10段)、notched_12(进度条分为12段)和notched_20(进度条分为20段)。

**PlayBossMusic:Boss栏是否播放boss音乐。

**Players:可以看见Boss栏的玩家列表。

: (UUID)一个玩家。

**Value:Boss栏的当前值。

**Visible:Boss栏是否对列表中的玩家可见。

DataPacks:存档启用和禁用的数据包。此值不存在时游戏默认为仅启用vanilla数据包。

**Disabled:禁用的数据包。

:数据包名称。

**Enabled:启用的数据包。

:数据包名称。

*DayTime:存档中游戏按照游戏昼夜循环而非游戏刻计算的游戏时间,可以被/time修改。当此值不存在时游戏默认为0。

*Difficulty:存档的游戏难度。0-3分别为和平、简单、普通和困难。当此项不存在时游戏默认为2,即普通。

*DifficultyLocked:此存档难度是否被锁定。当此项不存在时游戏默认为false。

*DragonFight:末影龙战斗数据。

Dragon:(UUID)当前末影龙的UUID。

DragonKilled:末影龙是否已经死亡。如果此项不存在游戏默认为false。

ExitPortalLocation:末影龙被击败后会飞往的地方,即返回传送门的位置。内部包含3个整数,分别代表XYZ坐标。

Gateways:包含即将生成的末地折跃门的位置。刚创建世界时为20个数字,末影龙每死亡一次此列表长度减1,直到为全部清空后此项不再保存。

:折跃门的角度,0为东方,数字按顺时针方向递增。

IsRespawning:末影龙是否正在重生。如果此项不存在游戏默认为false。

*NeedsStateScanning:此世界是否没有进入过末地。如果此项不存在游戏默认为true。

*PreviouslyKilled:末影龙是否被击败过,决定下次击败末影龙获得的经验值。如果此项不存在游戏默认为false。

enabled_features:启用的功能开关。此值不存在时游戏默认为仅启用vanilla功能开关。

:(命名空间ID)一项功能开关。

**GameRules:存档的游戏规则。

<游戏规则名称>:一项游戏规则和对应的值。

*GameType:存档的默认游戏模式,控制玩家进入世界或重生时的游戏模式。0为生存模式,1为创造模式,2为冒险模式,3为旁观模式。如果此项不存在则游戏默认为0,即生存模式。

*hardcore:存档内玩家死亡后是否自动转变为旁观模式。当此项不存在时游戏默认为false。

*initialized:存档是否被正确初始化。如果此项为false,游戏在加载存档之后会重新寻找世界出生点并重新放置奖励箱。当此项不存在时游戏默认为true。

*LastPlayed:上次保存此存档的时间戳。当此项不存在时默认为0。

*LevelName:存档的名称。当此项不存在时游戏默认为空字符串。

Player:存档保存的玩家信息。此信息只在单人游戏存档中有效,且优先级高于玩家数据存储文件。独立服务端存档中无此数据。

见玩家数据格式。

*raining:当前存档内世界是否正在降雨。如果此项不存在游戏默认为false。

*rainTime:如果存档内世界目前不处于降雨天气,此值代表距离下一次降雨的时间。如果目前正处于降雨天气,此值表示距离降雨结束的时间。此值按游戏刻计算。如果此项不存在游戏默认为0。

removed_features:此项无游戏逻辑作用,仅在崩溃中的Removed feature flags部分记录。

:一个字符串。

**ScheduledEvents:存档内未处理的计划事件。

:一项计划事件。

**Callback:事件回调数据。

**Type:(命名空间ID)事件回调类型。

如果Type为function,则执行指定函数。

**Name:(命名空间ID)要执行的函数。

如果Type为function_tag,则执行带有指定函数标签的函数。

**Name:(命名空间ID)要执行的函数标签。

**Name:此事件的名称。

**TriggerTime:此事件的触发时间。以游戏时间作为基准。

*ServerBrands:打开过此存档的服务端的铭牌列表。

:一个服务端铭牌。

*SpawnAngle:存档世界出生点出生时所看向的水平角度,以顺时针角度计,为0时代表Z轴正方向(正南方)。如果此项不存在则游戏默认为0。

*SpawnX:存档世界出生点的X坐标。如果此项不存在则游戏默认为0。

*SpawnY:存档世界出生点的Y坐标。如果此项不存在则游戏默认为0。

*SpawnZ:存档世界出生点的Z坐标。如果此项不存在则游戏默认为0。

*thundering:当前存档内世界是否正处于雷暴天气。如果此项不存在游戏默认为false。

*thunderTime:如果存档内世界目前不处于雷暴天气,此值代表距离下一次雷暴的时间。如果目前正处于雷暴天气,此值表示距离雷暴结束的时间。此值按游戏刻计算。如果此项不存在游戏默认为0。

*Time:存档的游戏时间。此时间从存档被创建开始计时,单位为游戏刻。如果此项不存在则游戏默认为0。

**version:存档区块文件的版本,对于Anvil文件格式(当前)为19133,对于MCRegion格式为19132,如果不为这两个值游戏获取存档信息时报错Unknown data version: <16进制此值>。

**Version:存储此存档时游戏的详细版本信息。

*Id:游戏的数据版本。如果此项不存在则使用当前正在加载此存档的游戏的数据版本。

*Name:游戏的版本名称。如果此项不存在则使用当前正在加载此存档的游戏的版本名称。

*Series:开发系列,用于标识开发分支。常规正式版和快照为main。如果此项不存在则使用当前正在加载此存档的游戏的开发系列。

*Snapshot:表示此版本是否为快照版。如果此项不存在则使用当前正在加载此存档的游戏的类型。

WanderingTraderId:(UUID)上一次成功生成的流浪商人的UUID。

*WanderingTraderSpawnChance:游戏尝试生成流浪商人的成功概率。游戏加载时除以1000计算真实概率。如50表示5%的生成概率。如果此项不存在则游戏默认为0。

*WanderingTraderSpawnDelay:距下次尝试生成流浪商人的时间,以游戏刻为单位。如果此项不存在则游戏默认为0。

*WasModded:存档是否被修改过的客户端或服务端加载并保存。如果此项不存在游戏默认为false。

**WorldGenSettings:此存档的世界生成设置。

*bouns_chest:玩家首次进入游戏时,是否在出生点附近生成奖励箱。如果此项不存在游戏默认为false。

**dimensions:定义存档包含的所有维度及其世界生成设置。

<维度命名空间ID>:一个维度和对应的数据。

见维度定义格式。

*generate_features:世界是否生成结构。如果此项不存在游戏默认为true。

legacy_custom_options:对世界生成不起到任何作用。存在此标签代表这个存档曾使用旧版自定义设置调整世界生成,在加载此存档时游戏会给出警告。

**seed:数字形式的世界种子。

存储行为[编辑 | 编辑源代码]

每个存档都至少有一个存档基础数据存储文件。如果一个目录下不存在level.dat和level.dat_old文件,那么这个目录就不会被作为存档识别。

游戏有两种读取存档基础数据存储文件的方式:

在选择世界菜单中,游戏会读取游戏存档目录,查找所有带有存档基础数据存储文件的目录作为存档,并读取这些文件的部分基础信息显示在菜单内。

在游戏加载存档时,游戏会将存档基础数据存储文件的数据全部加载,并根据世界生成数据创建区块生成器等。

由于存档基础数据存储文件是存档最重要的文件,此文件在保存时会留下一个备份以减少数据损坏的可能性:

先将新的数据写入到level<随机字符串>.dat内。

将原先的level.dat移动到level.dat_old。

删除level.dat。

将刚才写入的level<随机字符串>.dat移动到level.dat。

如果有任何一步出错,都将level.dat_old移动回level.dat。

备份文件与主文件的结构相同,当主文件损坏时,游戏会自动尝试恢复:

先将原先的level.dat移动到level.dat_corrupted_<时间戳>。

删除level.dat。

将level.dat_old移动到level.dat。

如果有任何一步出错,都将level.dat_corrupted_<时间戳>移动回level.dat。

历史[编辑 | 编辑源代码]

Java版1.112w01a加入了generatorName。1.2?加入了generatorVersion。1.3.1?加入了allowCommands。加入了initialized。1.4.212w32a加入了GameRules。加入了DayTime。12w36a加入了generatorOptions,内容为超平坦世界的预设码。1.814w02a加入了Difficulty和DifficultyLocked。14w07a加入了clearWeatherTime。14w17a加入了BorderCenterX、BorderCenterZ和BorderSize。现在generatorName可接受值customized,此时generatorOptions为旧版自定义世界的预设码。14w19a加入了BorderDamagePerBlock、BorderSafeZone、BorderSizeLerpTarget、BorderSizeLerpTime、BorderWarningBlocks和BorderWarningTime。14w31a将BorderSizeLerpTime的数据类型更改为长整型。1.915w31a加入了DimensionData,末影龙战斗数据存于其1.DragonFight下。15w32a加入了Version和DataVersion。1.1317w43a加入了DataPacks。18w05a加入了CustomBossEvents。18w16a现在generatorName可接受值buffet,此时generatorOptions格式如下:{"biome_source":{"type":"minecraft:fixed","biomes":[<若干生物群系ID>]},"chunk_generator":{"type":"<生成器ID>"}}18w19a更改了generatorName为buffet时generatorOptions的格式。

详细更改:

biome_source.type新增可选值checkerboard和​vanilla_layered,生成器ID重命名为surface、​caves和​floating_islands,chunk_generator新增options.default_block和options.default_fluid指定默认方块与默认流体。

pre8移除了generatorOptions,由generatorOptions代替。加入了legacy_custom_options。1.1419w05a加入了WanderingTraderSpawnChance、WanderingTraderSpawnDelay和WanderingTraderId。1.1620w17a加入了BonusChest。20w20a将所有世界生成相关设置都集中到了WorldGenSettings内。

此前存储格式:

*RandomSeed:该世界的种子。当此项不存在时游戏默认为0。

*MapFeatures:是否生成建筑。当此项不存在时游戏默认为true。

*BonusChest:是否生成奖励箱。当此项不存在时游戏默认为true。

legacy_custom_options:若存在,则此世界使用过旧版自定义配置世界生成。

*generatorName:生成器的名称。可以为default、​default_1_1、​flat、​normal、​largeBiomes、​amplified、​debug_all_block_states和​buffet。当此项不存在时游戏默认为default。

*generatorVersion:生成器的版本。为0时,若generatorName为default则会将其更改为default_1_1。当此项不存在时游戏默认为0。

当generatorName为buffet时,有额外数据:

generatorOptions:生成器设置。

chunk_generator:区块生成器。

type:生成器类型,默认为minecraft:surface。

options:额外设置。

default_block:默认方块。默认为minecraft:stone。

default_fluid:默认流体。默认为minecraft:water。

biome_source:生物群系设置。

type:生物群系源类型,默认为minecraft:fixed。

options:额外设置。

biomes:一个生物群系ID列表,默认为["minecraft:ocean"]。

size:默认为2。

当generatorName为flat时,有额外数据:

generatorOptions:超平坦世界生成设置。默认为“经典预设”的数据。

**biome:一个生物群系ID。

layers:层设置,列表靠前的在下层。

:一个层。

block:所用的方块。

height:层的高度。

structures:地物生成设置。

<地物生成选项>:若存在则可生成此项。

<额外参数>:若存在则此参数用的值。

20w21a移除了SizeOnDisk。末影龙战斗数据被移到Data下,而非Data.DimensionData.1下。1.1821w37a加入了Series标识开发分支。1.1922w11a现在世界生成数据内的维度类型只能为命名空间ID。1.19.322w42a加入了enabled_features。1.2023w12a加入了removed_features。

导航[编辑 | 编辑源代码]

编Java版游戏文件

通用文件

版本信息文件格式

信任符号链接列表文件格式

玩家档案缓存存储格式

性能分析报告文件

崩溃报告文件

客户端文件

散列资源文件

客户端核心文件

客户端数据生成器

客户端选项文件格式

下载缓存目录

命令历史文件格式

快捷栏存储格式

服务器列表存储格式

Realms持久化数据存储格式

服务端文件

服务端核心文件

服务端数据生成器

服务端配置文件格式

白名单存储格式

封禁列表存储格式

管理员列表存储格式

存档文件

区域文件格式

结构存储格式

存档数据

存档基础数据存储格式

存档会话锁文件格式

玩家数据格式

统计存储格式

进度存储格式

记分板存储格式

地图存储格式

命令存储存储格式

维度数据

区块存储格式

方块实体数据格式

结构片段存储格式

物品格式

实体数据格式

生物记忆

兴趣点存储格式

袭击存储格式

随机序列存储格式

区块标签存储格式

启动器文件

客户端清单文件格式

启动器档案文件格式

已过时文件

Classic世界格式

Indev世界格式

Alpha世界格式

server_level.dat

结构生成数据文件格式

villages.dat格式

物品格式(旧版)

Copyright © 2022 世界杯积分_上一届世界杯冠军 - f0cai.com All Rights Reserved.