Minecraft Wiki
S'inscrire
Advertisement
Icône information
Cette fonctionnalité est exclusive à la Version Java 

Le format Named Binary Tag, ou plus généralement NBT est utilisé par Minecraft pour les différents fichiers dans lesquels il enregistre des données. Le format a été décrit brièvement par Notch sur un fichier de spécification(en). Le format est représenté sous forme "d'arbre" formé de différent tags. Tous les tags ont un ID et un nom. La première version était la 19132 et à été introduit en Bêta 1.3, et depuis le format Anvil, la version est 19133, le tag de type Int Array a été ajouté.

Type de TAG[]

Un tag est une partie individuelle de l'arbre NBT. Le premier octet est l'ID du tag suivi de 2 octets pour la longueur du nom, puis le nom sous forme de chaîne au format UTF-8 (Note TAG_END n'est pas nommé et ne contient pas les 2 octets supplémentaires; le nom est supposé être vide). Le nom des tags "peuvent" contenir des espaces bien que Minecraft n'utilise pas de noms avec des espaces. Enfin, en fonction du type de tag, les octets suivants font partie de la charge utile de ce tag. Cette liste décrit les 13 types de tag connus pour la version 19133 du format NBT:

ID Icône Tag Type Charge utile Description Capacité de stockage
0 TAG_End Aucune. Utilisé pour marquer la fin d'un TAG_Compound. Ce tag ne possède pas de nom, il s'agit donc seulement d'un octet valant 0. Il peut aussi être utilisé pour les TAG_List vide. N/A
1
TAG_Byte 1 byte / 8 bits, signed Entier signé. Parfois utilisé comme booléen. Compris entre -(27) et (27 - 1), ou (-128 et 127)
2
TAG_Short 2 bytes / 16 bits, signed, big endian Entier signé. Compris entre -(215) et (215 - 1), ou (-32,768 et 32,767)
3
TAG_Int 4 bytes / 32 bits, signed, big endian Entier signé. Compris entre -(231) et (231 - 1), ou (-2,147,483,648 et 2,147,483,647)
4
TAG_Long 8 bytes / 64 bits, signed, big endian Entier signé. Compris entre -(263) et (263 - 1), ou (-9,223,372,036,854,775,808 et 9,223,372,036,854,775,807)
5
TAG_Float 4 bytes / 32 bits, signed, big endian, IEEE 754-2008, binary32 Flottant signé. Précision variable;
Voir Single-precision floating-point format (en). Valeur maximum 3.4*1038
6
TAG_Double 8 bytes / 64 bits, signed, big endian, IEEE 754-2008, binary64 Flottant signé. Précision variable;
Voir Double-precision floating-point format (en). Valeur maximum 1.8*10308
7
TAG_Byte_Array TAG_Int's payload size, then size TAG_Byte's payloads. Tableau d'octets. Nombre maximum d’éléments entre (231 - 9) et (231 - 1) ou (2,147,483,639 et 2,147,483,647), dépend de la JVM.
8
TAG_String TAG_Short's payload length, then a UTF-8 string with size length. Chaîne de caractère en UTF-8. 32 767 octets interprétables en UTF-8 (voir Format UTF-8).
9
TAG_List La charge utile de TAG_Byte tagId, puis la charge utile de TAG_Int size, puis les tags size, puis tous de tags tagId. Une liste de charges utiles de tag, sans ID de tag répétée ou de nom de tag. En raison des limitations de la JVM et de l'implémentation de ArrayList, le nombre maximal d'éléments de liste est (231 - 9), ou 2,147,483,639. Notez également que les tags List et Compound ne peuvent pas être imbriquées au-delà d'une profondeur de 512.
10
TAG_Compound Liste de tags, suivis d'un TAG_End. Liste de tags, y compris leurs identifiants, noms et charges utiles. Aucun tag ne peut avoir le même nom. Contrairement aux listes, il n'y a pas de limite stricte au nombre de tag dans un TAG_Compound (bien sûr, il y a toujours la limite implicite de la mémoire virtuelle). Notez également que les tags List et Compound ne peuvent pas être imbriquées au-delà d'une profondeur de 512.
11
TAG_Int_Array La charge utile de TAG_Int size, puis size les charges utiles de TAG_Int. Un tableau des charges utiles de TAG_Int. Nombre d'éléments maximum entre (231 - 9) et (231 - 1), ou (2,147,483,639 and 2,147,483,647), dépend de la JVM.
12
TAG_Long_Array TAG_Int's payload size, then size TAG_Long's payloads. Un tableau des charges utiles de TAG_Long. Nombre d'éléments maximum entre (231 - 9) et (231 - 1), ou (2,147,483,639 and 2,147,483,647), dépend de la JVM.

Les tags List et Compound peuvent être et sont souvent imbriquées récursivement. Il convient également de noter que, dans une liste de listes, chacune des sous-listes peut énumérer un type différent de tag.

Format de fichier[]

Un fichier NBT est un GZip'd Compound tag, nom et ID inclus. Certains des fichiers utilisés par Minecraft peuvent ne pas être compressés, mais dans la plupart des cas, les fichiers sont conformes aux spécifications d'origine de Notch et sont compressés avec GZip. Dans la Version Xbox 360, les tronçon sont compressés avec XMemCompress, une variation d'un algorithme de compression LZX. Il n'y a pas d'en-tête pour spécifier la version ou toute autre information - seul le fichier level.dat spécifie la version.

Utilisation dans Minecraft[]

L'utilisation du format NBT par Minecraft est parfois étrange. Dans certains cas, les listes vides peuvent être représentées comme une liste de TAG_Byte plutôt qu'une liste de type correct, ou comme une liste de TAG_End dans les nouvelles versions de Minecraft, qui peuvent casser certains anciens outils NBT. De plus, presque chaque tag racine a une chaîne de nom vide et n'encapsule qu'un seul tag composée avec les données réelles et un nom. For instance:


  • Le tag racine pour la plupart des structures Minecraft NBT.

    •  UnNom: Le seul tag contenue dans le tag racine - il a un nom et contient toutes les données réelles.

Une autre bizarrerie notable est que, bien que la spécification originale de Notch permette des espaces dans les noms de tags, et même l'exemple utilise des espaces dans les noms de tags, Minecraft n'a aucun fichier connu où des tags ont des espaces dans leurs noms. Il y a également une utilisation incohérente de la casse des lettres, principalement lowerCamelCase ou UpperCamelCase, mais parfois même en minuscules.

Logiciel[]

Mojang a publié les sources des classes NBT en langage Java à destination des développeurs, en guise d'exemple et de référence. Ces classes sont issues du convertisseur McRegion -> Anvil. La communauté a également développé des outils pour visualiser et modifier les fichiers NBT (compressés ou non) :

Nom Version NBT Description Aperçu
NBT for Python 19133 Librairie en langage de script Python pour parcourir & écrire des fichiers NBT, seuls ou dans les fichiers de Région. Fournie avec des exemples d'application pour inspecter et éditer les fichiers de données Minecraft (statistiques sur les blocs, les coffres et les monstres; cartographie simple d'un monde). Compatible avec les formats McRegion, "pre-flattening" et Anvil récent.

Voir aussi[]

Pages semblables :
Format de niveau
Format Player.dat
Format de carte (objet)
Format Villages.dat

Advertisement