共找到3條詞條名為NBT的結果 展開

NBT

二進位命名標籤

我的世界二進位命名標籤(Name Binary Tag),NBT格式為Minecraft中用於向文件中存儲數據的一種存儲格式。NBT格式以樹形結構並配以許多標籤的形式存儲數據。所有的標籤都有一個獨立的ID和名稱。最初的版本如Minecraft Beta1.3中所示為19132個標籤,但是隨著鐵砧的引入,增加了一個整形指針變數,標籤數量增加至19133個。在NBT格式最初在Minecraft Indev的版本中只有0到10這11個標籤可用。

NBT的作用


NBT在物品中就有,是數據標籤的一種,通過修改物品的NBT可以自定義物品的傷害、耐久等。

NBT的定義


每一個標籤在數據樹中都是一個獨立的部分。標籤的第一個位元組為標籤類型(ID),其後兩位元組為存儲名稱的長度,之後以UTF-8格式的字元串的方式存儲標籤。儘管在默認的情況下Minecraft本身並不會存儲帶有空格的名稱,但是標籤名稱可以包含空格。最後,取決於標籤的類型,之後的位元組為該標籤的輔助信息。下表所示為在19133標籤版本中二進位命名標籤格式中所有12個已知的標籤類型:
ID圖標標籤類型輔助信息描述
TAG_End用於標記複合標籤的結尾。本標籤無任何名稱所以只有一個零位元組。
1TAG_Byte1位元組 / 8位,有正負有正負的整值數據類型,通常用於布爾表達式
2TAG_Short2位元組 / 16位,有正負,位元組序:BE有正負的整值數據類型。
3TAG_Int4 位元組 / 32 位,有正負,位元組序:BE有正負的整值數據類型。
4TAG_Long8 位元組 / 64 位,有正負,位元組序:BE有正負的整值數據類型。
5TAG_Float4 位元組 / 32 位,有正負,位元組序:BE,IEEE 754-2008標準,binary32。有正負的浮點數據類型。
6TAG_Double8 位元組 / 64 位,有正負,位元組序:BE,IEEE 754-2008標準,binary64。有正負的浮點數據類型。
7TAG_Byte_ArrayTAG_Int的輔助信息大小以及 TAG_Byte的輔助信息大小。數組。
8TAG_String前2個位元組(TAG_Short)存儲字元串字元的個數(字元串的長度length).然後存儲UTF-8標準的字元串,沒有'\0'結束符,只是以單純的字元序列的形式存儲.一個採用UTF-8標準的字元串,有尺寸限制,也就是說會以空結尾。
9TAG_List輔助信息的第1個位元組(TAG_Byte)存儲列表標籤類型的ID,接下來的4個位元組(TAG_Int)存儲列表的size,接下來的位元組將存儲size個列表標籤類型的輔助信息。假如第一個位元組是0x08,id是8,對應的標籤是TAG_String,如果size是0x00000004,接下來將會存儲4個TAG_String標籤的輔助信息。列表標籤(既然都說了是列表)存儲的內容都是相同類型的標籤,所以只在第一個位元組表明標籤類型.一系列沒有重複標籤ID和標籤名稱的輔助信息。
10TAG_Compound標籤的完整形式,需要附加TAG_End一系列完整的標籤信息,包括ID、名稱以及輔助信息等。任意兩個標籤都不會有相同的名稱。
11TAG_Int_Array輔助信息前4個位元組(TAG_Int)用於存儲數組的大小size,緊接size*4 位元組(TAG_Int)的數組數據。佔用存儲空間: 4+4*size Byte。存儲TAG_Int的輔助信息的數組。
複合標籤的列表常以嵌套遞歸的方式出現。另外還需注意,在一個包含List的List中,每個List可以包含不同類型的數據。