你可以帮助我们扩充关于该主题的更多信息。
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等直接进行编辑。 |
|
| NEINedit | 19132 | 基于Mac系统的NBT编辑器。 |
|


