你可以幫助我們擴充關於該主題的更多資訊。
NBT(二進制命名標籤)格式為Minecraft中用於向檔案中儲存資料的一種儲存格式。這一格式在此處由Notch給出一個簡略的介紹。NBT格式以樹形結構並配以許多標籤的形式儲存資料。所有的標籤都有一個獨立的ID和名稱。最初的版本如Minecraft Beta1.3中所示為19132個標籤,但是隨著鐵砧的引入,增加了一個整形指針變數,標籤數量增加至19133個。在NBT格式最初在Minecraft Indev的版本中只有0到10這11個標籤可用。
標籤的定義
每一個標籤在資料樹中都是一個獨立的部分。標籤的第一個字節為標籤類型(ID),其後兩字節為儲存名稱的長度,之後以UTF-8格式的字串的方式儲存標籤。儘管在預設的情況下Minecraft本身並不會儲存帶有空格的名稱,但是標籤名稱可以包含空格。最後,取決於標籤的類型,之後的字節為該標籤的輔助資訊。下表所示為在19133標籤版本中二進制命名標籤格式中所有12個已知的標籤類型:
| ID | 圖示 | 標籤類型 | 輔助資訊 | 描述 |
|---|---|---|---|---|
| 0 | TAG_End | 無 | 用於標記複合標籤的結尾。本標籤無任何名稱所以只有一個零字節。 | |
| 1 | TAG_Byte | 1字節 / 8位元,有正負 | 有正負的整值資料類型,通常用於布林表達式。 | |
| 2 | TAG_Short | 2字節 / 16位元,有正負,字節序:BE | 有正負的整值資料類型。 | |
| 3 | TAG_Int | 4 字節 / 32 位,有正負,字節序:BE | 有正負的整值資料類型。 | |
| 4 | TAG_Long | 8 字節 / 64 位,有正負,字節序:BE | 有正負的整值資料類型。 | |
| 5 | TAG_Float | 4 字節 / 32 位,有正負,字節序:BE,IEEE 754-2008標準,binary32 | 有正負的浮點資料類型 | |
| 6 | TAG_Double | 8 字節 / 64 位,有正負,字節序:BE, IEEE 754-2008標準, | 有正負的浮點資料類型 | |
| 7 | TAG_Byte_Array | TAG_Int的輔助資訊大小以及 TAG_Byte的輔助資訊大小。 | 陣列 | |
| 8 | TAG_String | TAG_Short的輔助資訊length以及一個採用UTF-8標準的帶有長度資訊的字串 | 一個採用UTF-8標準的字串,有尺寸限制,也就是說會以空結尾。 | |
| 9 | TAG_List | TAG_Byte的輔助資訊tagId以及TAG_Int的輔助資訊size和size的輔助資訊,所有類型的tagId。 | 一系列沒有重複標籤ID和標籤名稱的輔助資訊。 | |
| 10 | TAG_Compound | 標籤的完整形式,需要附加TAG_End | 一系列完整的標籤資訊,包括ID、名稱以及輔助資訊等。任意兩個標籤都不會有相同的名稱。 | |
| 11 | TAG_Int_Array | TAG_Int的輔助資訊size和對應的size TAG_Int的輔助資訊。 | 儲存TAG_Int的輔助資訊的陣列 |
複合標籤的列表常以嵌套遞歸的方式出現。
檔案格式
NBT檔案是GZip'd格式的複合標籤,其中並包括名稱和標籤ID。在Minecraft中使用的檔案有可能未經壓縮,但是基於Notch最出的敘述,檔案需要經GZip進行壓縮。檔案中並沒有用於顯示版本及其他資訊的頭檔案,只是在level.dat中才出現這一顯示版本的內容。
在Minecraft中的應用
NBT檔案格式在Minecraft的應用不盡相同。在某些情況下,空目錄可能不會表示字節標籤列表而表示為一系列正確標籤類型的列表。額外的,幾乎所有的根標籤均包含一個空字串並包含一個複合標籤儲存實際的資料和名稱,如下所示:
- 在Minecraft NBT結構中最常看到的根標籤。
- SomeName: 在根標籤下的唯一一個標籤——這一標籤擁有名稱和實際的資料。
另一點值得注意的是,儘管Notch最初所述允許在標籤名稱中出現空格,甚至是在例子中也出現了包含空格的標籤名稱,但是Minecraft並不會識別帶有空格的標籤名稱。使用大小寫字母混排也會造成不穩定,推薦使用小駝峰(lowerCamelCase)和大駝峰(UpperCamelCase)的命名規則,有時甚至可以使用全部小寫字母的方式。
應用
- level.dat以壓縮後的NBT格式進行儲存。
- <player>.dat以壓縮後的NBT格式進行儲存。
- idcounts.dat以未壓縮的NBT格式進行儲存。
- map_<#>.dat以壓縮後的NBT格式進行儲存。
- servers.dat以未壓縮的NBT格式進行儲存多人伺服器列表
- 區塊以壓縮後的NBT格式進行儲存區域檔案。
軟件
雖然暫時除去Minecraft本身還沒有一款由於編輯NBT格式的官方指定軟件,但是在Minecraft社群中已經開發出一些用於編輯和修改NBT檔案的軟件。
| 名稱 | NBT版本 | 介紹 | 截圖 |
|---|---|---|---|
| NBTEdit | 19132 | 可以以Windows資源管理器的方式查看並修改NBT檔案。但是由於其版本陳舊,不支持多標籤以相同名字出現,並會強制修改類型,這一軟件缺乏對未經壓縮的NBT檔案的支持。 |
|
| NBTExplorer | 19133 | 受NBTEdit靈感所創,並基於NBTEdit,這一程式可以以Windows資源管理器的方式查看並修改NBT檔案。支持壓縮後或未經壓縮的NBT檔案,並允許對如區域檔案格式和Anvil檔案格式、level.dat等直接進行編輯。適用於Windows,Linux(依賴mono),Mac系統。 |
|
| NEINedit | 19132 | 基於Mac系統的NBT編輯器。 |
|


