Minecraft uses the binary tag format. Named Binary Tag) named for the various files in which you save the data. Notch describes the format in a very brief specification. The format is designed to store data in a tree structure made up of multiple labels. All labels have an identification and a name. The original known version was 19132 as it was introduced in Beta 1.3, and has since been updated to 19133 with Anvil, with the addition of the Int Array tag. The NBT format dates back to Indev with tags 0-10 in use.
Another easier-to-use format of NBT is simple string, as used in commands. This format is known as 'SNBT', short for 'Chain NBT'. It is different from the JSON format; therefore any JSON used in NBT, such as raw json text, must be enclosed within a string tag.
Summary
- 1 lot of TAGs
- 2 File Format
- 3 How they use it in Minecraft
- 3.1 Uses
- 4 Software
- 4.1 Official
- 4.2 Third party software
- 5 History
- 6
Go on TAGs
A label is an individual part of the data tree. The first byte in a tag is the tag type (ID), followed by a two-byte big-endian unsigned integer for the length of the name, then the name as a string in UTF-8 format (The 'End' TAG it has no name and does not contain the extra 2 bytes; the name is assumed to be empty). The name of the labels can contain spaces, although Minecraft never saves labels with spaces in the names. Finally, depending on the type of tag, the bytes that follow are part of the "payload" for that tag. This table describes each of the 13 known tags in version 19133 of the named binary tag format:
ID | Icon | Tag Type | Payload | SNBT Format [Solo JE] | Description | Storage Capacity |
---|---|---|---|---|---|---|
0 | TAG_End | - | - | Used to mark the end of compound labels. This label it has no name, so it is only a 0 byte. It can also be the empty List label type. | N/A | |
1 | TAG_Byte | 1 byte / 8 bits, signed | b or B | A signed integer type. Sometimes it is used as if it were a Boolean data. | (27) a (27 - 1) (-128 to 127) | |
2 | TAG_Shorts | 2 bytes / 16 bits, signed, big endian | s or S | It is a signed integer type. | (215) a (215 - 1) (-32,768 to 32,767) | |
3 | TAG_Int | 4 bytes / 32 bits, signed, big endian | It is a signed integer type | (231) a (231 - 1) (-2,147,483,648 to 2,147,483,647) | ||
4 | TAG_Long | 8 bytes / 64 bits, signed, big endian | l or L | It is a signed integer type | (263) a (263 - 1) (-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807) | |
5 | TAG_Float | 4 bytes / 32 bits, signed, big endian, IEEE 754-2008, binary32 | f or F | It is a signed Float data type. | The precision varies along the number line; See Single-precision floating-point format. The maximum value is about 3.4 * 1038 | |
6 | TAG_Double | 8 bytes / 64 bits, signed, big endian, IEEE 754-2008, binary64 | , d or D | It is a signed Double data type. | The precision varies along the number line; See Double-precision floating-point format. The maximum value is about 1.8 * 10308 | |
7 | TAG_Byte_Array | TAG_Int's payload size, then size TAG_Byte's payloads. | [B;,,...] | This TAG is an array of bytes. | The maximum number of items varies between (231 - 9) and (231 - 1) (2,147,483,639 and 2,147,483,647), depending on the specific JVM. | |
8 | TAG_String | Payload length of TAG_Short, then a UTF-8 string with length of size. | - | A UTF-8 string. It has a size, instead of being null finished. | 32,767 bytes interpretable as UTF-8 (see UTF-8 format; most commonly used characters are single-byte). | |
9 | TAG_List | - | [,,...] | A list of tag uploads, without repeating tag IDs or tag names. | Due to the limitations of the JVM and the ArrayList implementation, the maximum number of list items is (231 - 9), or 2,147,483,639. Also note that List and Composite tags cannot be nested beyond a depth of 512. | |
10 | TAG_Compound | Fully formed tags, followed by a TAG_End. | {:,:,...} | A fully formed list of tags, including their IDs, names, and payloads. No two tags can have the same name. | Unlike lists, there is no hard limit to the number of labels within a Composite (of course there is always the implicit limit of virtual memory). However, note that Compound and List tags cannot be nested beyond a depth of 512. | |
11 | TAG_Int_Array | - | [I;,,...] | A set of TAG_Int payloads. | The maximum number of items varies between (231 - 9) and (231 - 1) (2,147,483,639 and 2,147,483,647), depending on the specific JVM. | |
12 | TAG_Long_Array | - | [L;,,...] | A set of TAG_Long payloads. | The maximum number of items varies between (231 - 9) and (231 - 1) (2,147,483,639 and 2,147,483,647), depending on the specific JVM. |
List and Compound tags can be recursively nested and are often recursively nested. It should also be noted that in a list of lists, each of the sublists can include a different type of label.
File Format
An NBT file is a GZip'd composite tag, including tag name and ID. Some of the files used by Minecraft may be uncompressed, but in most cases the files follow Notch's original specifications and are compressed with GZip. In Legacy Console Edition, chunks are compressed with XMemCompress, a variation of an LZX compression algorithm. There is no header to specify the version or any other information, only the level.dat file specifies the version.
How they use it in Minecraft
Minecraft's use of the NBT format is strange at times. In some cases, empty lists can be rendered as a byte tag list instead of a list of the correct type, or as a final tag list in newer versions of Minecraft, which can break some older NBT tools. Also, almost all root tags have an empty name string and encapsulate only a composite tag with the actual data and a name. For instance:
- The root tag for most NBT structures in Minecraft.
- SomeName: The only tag contained within the root tag: it has a name and contains all the actual data.
Another notable oddity is that although the original Notch specification allows spaces in tag names, and even the example uses spaces in tag names, Minecraft has no known files where tags have spaces in their names. There is also inconsistent use of uppercase and lowercase, mostly camelCase or PascalCase, but sometimes even lowercase.
You use
- level.dat is stored in compressed NBT format.
- .dat files are stored in compressed NBT format.
- idcounts.dat is stored in uncompressed NBT format.
- villages.dat is stored in compressed NBT format.
- map _ <#>. dat Files are stored in compressed NBT format.
- servers.dat, is used to store the list of multiplayer servers saved as uncompressed NBT.
- Chunks are stored in compressed NBT format within Region files.
- scoreboard.dat is stored in compressed NBT format.
- Generated structures are stored in compressed NBT format.
- Saved structures are stored in compressed NBT format.
Software
Mojang has provided sample Java NBT classes for developers to use and reference as part of the source code for the McRegion -> Anvil converter. Since 1.13, Minecraft includes a built-in converter between the SNBT format and the compressed NBT format. It comes with the client and the official server. [1]
Official
See also: Tutorials / Running the Data GeneratorThe data generator from Minecraft is able to convert uncompressed Stringified NBT files with .snbt extension in an input folder to GZip compressed NBT format files with .nbt extension in an output folder, and vice versa.
The vanilla data generator can convert any GZip compressed NBT format to SNBT format. You can simply change the file extension of a file, such as level.dat to level.nbt and put it in the input folder, and the generator will decode the GZip compressed NBT data.
Third party software
The community has developed programs to view and modify compressed and uncompressed NBT files:
Name | NBT Version | Description | Catches |
---|---|---|---|
CL-NBT | 19132 | CL-NBT is a Common Lisp NBT implementation that can read and write NBT files and load and save McRegion files. The anvil format works with slight modifications. | |
MineBack Ultimate | 19133 | MineBack Ultimate provides a complete NBT editor that supports all available NBT format file types (Map, Level, World, etc.). It comes with a modern GUI and many helper functions. | |
NBT for Python | 19133 | Library to analyze and write NBT files, both independent and in region files, made in the Python language. Application examples are provided for inspecting and editing Minecraft data files (block / chest / mobs statistics and simple world mapping). Supports the old McRegion, pre-flattened and the latest Anvil formats. | |
NBTEdit | 19132 | View and modify NBT files through a Windows tree control. It is outdated not only because it is an old NBT version, but because it does not support multiple tags with the same name and forces wrong ranges on some types, and it lacks support for uncompressed NBT files. | |
NBTExplorer - Forum Post | 19133 | Inspired and based on NBTEdit, this program allows you to view and edit NBT files through a Windows tree control. It supports compressed and uncompressed NBT files, and allows direct editing of NBT structures in MCRegion and Anvil files, level.dat, etc. | |
NBT grammar for Synalyze It! | 19132 | Using this Synalyze It! displays a color-coded hex dump along with the parsed tag tree. Currently only uncompressed files are supported. | |
NO edit | 19132 | NTB Editor for mac with a text-based tree structure. | |
NBT2YAML | 19133 | nbt2yaml features a command line interface for reading and editing Minecraft NBT files using a custom YAML format. It also includes a Python API for parsing and writing NBT files from a simple Python data structure. | |
webNBT | 19133 | webNBT is an NBT editor that runs in modern browsers without requiring the user to download an application or use third-party browser plug-ins (such as Flash or JavaScript). |
History
Java Edition | |||||
---|---|---|---|---|---|
1.0.0 | September 28, 2011 | Notch posted on twitter "I'm working on a way to save arbitrary data with element instances." | |||
1.12 | ? | Added long array tags. | |||
1.13 | 18w01a | Added a data generator to both the Minecraft client and the default multiplayer software. | |||
1.14 | 19w08a | String tags can now be within single quotes ' besides double quotes ".[2] |
- ↑ https: // web page.vg/Data_Generators#NBT_converters
- ↑ "Allow single quote in strings by boq · Pull Request #52" – Mojang/brigadier – GitHub.
Java Edition | |||||||
---|---|---|---|---|---|---|---|
Versions |
| ||||||
Development |
| ||||||
Technical Assistant |
| ||||||
Multiplayer |
| ||||||
Game customization |
|
Adriana gil We are a specialized and passionate team of virtual reality. We have extensive experience in this area. We decided to create ForVirtualRealityLovers to share all our information with customers and users. We have quality information. You can find tips, guides, interviews, top products and much more! If you are curious, enter our site ForVirtualRealityLovers.com and discover the virtual world! ? Minecraft X ❯