存檔基礎數據儲存格式
本文章所述內容僅適用於Java版。
存檔基礎數據儲存檔案是存檔的核心檔案,儲存各種存檔基礎資訊、維度資訊和世界生成資訊。
儲存格式
存檔基礎數據儲存檔案位於<存檔根目錄>/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狀態條命名空間ID>:一項自訂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狀態條是否對列表中的玩家可見。
- *
- <Boss狀態條命名空間ID>:一項自訂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:存檔內未處理的計劃事件。 - *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>:定義維度和對應的數據。
- *
*generator:世界生成器數據。- 生成器,見維度數據格式/Generator
- *
*type:(命名空間ID或具體數據)維度類型數據。- 維度類型,見維度類型/direct codec
- *
- <維度的命名空間ID>:定義維度和對應的數據。
- *generate_features:世界是否生成結構。如果此項不存在遊戲預設為
true
。 - legacy_custom_options:對世界生成不起到任何作用。存在此標籤代表這個存檔曾使用舊版自訂設定調整世界生成,在載入此存檔時遊戲會給出警吿。
- *
*seed:數字形式的種子碼。
- *bouns_chest:玩家首次進入遊戲時,是否在重生點附近生成獎勵箱。如果此項不存在遊戲預設為
- *
儲存行為
每個存檔都至少有一個存檔基礎數據儲存檔案。如果一個目錄下不存在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.1 | 12w01a | 加入了generatorName。 | |||
1.2 | ? | 加入了generatorVersion。 | |||
1.3.1 | ? | 加入了allowCommands。 | |||
加入了initialized。 | |||||
1.4.2 | 12w32a | 加入了GameRules。 | |||
加入了DayTime。 | |||||
12w36a | 加入了generatorOptions,內容為超平坦世界的預設碼。 | ||||
1.8 | 14w02a | 加入了Difficulty和DifficultyLocked。 | |||
14w07a | 加入了clearWeatherTime。 | ||||
14w17a | 加入了BorderCenterX、BorderCenterZ和BorderSize。 | ||||
現在generatorName可接受值customized ,此時generatorOptions為舊版自訂世界的預設碼。 | |||||
14w19a | 加入了BorderDamagePerBlock、BorderSafeZone、BorderSizeLerpTarget、BorderSizeLerpTime、BorderWarningBlocks和BorderWarningTime。 | ||||
14w31a | 將BorderSizeLerpTime 的數據類型更改為長整型。 | ||||
1.9 | 15w31a | 加入了DimensionData,終界龍戰鬥數據存於其1.DragonFight下。 | |||
15w32a | 加入了Version和DataVersion。 | ||||
1.13 | 17w43a | 加入了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.14 | 19w05a | 加入了WanderingTraderSpawnChance、WanderingTraderSpawnDelay和WanderingTraderId。 | |||
1.16 | 20w17a | 加入了BonusChest。 | |||
20w20a | 將所有世界生成相關設定都集中到了WorldGenSettings內。
此前儲存格式:[顯示]
| ||||
20w21a | 移除了SizeOnDisk。 | ||||
終界龍戰鬥數據被移到Data下,而非Data.DimensionData.1下。 | |||||
1.18 | 21w37a | 加入了Series標識開發分支。 | |||
1.19.3 | 22w42a | 加入了enabled_features。 | |||
1.20 | 23w12a | 加入了removed_features。 |
導覽
[隱藏] | |||||
---|---|---|---|---|---|
通用檔案 | |||||
用戶端檔案 | |||||
伺服器端檔案 | |||||
存檔檔案 |
| ||||
啟動器檔案 | |||||
已過時檔案 |