Формат nbt

Интересные факты

  • Размер гаста может ввести в заблуждение — у них меньше здоровья, чем у большинства враждебных мобов.
  • Гаста можно посадить в вагонетку, но это довольно трудно, и он продолжает атаковать, «сидя» в вагонетке.
  • Если гаст уже выпустил один шар, и его убили, а его шар ещё остался, то менее, чем через секунду снаряд исчезнет.
  • Гасты — единственные мобы, траектория движения которых никак не зависит от местоположения игрока: они могут летать как к игроку, так и от него (могут иногда просто улететь от игрока в разгаре боя).
  • Гасты, зомби, странники Края и дракон Края могут заметить игрока с гораздо большей дистанции, чем остальные мобы — с расстояния 64 блока.
  • Гаст — второй по величине моб.
  • У гаста есть две текстуры — одна с закрытым ртом и глазами, которую он использует в спокойном состоянии, и другая с раскрытым ртом и глазами, которую он использует, когда запускает огненный шар.
  • C418 объяснил в AMA на Reddit, что бо́льшая часть звуковых эффектов гаста была записана с участием домашней кошки музыканта, пока та спала.
  • Если отбить огненный шар мечом, зачарованным на «Добычу», и тем самым убить гаста, то может выпасть более 1 слезы.
  • Гаста можно убить одним выстрелом из лука, при условии, что он зачарован хотя бы на «Силу» I и его тетива полностью натянута.
  • В наборе LEGO «Minecraft Micro World — The Nether» было представлено два гаста, наряду с зомби-свиночеловеком.
  • Железный голем не атакует гаста, даже если они будут находиться очень близко друг к другу.
  • Убитый собственным огненным шаром, гаст становится оранжевым, а не красным. Это происходит потому, что гаст поджигается.‌[только для Bedrock Edition]
  • Взрывающиеся зелья действуют на гаста только при попадании в его нижнюю половину.
  • Несмотря на отсутствие видимых ног, гаст всё ещё способен издавать звуки шагов.
  • В предварительных сборках 13w02a (для 1.5), и 13w24a (для 1.6.1) текстура огненного шара гаста была изменена на алмазный шлем и на рамку портала Края соответственно.
  • Гаст — единственный моб, не являющийся нежитью, и к которому иссушитель не враждебен.
  • Гаст может летать сквозь лаву, не получая урона.

Tag Basics[edit | edit source]

Structure of a Tagedit | edit source

First off, each tag has three parts:

(byte, 0-12)
(TAG_String)

When using commands, the is figured out based on the given , and the payload is what follows the colon — basically its value. The payload ought to fit the expected syntax. So a tag expecting an integer will not accept a string.

Number types can be denoted with a letter at the end of the value (such as for a byte). Without a letter, the code assumes an integer, which works fine for most numbers but behaves differently. Using a literal integer like this to exceed a type’s expected range simply wraps the number back to 0 at the limit.

Tag Typesedit | edit source

TAG_End
Unnamed, no payload, unusable in commands. Used in data storage to mark the end of TAG_Compound.
TAG_Byte
Payload: A single signed byte (8 bits)
Ranges from to . Used for many booleans.
In Commands: or
TAG_Short
Payload: A single signed short integer (2 bytes, big endian)
Ranges from to
In Commands: or
TAG_Int
Payload: A single signed integer (4 bytes, big endian)
Ranges from to
In Commands: A literal number without a decimal
TAG_Long
Payload: A single signed long integer (8 bytes, big endian)
Ranges from to
In Commands: or
TAG_Float
Payload: A floating-point number (4 bytes, big endian, IEEE 754-2008, single precision)
Maxes around , or
In Commands: or , decimal or no decimal
TAG_Double
Payload: A floating-point number (8 bytes, big endian, IEEE 754-2008, double precision)
Maxes around , or
In Commands: , , or a decimal number
TAG_Byte_Array
Payload: Unnamed TAG_Int (length), then an array of bytes of unspecified format. The length of this array is bytes.
In Commands:
( is determined by the length of the given array)
TAG_String
Payload: Unnamed TAG_Short (length), then an array of bytes of length defining a string in UTF-8 format.
In Commands:
( is determined by the length of the given text)
Note that as is usual with most strings, if quotes are to be included within the string, escape codes () must be used for the inner quotes in commands.
TAG_List
Payload: Unnamed TAG_Byte (tagId), unnamed TAG_Int (length), then a sequential list of unnamed Tags of type . The length of this array is Tags.
In Commands:
( is determined by the length of the given list)
TAG_Compound
Payload: A sequential list of unique Named Tags. This array is terminated by a TAG_End.
Nested Compound Tags are terminated by their own internal End Tags.
In Commands:
(The terminating TAG_End is irrelevant to command usage)
TAG_Int_Array
Payload: Unnamed TAG_Int (size), then an array of unnamed TAG_Ints. The length of this array is Tags.
An array of integers.
In Commands:
( is determined by the size of the given array)
TAG_Long_Array
Payload: Unnamed TAG_Int (size), then an array of unnamed TAG_Longs. The length of this array is Tags.
In Commands: Used as
( is determined by the size of the given array)

История

Альфа-версия Java Edition
v1.2.0 Notch опубликовал пост о работе над «самым надоедливым мобом за всё время», он также добавил: «вы будете ненавидеть гастов».
Первоначально предполагалось, что гасты будут появляться вблизи портала Нижнего мира в верхнем мире. Однако эта функция не была реализована.
preview-версия Halloween Update была отправлена двум игровым компаниям; в их статьях было подробно описано поведение гастов.
preview
Гаст немного расширялся перед тем, как выстрелить , подобно криперу. Однако, этот эффект не работает в сетевой игре.
Бета-версия Java Edition
1.7 Теперь гаст целится в игрока, а не в камеру. До этого нажатие F5 (переход в вид от третьего лица) позволяло легко направлять в сторону, а не на персонажа.
Официальный выпуск Java Edition
1.0.0 Beta 1.9 Prerelease Теперь из гаста выпадает слеза гаста.
Теперь гаст подвержен влиянию света и больше не появляется с одинаковой яркостью текстуры.
Beta 1.9 Prerelease 5 Теперь гаст может быть убит своим же огненным шаром, это позволяет получить новое достижение «Вернуть отправителю».
1.1 ? Как можно услышать в , у гаста теперь есть неиспользуемый «нежный крик», который на самом деле является высоким тоном звука рога (звучит как гудок буксира в классическом мультфильме).
1.2.1 12w05a Обновлён хитбокс гаста, чтобы урон проходил по всему телу, кроме щупалец. До этого гаст мог быть ранен только ударом по щупальцам и по нижней части тела.
1.3.1 12w19a Теперь гаст использует особый звук при смерти, а не звук при получения урона.
В результате разделения клиента и сервера, гаст больше не расширяется перед выстрелом в одиночной игре.
1.5 13w02a
13w02b
1.8 14w06a ИИ гаста немного изменён. Он не видит игрока, если не находится с ним почти на уровне глаз. При атаке гаст теперь поворачивает всё своё тело лицом к игроку и несколько раз стреляет влево и вправо от игрока. Теперь он наделён абсолютной точностью , стреляет прямо в голову игрока, по сравнению с ранними версиями, когда огненный шар направлялся немного выше головы игрока.
Код, позволяющий гасту расширяться перед выстрелом, удалён.
1.11 16w32a Идентификатор гаста изменён с на .
Идентификатор гаста изменён с на .
16w40a Теги , , , и удалены из .
Тег гаста больше ни для чего не используется, но всё ещё сохраняется/читается.
1.14 18w43a
1.16 20w06a Звуки гастов теперь слышны на более коротком расстоянии.
Гасты теперь спаунятся в долине песка душ.
0.11.0 build 2
Гаст ещё не доступен в игре без редактирования.
0.12.1 build 1 Теперь гаста можно заспаунить, используя яйцо призывания.
Теперь гаст натурально спаунится в Нижнем мире.
build 6 Теперь гаст лучше наносит удар игроку.
build 7 Теперь из гаста выпадает порох и слеза гаста.
build 8 Хитбокс гаста теперь больше.
build 13 Гаст теперь имеет собственные звуки.
0.13.0 build 1 Скорость спауна гастов увеличена.
build 4 Скорость спауна гастов увеличена ещё больше.
0.14.0 build 1 Открытые глаза гаста теперь излучают свет.
1.1.0 alpha 1.1.0.0 Идентификатор сущности для был изменён с на .
Официальный выпуск Bedrock Edition
1.10.0 beta 1.10.0.3
Legacy Console Edition
Снижена громкость звуковых эффектов гаста.
Дальность слышимости выстрела увеличена.
Громкость звуковых эффектов гаста немного уменьшена.
PlayStation 4 Edition
New Nintendo 3DS Edition
0.1.0

Tag Payloads[edit | edit source]

The payload is the data a Tag carries. It might be a number or, in the case of Compound Tags and List Tags, other Tags. In using commands, one simply needs to avoid mismatching expected data types, keep values within expected ranges, and close all brackets and braces that are opened.

For a deeper understanding of payloads, it might help to look at what an example Compound Tag would look like in data.

ON DISK: 00001010 00000000 00000011 01101000 01100001 01101101 00001000 00000000 00000111 01110000 01101001 01100111 01001110 01100001 01101101 01100101 00000000 00000110 01001000 01100001 01101101 01110000 01110101 01110011 00000011 00000000 00000101 01110110 01100001 01101100 01110101 01100101 00000000 00000000 00000000 01111000 00000000
    DEC: 10       0        3        h        a        m        8        0        7        p        i        g        N        a        m        e        0        6        H        a        m        p        u        s        3        0        5        v        a        l        u        e        0        0        0        120      0

       __ ___ _____ _ ___ _____________ ___ ___________ _ ___ _________ _________ _
BYTES: 10 0 3 h a m 8 0 7 p i g N a m e 0 6 H a m p u s 3 0 5 v a l u e 0 0 0 120 0
                   |8: TAG_String      |  payload      |3: TAG_Int     | payload | TAG_End |
    10:TAG_Compound|                                payload                                |

This is understood in the following way. Recall that all named tags have a (1 byte), a (Unnamed TAG_String), and a payload.

  • The first byte of data read is the . Above is , so this represents a TAG_Compound. The next two bytes read are the length of its name. (Two bytes because it expects a short — see above.) The given length is . Those next 3 bytes read . So far it’s been revealed that the first Tag is a Compound Tag named «ham». Its payload is everything that follows, until TAG_End.
    • The next byte is , so this is a TAG_String. The upcoming unnamed TAG_String tells us it has the 7-byte name of «pigName». Its payload follows.
    • The next byte is , so next is a TAG_Int. It has the 5-byte name of «value». Its payload follows in the next 4 bytes: . The next completed Tag is
    • The next byte is , so next is a TAG_End.

The completed Compound Tag is as follows:

TAG_Compound("ham"):
   TAG_String("pigname"): 6 Hampus,
   TAG_Int("value"): 120,
   TAG_End

Using a command to summon a pig with this example tag would look like this:

/summon minecraft:pig ~ ~ ~ {ham:{pigname:"Hampus",value:120}}

Examples[]

  • To get the saturation level of the current player:
  • To make the nearest item within 10 blocks unable to be picked up by players:
  • To get the Y-position of a random item:
  • To get the item ID of the item in the first hotbar slot of the nearest player:
  • To set the armor attribute of the dolphin closest to coordinates (0, 64, 0) to 20:
  • To change the first item in a chest located at coordinates (1, 64, 1) into a diamond block, keeping all NBT data:
  • To make the nearest zombie have a 80% chance to drop items in its left hand when it dies, and never drop that in the main hand:
  • To make the nearest zombie have a 80% chance to drop items in its left hand when it dies, and never drop that in its main hand, without affecting the chance for main hand:

List of NBT Tags

Here is a list of the NBT tags that you can use for in Minecraft Java Edition (PC/Mac) 1.16 and 1.17:

NBT Tag Value (Description) Works With
Invul

ticks (The number of game ticks until the invincibility shield for the wither boss wears off)

Example
{Invul:2000}

/summon/data
CustomName

name (The name to assign to the wither boss)

Example
{CustomName:»\»Destruction\»»}

/summon/data
Health

number (The number of health points the wither boss has)

Example
{Health:25.0f}

/summon/data
AbsorptionAmount

number (The number of absorption health points the wither boss has)

Example
{AbsorptionAmount:2.0f}

/summon/data
Invulnerable

0 (The wither boss will take damage like normal)
1 (The wither boss will not take any damage from attacks or physical surroundings)

Example
{Invulnerable:1}

/summon/data
PersistenceRequired

0 (The wither boss will despawn naturally)
1 (The wither boss won’t despawn)

Example
{PersistenceRequired:1}

/summon/data
NoAI

0 (The wither boss will have artificial intelligence and will move/behave like normal)
1 (The wither boss will have no artificial intelligence and will appear motionless)

Example
{NoAI:1}

/summon/data
Silent

0 (The wither boss will make its usual noises in the game)
1 (The wither boss will not make any noise in the game)

Example
{Silent:1}

/summon/data
Fire

ticks (The number of game ticks until the wither boss is no longer on fire — there are 20 ticks in a second)

Example
{Fire:60}

/summon/data
PortalCooldown

ticks (The number of game ticks until the wither boss can go through a portal again — there are 20 ticks in a second)

Example
{PortalCooldown:120}

/summon/data
Air

ticks (The number of game ticks the wither boss has air left for)

Example
{Air:120}

/summon/data
id

wither (The entity value used to represent a wither boss in the EntityTag or Passengers tag)

Example
{id:wither}

/summon/give
Passengers

The mob that is riding on the wither boss. Use the entity value for the passenger mob

Example of skeleton as passenger
Passengers:

/summon/data

NBT Tag Examples

To summon a wither boss that is named Destruction:

/summon wither ~ ~ ~ {CustomName:"\"Destruction\""}

To summon a wither boss that is named Destruction and has no artificial intelligence:

/summon wither ~ ~ ~ {CustomName:"\"Destruction\"", NoAI:1}

Array-Sortierung[]

Oft enthält ein Array die Werte einer Fläche oder eines Raumes der Minecraft-Welt. Die Angabe zur Sortierung der Array-Daten ist entscheidend, um die korrekte Position eines Blockes im Array zu finden. Bei Flächen ist die Sortierung meistens XZ. Das bedeutet, dass erst alle X-Werte für Z=0 aufgeführt sind, gefolgt von allen X-Werten für Z=1 etc. Beispiel: die Position X=4 / Z=7 befindet sich in einem 16×16-XZ-Array an Position 7×16+4 = 116.

Die seltenere ZX-Sortierung bedeutet, dass erst alle Z-Werte für X=0 aufgeführt sind, gefolgt von allen Z-Werten für X=1 etc. Beispiel: die Position X=4 / Z=7 befindet sich in einem 16×16-ZX-Array an Position 4×16+7 = 71.

Chunk-Sektionen werden in einem Array in XZY-Sortierung abgelegt. Das bedeutet, dass erst alle XZ-Flächen für Y=0 aufgeführt sind, gefolgt von allen XZ-Flächen für Y=1 etc. Beispiel: die Position X=4 / Y=5 / Z=7 befindet sich in einem 16×16×16-XZY-Array an Position 5×256+7×16+4 = 1396.

List of NBT Tags

Here is a list of the NBT tags that you can use for in Minecraft Java Edition (PC/Mac) 1.16 and 1.17:

NBT Tag Value (Description) Works With
Owner

name (The player that owns the wolf. When you set this tag, the Owner tag will automatically be populated with the appropriate UUID value for the player.)

Example
{Owner:DigMinecraft}

/summon/data
CollarColor

0 (The collar is white)
1 (The collar is orange)
2 (The collar is magenta)
3 (The collar is light blue)
4 (The collar is yellow)
5 (The collar is lime)
6 (The collar is pink)
7 (The collar is gray)

8 (The collar is light gray)
9 (The collar is cyan)
10 (The collar is purple)
11 (The collar is blue)
12 (The collar is brown)
13 (The collar is green)
14 (The collar is red)
15 (The collar is black)

Example
{CollarColor:4}

/summon/data
Sitting

0 (The wolf is standing)
1 (The wolf is sitting)

Example
{Sitting:1}

/summon/data
InLove

ticks (The number of game ticks that the wolf is in love mode and will try to breed with another wolf)

Example
{InLove:400}

/summon/data
Age

ticks (The age of the wolf in game ticks. Use 0 or higher for an adult. Use a negative number such as -25000 for a baby.)

Example
{Age:0} example for adult
{Age:-25000} example for baby

/summon/data
ForcedAge

ticks (When a baby wolf matures, the Age data tag will be set to ForcedAged. However, there have been bugs with this data tag so it may not work properly.)

Example
{ForcedAge:0}

/summon/data
Leash

Indicates the coordinates of the fence that the wolf is leashed to.

Example
{Leash:{X:92,Y:72,Z:-206}}

/summon/data
CustomName

name (The name to assign to the wolf)

Example
{CustomName:»\»Buddy\»»}

/summon/data
Health

number (The number of health points the wolf has)

Example
{Health:25.0f}

/summon/data
AbsorptionAmount

number (The number of absorption health points the wolf has)

Example
{AbsorptionAmount:2.0f}

/summon/data
Invulnerable

0 (The wolf will take damage like normal)
1 (The wolf will not take any damage from attacks or physical surroundings)

Example
{Invulnerable:1}

/summon/data
PersistenceRequired

0 (The wolf will despawn naturally)
1 (The wolf won’t despawn)

Example
{PersistenceRequired:1}

/summon/data
NoAI

0 (The wolf will have artificial intelligence and will move/behave like normal)
1 (The wolf will have no artificial intelligence and will appear motionless)

Example
{NoAI:1}

/summon/data
Silent

0 (The wolf will make its usual noises in the game)
1 (The wolf will not make any noise in the game)

Example
{Silent:1}

/summon/data
Fire

ticks (The number of game ticks until the wolf is no longer on fire — there are 20 ticks in a second)

Example
{Fire:60}

/summon/data
PortalCooldown

ticks (The number of game ticks until the wolf can go through a portal again — there are 20 ticks in a second)

Example
{PortalCooldown:120}

/summon/data
Air

ticks (The number of game ticks the wolf has air left for)

Example
{Air:120}

/summon/data
id

wolf (The entity value used to represent a wolf in the EntityTag or Passengers tag)

Example
{id:wolf}

/summon/give
Passengers

The mob that is riding on the wolf. Use the entity value for the passenger mob

Example of skeleton as passenger
Passengers:

/summon/data

NBT Tag Examples

To summon a wolf that is tamed, owned by DigMinecraft and has a blue collar:

/summon wolf ~ ~ ~ {Owner:DigMinecraft, CollarColor:11}

To summon a baby wolf named Buddy:

/summon wolf ~ ~ ~ {CustomName:"\"Buddy\"", Age:-25000}

Использование в Minecraft[]

Использование формата NBT в Minecraft местами является странным. В некоторых случаях пустые списки могут быть представлены списками байтов (или тегов End в более новых версиях Minecraft), а не списками правильного типа. К тому же, каждый корневой тег имеет пустое название и включает только один составной тег с самими данными и названием. Например:

  • Корневой тег для большинства структур NBT в Minecraft

     Название: Единственный тег, содержащийся в корневом теге. Он имеет название и содержит сами данные.

    .

Ещё одна заметная странность — это то, что, хотя оригинальная спецификация Нотча допускает пробелы в названиях тегов и приведённый в ней пример использует это, в Minecraft нет файлов с пробелами в тегах. Также использование прописных букв в названиях тегов непостоянно: где-то с прописной буквы пишется каждое слово, где-то — каждое, кроме первого, а где-то используются только строчные буквы.

Область применения

  • level.dat хранится в сжатом формате NBT.
  • Файлы <player>.dat хранятся в сжатом формате NBT.
  • idcounts.dat хранится в несжатом формате NBT.
  • villages.dat хранится в сжатом формате NBT.
  • Файлы map_<#>.dat хранятся в сжатом формате NBT.
  • servers.dat, используется для хранения списка сохранённых серверов как несжатый формат NBT.
  • Чанки хранятся в сжатом формате NBT в файлах областей.
  • хранится в сжатом формате NBT.
  • Натуральные структуры хранятся в сжатом формате NBT.

Result[]

Command Trigger Java Edition
any the arguments are not specified correctly Unparseable
is unloaded or out of the world Failed
the block at is not a block entity
(in mode) fails to resolve to an entity (named player must be online)
more than one tag is got
does not exist
the obtained tag is not a numeric tag
nothing is changed
try to edit player’s data
is the root compound tag
is unloaded or out of the world
the block at is not a block entity
fails to resolve to an entity (named player must be online)
does not exist
the target tag isn’t a list or array
source data isn’t of an item type appropriate for the list
the index is invalid
the target path does not specify a compound tag
the source data is not a compound tag
any On success Get, merge, modify, and remove NBT data.

Определение тега[]

Тег — отдельный элемент дерева данных. Первый байт в теге — это тип тега (также называемый идентификатором или ID), затем 2 байта хранят длину названия, затем название в виде строки в формате UTF-8 (следует отметить, что TAG_End не имеет названия и не включает дополнительные 2 байта; предполагается, что название пустое). Названия тегов могут содержать пробелы, хотя сам Minecraft не имеет таких тегов. Наконец, следующие байты — содержимое тега, зависящее от типа тега. Таблица ниже описывает 12 известных тегов в версии NBT 19133:

ID Иконка Тип тега Содержимое Описание Ёмкость
TAG_End Нет. Используется для обозначения конца составных тегов. У этого тега нет названия, поэтому он всегда представлен одним байтом, равным 0. Также этот тип используется в пустых тегах списков.
1 TAG_Byte 1 байт / 8 битов, со знаком Целочисленный тип со знаком. Иногда используется для логических переменных. Весь промежуток от -(27) до (27 — 1)(от -128 до 127)
2 TAG_Short 2 байта / 16 битов, со знаком, обратный порядок байтов Целочисленный тип со знаком. Весь промежуток от -(215) до (215 — 1)(от -32 768 до 32 767)
3 TAG_Int 4 байта / 32 бита, со знаком, обратный порядок байтов Целочисленный тип со знаком. Весь промежуток от -(231) до (231 — 1)(от -2 147 483 648 до 2 147 483 647)
4 TAG_Long 8 байт / 64 бита, со знаком, обратный порядок байтов. Целочисленный тип со знаком. Весь промежуток от -(263) до (263 — 1)(от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807)
5 TAG_Float 4 байта / 32 бита, со знаком, обратный порядок байтов, IEEE 754-2008, binary32 Тип чисел с плавающей точкой со знаком. Точность меняется на протяжении числовой прямой;см. .
6 TAG_Double 8 байт / 64 бита, со знаком, обратный порядок байтов, IEEE 754-2008, binary64 Тип чисел с плавающей точкой со знаком. Точность меняется на протяжении числовой прямой;см. .
7 TAG_Byte_Array Один TAG_Int, обозначающий размер, затем размер тегов TAG_Byte. Массив байтовых переменных. Максимальное число элементов изменяется от (231 — 9) до (231 — 1) (от 2 147 483 639 до 2 147 483 647) и зависит от текущей JVM.
8 TAG_String Один TAG_Short, обозначающий длину, затем строка в формате UTF-8 с размером длина. Строка в формате UTF-8. Она имеет размер, а не завершается нулём. 32 767 точек кода UTF-8 (см. ; наиболее распространённые символы состоят из одной точки кода.
9 TAG_List Один TAG_Byte, обозначающий тип, затем TAG_Int, обозначающий размер, затем размер тегов типа тип. Последовательный список тегов без ID и без названий. В связи с ограничениями JVM и реализацией ArrayList, максимальный размер списка — (231 — 9) или 2 147 483 639. Также следует отметить, что максимальная глубина размещения списков и составных тегов равна 512.
10 TAG_Compound Полные теги, затем один тег TAG_End. Список полных тегов, включающий их типы, названия и содержимые. Все теги должны иметь различные имена. В отличие от списков, ограничения на количество тегов в составном теге нет (хотя имеется неявное ограничение в виде размера виртуальной памяти). Также следует отметить, что максимальная глубина размещения списков и составных тегов равна 512.
11 TAG_Int_Array Один TAG_Int, обозначающий размер, затем размер тегов TAG_Int. Массив тегов TAG_Int. Максимальное число элементов изменяется от (231 — 9) до (231 — 1) (от 2 147 483 639 до 2 147 483 647) и зависит от текущей JVM.
12 TAG_Long_Array Одно значение TAG_Int (без заголовка), обозначающий размер, затем набор тегов TAG_Long. Массив тегов TAG_Long. Максимальное число элементов изменяется от (231 — 9) до (231 — 1) (от 2 147 483 639 до 2 147 483 647) и зависит от текущей JVM.

Списки и составные теги могут быть вложены. Следует отметить, что в списке списков подсписки могут иметь разные типы элементов.

Node[]

These are all seven types of nodes available.

The tags collection start with only one element (i.e. the root tag) and changes along the nodes on the path. NBT path consumers operate on the final collection of the tags.

Name Format Description Selection Result Example Example Description
Root Compound Tag , where tag is the compound NBT content and can be empty. Selects the starting tag only if it matches the compound tag given (if given).Only applicable as the first element in the path. The starting tag, or nothing if matching fails. Selects the root tag if it has a subtag  Invisible with value .
Selects the root tag.
Named Tag , where name can be a plain or an escaped string Selects the subtags named name in the previous tags. A collection of tags; no more elements than the previous tag collection. May be nothing. Selects the VillagerData subtag.
Selects the A cool name[] subtag.
Named Compound Tag , where name can be a plain or an escaped string, and tag is the compound NBT content which can be empty. Selects the sub compound tags matching the compound tag given (if given) and named name in the previous tags. A collection of compound tags; no more elements than the previous tag collection. May be nothing. Select the  VillagerData tag only if it has a subtag  profession with value .
Selects the  VillagerData tag if it is a compound tag.
Element of Named List or Array Tag , where name can be a plain or an escaped string and index is an integer. Selects elements at index (or if index is negative) of the lists (or array) named name in the previous tags. A collection of tags; no more elements than the previous tag collection. May be nothing. Selects the first child tag in the «Pos» sublist (or array).
Selects the last child tag in the «Inventory» sublist (or array).
All Elements of Named List or Array Tag Selects all elements of the sub-lists (or array) named name in the previous tags. A collection of tags; may have more elements than the previous tag collection. May be nothing. Select all the elements in the «ActiveEffects» subtag of the last tag.
Compound Elements of Named List Tag , where name can be a plain or an escaped string and tag is the compound NBT content which can be empty. Selects the compound elements matching the compound tag given (if given) and in the lists named name in the previous tags. A collection of compound tags; may have more elements than the previous tag collection. May be nothing. Select the elements of  Inventory tag that has a subtag  Count with value .
Selects the elements of  Foo tag.
Elements of Sub-List (or Array) of Named List Tag , where name can be a plain or an escaped string, index is an integer, and tag is the compound NBT content which can be empty. Selects the child elements of the child elements in the lists named name in the previous tags. A collection of tags; may have more elements than the previous tag collection. May be nothing. Select the elements of the sub-lists in  foo tag.
Select the baz tag in the first element of the first element of the bar list in the  foo tag.

In the path, (dot/period) characters separate the nodes. The nodes can be mixed and matched, except the root node with object must be the first in the path when it is present.

Output[]

Command Edition Situation Success Count
any Java Edition On fail
On success 1 1 1
a numeric tag is got 1 1 the obtained value after rounding down
a list or array tag is got 1 1 The number of elements in this list or array
a string tag is got 1 1 The length of the string
a compound tag is got 1 1 The number of tags that are direct children of that compound
On success 1 1 the obtained value multiplied by , then rounded down
On success 1 1 1
On success 1 1 1
On success 1 1 the number of lists or arrays to which new elements are added
On success 1 1 the number of target tags that was successfully modified
On success 1 1 the number of target compound tags that was successfully modified

Other NBT Tags

Here are some of the other NBT tags (formerly called data tags) in Minecraft:

NBT Tags

NBT Tags for Player

NBT Tags for Armor Stand

NBT Tags for Bat

NBT Tags for Bee

NBT Tags for Blaze

NBT Tags for Boat

NBT Tags for Cat

NBT Tags for Cave Spider

NBT Tags for Chicken

NBT Tags for Cod

NBT Tags for Cow

NBT Tags for Creeper

NBT Tags for Dolphin

NBT Tags for Donkey

NBT Tags for Drowned

NBT Tags for Elder Guardian

NBT Tags for Ender Crystal

NBT Tags for Ender Dragon

NBT Tags for Enderman

NBT Tags for Endermite

NBT Tags for Evoker

NBT Tags for Fireball

NBT Tags for Firework Rocket

NBT Tags for Fox

NBT Tags for Ghast

NBT Tags for Giant

NBT Tags for Guardian

NBT Tags for Hoglin

NBT Tags for Horse

NBT Tags for Husk

NBT Tags for Illusioner

NBT Tags for Iron Golem

NBT Tags for Llama

NBT Tags for Magma Cube

NBT Tags for Mooshroom

NBT Tags for Mule

NBT Tags for Ocelot

NBT Tags for Panda

NBT Tags for Parrot

NBT Tags for Phantom

NBT Tags for Pig

NBT Tags for Piglin

NBT Tags for Pillager

NBT Tags for Polar Bear

NBT Tags for Pufferfish

NBT Tags for Rabbit

NBT Tags for Ravager

NBT Tags for Salmon

NBT Tags for Sheep

NBT Tags for Shulker

NBT Tags for Shulker Bullet

NBT Tags for Silverfish

NBT Tags for Skeleton

NBT Tags for Skeleton Horse

NBT Tags for Slime

NBT Tags for Snow Man

NBT Tags for Spider

NBT Tags for Squid

NBT Tags for Stray

NBT Tags for Strider

NBT Tags for Trader Llama

NBT Tags for Tropical Fish

NBT Tags for Turtle

NBT Tags for Vex

NBT Tags for Villager

NBT Tags for Wandering Trader

NBT Tags for Witch

NBT Tags for Wither Boss

NBT Tags for Wither Skeleton

NBT Tags for Wolf

NBT Tags for Zoglin

NBT Tags for Zombie

NBT Tags for Zombie Horse

NBT Tags for Zombie Villager

NBT Tags for Zombified Piglin

TAG definition[]

A tag 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 (Note TAG_End is not named and does not contain the extra 2 bytes; the name is assumed to be empty). The name of tags may contain spaces, although Minecraft itself never saves tags with spaces in the names. Finally, depending on the type of the tag, the bytes that follow are part of that tag’s payload. This table describes each of the 13 known tags in version 19133 of the NBT format:

ID Icon Tag Type Payload SNBT Format[Java edition only] Description Storage Capacity
TAG_End None. Used to mark the end of compound tags. This tag does not have a name, so it is only ever a single byte 0. It may also be the type of empty List tags. N/A
1 TAG_Byte 1 byte / 8 bits, signed or A signed integral type. Sometimes used for booleans. Full range of -(27) to (27 — 1)(-128 to 127)
2 TAG_Short 2 bytes / 16 bits, signed, big endian or A signed integral type. Full range of -(215) to (215 — 1)(-32,768 to 32,767)
3 TAG_Int 4 bytes / 32 bits, signed, big endian A signed integral type. Full range of -(231) to (231 — 1)(-2,147,483,648 to 2,147,483,647)
4 TAG_Long 8 bytes / 64 bits, signed, big endian or A signed integral type. Full range of -(263) to (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 or A signed floating point type. Precision varies throughout number line;See Single-precision floating-point format. Maximum value about 3.4*1038
6 TAG_Double 8 bytes / 64 bits, signed, big endian, IEEE 754-2008, binary64 , or A signed floating point type. Precision varies throughout number line;See Double-precision floating-point format. Maximum value about 1.8*10308
7 TAG_Byte_Array TAG_Int’s payload size, then size TAG_Byte’s payloads. An array of bytes. Maximum number of elements ranges between (231 — 9) and (231 — 1) (2,147,483,639 and 2,147,483,647), depending on the specific JVM.
8 TAG_String A TAG_Short-like, but instead unsigned payload length, then a UTF-8 string resembled by length bytes. , (Πρότυπο:Cd within needs to be escaped to Πρότυπο:Cd), or (Πρότυπο:Cd within needs to be escaped to Πρότυπο:Cd) A UTF-8 string. It has a size, rather than being null terminated. 65,535 bytes interpretable as UTF-8 (see ; most commonly-used characters are a single byte).
9 TAG_List TAG_Byte’s payload tagId, then TAG_Int’s payload size, then size tags’ payloads, all of type tagId. A list of tag payloads, without repeated tag IDs or any tag names. Due to JVM limitations and the implementation of ArrayList, the maximum number of list elements is (231 — 9), or 2,147,483,639. Also note that List and Compound tags may not be nested beyond a depth of 512.
10 TAG_Compound Fully formed tags, followed by a TAG_End. A list of fully formed tags, including their IDs, names, and payloads. No two tags may have the same name. Unlike lists, there is no hard limit to the number of tags within a Compound (of course, there is always the implicit limit of virtual memory). Note, however, that Compound and List tags may not be nested beyond a depth of 512.
11 TAG_Int_Array TAG_Int’s payload size, then size TAG_Int’s payloads. An array of TAG_Int’s payloads. Maximum number of elements ranges between (231 — 9) and (231 — 1) (2,147,483,639 and 2,147,483,647), depending on the specific JVM.
12 TAG_Long_Array TAG_Int’s payload size, then size TAG_Long’s payloads. An array of TAG_Long’s payloads. Maximum number of elements ranges between (231 — 9) and (231 — 1) (2,147,483,639 and 2,147,483,647), depending on the specific JVM.

The List and Compound tags can be and often are recursively nested. It should also be noted that, in a list of lists, each of the sub-lists can list a different kind of tag.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector