Формат 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 |
/summon/data |
CustomName |
name (The name to assign to the wither boss) Example |
/summon/data |
Health |
number (The number of health points the wither boss has) Example |
/summon/data |
AbsorptionAmount |
number (The number of absorption health points the wither boss has) Example |
/summon/data |
Invulnerable |
0 (The wither boss will take damage like normal) Example |
/summon/data |
PersistenceRequired |
0 (The wither boss will despawn naturally) Example |
/summon/data |
NoAI |
0 (The wither boss will have artificial intelligence and will move/behave like normal) Example |
/summon/data |
Silent |
0 (The wither boss will make its usual noises in the game) Example |
/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 |
/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 |
/summon/data |
Air |
ticks (The number of game ticks the wither boss has air left for) Example |
/summon/data |
id |
wither (The entity value used to represent a wither boss in the EntityTag or Passengers tag) Example |
/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 |
/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 |
/summon/data |
CollarColor |
0 (The collar is white) 8 (The collar is light gray) Example |
/summon/data |
Sitting |
0 (The wolf is standing) Example |
/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 |
/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 |
/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 |
/summon/data |
Leash |
Indicates the coordinates of the fence that the wolf is leashed to. Example |
/summon/data |
CustomName |
name (The name to assign to the wolf) Example |
/summon/data |
Health |
number (The number of health points the wolf has) Example |
/summon/data |
AbsorptionAmount |
number (The number of absorption health points the wolf has) Example |
/summon/data |
Invulnerable |
0 (The wolf will take damage like normal) Example |
/summon/data |
PersistenceRequired |
0 (The wolf will despawn naturally) Example |
/summon/data |
NoAI |
0 (The wolf will have artificial intelligence and will move/behave like normal) Example |
/summon/data |
Silent |
0 (The wolf will make its usual noises in the game) Example |
/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 |
/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 |
/summon/data |
Air |
ticks (The number of game ticks the wolf has air left for) Example |
/summon/data |
id |
wolf (The entity value used to represent a wolf in the EntityTag or Passengers tag) Example |
/summon/give |
Passengers |
The mob that is riding on the wolf. Use the entity value for the passenger mob Example of skeleton as passenger |
/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.