Formato NTB

De Minecraft Wiki
Saltar a: navegación, buscar
ImagenTraducir.png
Se necesita traducir el contenido de este artículo
Este artículo contiene texto en inglés. Puedes colaborar traduciéndolo

Minecraft utiliza el formato de etiqueta binaria (en ingles Named Binary Tag) con nombre para los diversos archivos en los que guarda los datos. Notch describe el formato en una muy breve explicación specification. El formato está diseñado para almacenar datos en una estructura de árbol compuesta de varias etiquetas. Todas las etiquetas tienen una identificación y un nombre. La versión original conocida era 19132 como se introdujo en Beta 1.3, y desde entonces se ha actualizado a 19133 con Anvil, con la adición de la etiqueta Int Array. El formato NBT se remonta a Indev con las etiquetas 0 a 10 en uso.

Otro formato más fácil de usar de NBT es en cadena simple, como se usa en comandos. Este formato se conoce como 'SNBT' , abreviatura de 'NBT en cadena' . Es diferente del formato JSON; por lo tanto, cualquier JSON utilizado en NBT, como raw json text, debe encerrarse dentro de una etiqueta de cadena

Nbtsheet.png

.

Los TAGs[editar | editar código]

Una etiqueta es una parte individual del árbol de datos. El primer byte en una etiqueta es el tipo de etiqueta (ID), seguido de un entero sin signo big-endian de dos bytes para la longitud del nombre, luego el nombre como una cadena en formato UTF-8 (El TAG 'Fin' no tiene nombre y no contiene los 2 bytes adicionales; se supone que el nombre está vacío). El nombre de las etiquetas puede contener espacios, aunque Minecraft nunca guarda etiquetas con espacios en los nombres. Finalmente, dependiendo del tipo de etiqueta, los bytes que siguen son parte de la "carga útil" de esa etiqueta. Esta tabla describe cada una de las 13 etiquetas conocidas en la versión 19133 del formato de etiqueta binaria nombrada:

ID Icono Tipo de Tag Payload SNBT Format[Java  solo] Descripción Storage Capacity
0 TAG_End - - Se usa para marcar el final de las etiquetas compuestas. Esta etiqueta no tiene nombre, por lo que solo es un byte 0. También puede ser el tipo de etiquetas de Lista vacías. N/A
1
Nbtsheet.png
TAG_Byte 1 byte / 8 bits, signed <number>b or <number>B Un tipo entero firmado. A veces se usa como si fuera un dato booleanos. (27) a (27 - 1)
(-128 to 127)
2
Nbtsheet.png
TAG_Short 2 bytes / 16 bits, signed, big endian <number>s or <number>S Es un tipo entero firmado. (215) a (215 - 1)
(-32,768 to 32,767)
3
Nbtsheet.png
TAG_Int 4 bytes / 32 bits, signed, big endian <number> Es un tipo entero firmado (231) a (231 - 1)
(-2,147,483,648 to 2,147,483,647)
4
Nbtsheet.png
TAG_Long 8 bytes / 64 bits, signed, big endian <number>l or <number>L Es un tipo entero firmado (263) a (263 - 1)
(-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807)
5
Nbtsheet.png
TAG_Float 4 bytes / 32 bits, signed, big endian, IEEE 754-2008, binary32 <number>f or <number>F Es un tipo de dato Float firmado. La precisión varía a lo largo de la recta numérica;
See Single-precision floating-point format. El valor máximo esta sobre 3.4*1038
6
Nbtsheet.png
TAG_Double 8 bytes / 64 bits, signed, big endian, IEEE 754-2008, binary64 <decimal number>, <number>d or <number>D Es un tipo de dato Double firmado. La precisión varía a lo largo de la recta numérica;
See Double-precision floating-point format. El valor máximo esta sobre 1.8*10308
7
Nbtsheet.png
TAG_Byte_Array TAG_Int's payload size, then size TAG_Byte's payloads. [B;<byte>,<byte>,...] Este TAG es un array de bytes. El número máximo de elementos varía entre (231 - 9) y (231 - 1) (2,147,483,639 y 2,147,483,647), dependiendo de la JVM específica.
8
Nbtsheet.png
TAG_String Longitud de carga útil de TAG_Short, luego una cadena UTF-8 con longitud de tamaño. - Una cadena UTF-8. Tiene un tamaño, en lugar de ser nulo terminado. 32,767 bytes interpretables como UTF-8 (see UTF-8 format; los caracteres más utilizados son de un solo byte).
9
Nbtsheet.png
TAG_List - [<value>,<value>,...] Una lista de cargas de etiquetas, sin ID de etiquetas repetidas ni nombres de etiquetas. Debido a las limitaciones de JVM y la implementación de ArrayList, el número máximo de elementos de lista es(231 - 9), or 2,147,483,639. También tenga en cuenta que las etiquetas Lista y Compuesto no pueden anidarse más allá de una profundidad de 512.
10
Nbtsheet.png
TAG_Compound Etiquetas completamente formadas, seguidas de un TAG_End. {<tag name>:<value>,<tag name>:<value>,...} Una lista de etiquetas completamente formadas, incluidos sus ID, nombres y cargas útiles. No hay dos etiquetas que puedan tener el mismo nombre. A diferencia de las listas, no existe un límite estricto para el número de etiquetas dentro de un Compuesto (por supuesto, siempre existe el límite implícito de la memoria virtual). Sin embargo, tenga en cuenta que las etiquetas de Compound y List no pueden anidarse más allá de una profundidad de 512.
11
Nbtsheet.png
TAG_Int_Array - [I;<integer>,<integer>,...] Un conjunto de cargas útiles de TAG_Int. El número máximo de elementos varía entre (231 - 9) y (231 - 1) (2,147,483,639 y 2,147,483,647), dependiendo de la JVM específica.
12 TAG_Long_Array - [L;<long>,<long>,...] Un conjunto de cargas útiles de TAG_Long. El número máximo de elementos varía entre (231 - 9) y (231 - 1) (2,147,483,639 y 2,147,483,647), dependiendo de la JVM específica.

Las etiquetas List y Compound pueden estar anidadas recursivamente y, a menudo, están anidadas recursivamente. También debe tenerse en cuenta que, en una lista de listas, cada una de las sublistas puede incluir un tipo diferente de etiqueta.

Formato de los Archivos[editar | editar código]

Un archivo NBT es una etiqueta compuesta GZip'd, nombre e ID de etiqueta incluidos. Algunos de los archivos utilizados por Minecraft pueden estar sin comprimir, pero en la mayoría de los casos los archivos siguen las especificaciones originales de Notch y están comprimidos con GZip. En Legacy Console Edition, chunks se comprimen con XMemCompress, una variación de un algoritmo de compresión LZX. No hay encabezado para especificar la versión o cualquier otra información, solo el archivo level.dat especifica la versión.


El como lo usan en Minecraft[editar | editar código]

El uso de Minecraft del formato NBT es extraño a veces. En algunos casos, las listas vacías pueden representarse como una lista de etiquetas de bytes en lugar de una lista del tipo correcto, o como una lista de etiquetas finales en las versiones más nuevas de Minecraft, lo que puede romper algunas herramientas NBT más antiguas. Además, casi todas las etiquetas raíz tienen una cadena de nombre vacía y encapsulan solo una etiqueta compuesta con los datos reales y un nombre. Por ejemplo:

  • Nbtsheet.png
    La etiqueta raíz para la mayoría de las estructuras NBT en Minecraft.
    • Nbtsheet.png
       SomeName: La única etiqueta contenida dentro de la etiqueta raíz: tiene un nombre y contiene todos los datos reales.

Otra rareza notable es que, aunque la especificación original de Notch permite espacios en los nombres de las etiquetas, e incluso el ejemplo usa espacios en los nombres de las etiquetas, Minecraft no tiene archivos conocidos en los que las etiquetas tengan espacios en sus nombres. También hay un uso inconsistente de mayúsculas y minúsculas, principalmente camelCase o PascalCase, pero a veces incluso en minúsculas.

Uses[editar | editar código]

Software[editar | editar código]

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 builtin converter between SNBT format and compressed NBT format. It comes with the client and the official server.[1]

Official[editar | editar código]

Véase también: Tutorials/Running the Data Generator

The 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.

Software de terceros[editar | editar código]

La comunidad ha desarrollado programas para ver y modificar archivos NBT comprimidos y sin comprimir:

Nombre NBT Version Descripción Capturas
CL-NBT 19132 CL-NBT es una implementación NBT en Common Lisp que puede leer y escribir archivos NBT y cargar y guardar archivos McRegion. El formato del yunque funciona con ligeras modificaciones.
MineBack Ultimate 19133 MineBack Ultimate proporciona un editor NBT completo que admite todos los tipos de archivos de formato NBT disponibles (Mapa, Nivel, Mundo, etc.). Viene con una GUI moderna y muchas funciones auxiliares. MineBackNBTEditor.png
NBT for Python 19133 Biblioteca para analizar y escribir archivos NBT, tanto independientes como en archivos de región, hecho en el lenguaje de Python. Se proporcionan ejemplos de aplicaciones para inspeccionar y editar los archivos de datos de Minecraft (estadísticas de bloque / cofre / mobs y mapeo mundial simple). Admite los antiguos formatos McRegion, pre-aplanado y los últimos Anvil.
NBTEdit 19132 Permite ver y modificar archivos NBT a través de un control de árbol de Windows. Está desactualizado no solo por ser una versión NBT antigua, sino porque no admite múltiples etiquetas con el mismo nombre y fuerza rangos incorrectos en algunos tipos, y carece de soporte para archivos NBT sin comprimir. NBTEdit Level.Dat.png
NBTExplorer - Forum Post 19133 Inspirado y basado en NBTEdit, este programa permite ver y editar archivos NBT a través de un control de árbol de Windows. Admite archivos NBT comprimidos y sin comprimir, y permite la edición directa de las estructuras NBT en archivos MCRegion y Anvil, level.dat, etc. NBTExplorer.png
NBT grammar for Synalyze It! 19132 Usando esta gramática Synalyze It! muestra un volcado hexadecimal codificado por colores junto con el árbol de etiquetas analizadas. Actualmente solo se admiten archivos sin comprimir. Synalyze-It-NBT-decoded.png
NEINedit 19132 NTB Editor para mac con una estructura de árbol basada en texto. NEINedit.png
NBT2YAML 19133 nbt2yaml presenta una interfaz de línea de comandos para leer y editar archivos Minecraft NBT usando un formato YAML personalizado. También incluye una API de Python para analizar y escribir archivos NBT desde una estructura de datos Python simple.
webNBT 19133 webNBT es un editor NBT que se ejecuta en navegadores modernos sin requerir que el usuario descargue una aplicación o use complementos de navegador de terceros (como Flash o JavaScript).

Historial[editar | editar código]

Plantilla:H Plantilla:H Plantilla:H

1.0.0September 28, 2011 Notch publico en twitter "Estoy trabajando en una forma de guardar datos arbitrarios con instancias de elementos."

Referencias[editar | editar código]

Plantilla:Java Edition