跳转至

NBT格式

T21:43:31+08:00 NBTNamed Binary Tags)为MC向文件中存储数据的一种格式。

以特殊二进制标签与数据的线性排列来表示树形数据结构。

标签

ID 二进制 标签类型 SNBT(仅Java版) 描述 存储范围
0 00 TAG_End - 用于标记复合标签的结尾。本标签无任何名称所以只有一个零字节。 N/A
1 01 TAG_Byte <number>b<number>B 8位有符号整数 -27到27-1(-128到127)
2 02 TAG_Short <number>s<number>S 16位有符号整数 -215到215-1(-32,768到32,767)
3 03 TAG_Int <number> 32位有符号整数 -231到231-1(-2,147,483,648到2,147,483,647)
4 04 TAG_Long <number>l<number>L 64位有符号整数 -263到263-1(-9,223,372,036,854,775,808到9,223,372,036,854,775,807)
5 05 TAG_Float <number>f<number>F 32位有符号浮点数 数据精度根据数值而定,见单精度浮点数
6 06 TAG_Double <decimal number><number>d<number>D 64位有符号浮点数 数据精度根据数值而定,见双精度浮点数
7 07 TAG_Byte_Array [B;<byte>,<byte>,...] 数组的大小size + size个TAG_Byte 根据JVM的不同,数组成员最大数量可能在231 - 9和231 - 1(2,147,483,639和2,147,483,647)之间。
8 08 TAG_String <a-zA-Z0-9 text>"<text>""需使用\"转义)或'<text>''需使用\'转义) 无符号16位整数的大小size + size长的UTF-8字符串。没有空结束符。 可解释为UTF-8字符串的最多65,535个字节(见变种UTF-8;ASCII字符均为1字节,大多数中文字符为3字节)
9 09 TAG_List [<value>,<value>,...] 无名称同类型标签列表。8位有符号整数的tagId + 32位有符号整数的大小size + size个tagId类型的标签负载 由于JVM的限制以及ArrayList的实现问题,列表成员最大数量为231 - 9(2,147,483,639)。另外,List和Compound标签的嵌套深度不能超过512。
10 0A TAG_Compound {<tag name>:<value>,<tag name>:<value>,...} 以TAG_End结束。一系列完整的标签信息,包括ID、名称以及负载等。任意两个标签都不能有相同的名称。 不像列表,Compound标签内的标签数量没有硬性限制(不过仍受JVM分配的内存限制)。另外,List和Compound标签的嵌套深度不能超过512。
11 0B TAG_Int_Array [I;<integer>,<integer>,...] 数组的大小size + size个TAG_Int 根据JVM的不同,数组成员最大数量可能在231 - 9和231 - 1(2,147,483,639和2,147,483,647)之间。
12 0C TAG_Long_Array [L;<long>,<long>,...] 数组的大小size + size个TAG_Long 根据JVM的不同,数组成员最大数量可能在231 - 9和231 - 1(2,147,483,639和2,147,483,647)之间。
Text Only
标签 TAG_STRING 负载

例:

Text Only
0A 00 00 0A 00 04 44 61 74 61 ...... 00 00 00 00 00 00 00 00
Text Only
1
2
3
4
5
0A [00 00]
    0A [00 04] [44 61 74 61]
        ......
    00
00

0A 为 TAG_COMPOUND 标签,00 00 指示标签名字符串长度为0(level.dat 最外层被一个无名称的 TAG_COMPOUND 包裹)

0A 为 TAG_COMPOUND 标签,00 04 指示标签名字符串长度为 4,标签名字符串为 44 61 74 61data

​ ......

00 为 TAG_COMPOUND 标签结束

00 为 TAG_COMPOUND 标签结束

Dissect MC

level.dat

GZip 方式压缩后的NBT格式,将其添加后缀 .gzip 后解压,再用HEX Editor打开即可。

评论