Здесь надо замутить невероятно чёткий и подробный гадй/мануал по использованию NBT-тегов для использования более крутых команд в в командных блоках.
Техническая информация (англ.):
Примеры использования:
Наши наработки:
— в теории, можно использовать эти тэги для автоматизации торговли с сервером или между игроками, сначала проверяя количество, например, изумрудов в инвентаре игрока, а затем забирая их оттуда -> после чего выдавать товар игроку также в инвентарь;
— также можно спаунить монстров с заданными характеристиками, например, для создания своих внутриигровых квестов;
Источник: mc.bbcity.ru
Как сделать крафт с NBT тегами [1.16.1] [1.15.2] [1.14.4]
В данном видео вы узнаете как добавить крафты с зачарованиями, тегами, текстурами и т.д. начиная с версии майнкрафта 1.13.
NBT ТЕГИ ДЛЯ МАЙНКРАФТ 1.7 — 1.13+
Видео
Скачать датапак
Сайт из видео https://crafting.thedestruc7i0n.ca |
— | — |
Скачать датапак из видео https://minecraft-inside.ru/download/157100/ |
3,90 КБ | 9 июля 2020 |
Источник: minecraft-inside.ru
Что такое nbt tag в майнкрафте
Формат именованного двоичного тега ( NBT ) используется Minecraft для различных файлов, в которых он сохраняет данные. Формат предназначен для хранения данных в древовидной структуре, состоящей из различных тегов . У всех тегов есть идентификатор и имя.
Еще один более удобный формат NBT — это простая строка, используемая в командах . Этот формат называется SNBT , сокращенно от строкового NBT .
- 1 формат SNBT
- 1.1 Формат каждого типа
- 2.1 Создание объекта NBT
- 2.2 Преобразование в SNBT
- 2.3 Конвертация из SNBT
- 2.4 Изменение сущности / блока на основе объекта NBT
- 2.5 Тестирование тегов NBT
- 3.1 определение тега
- 3.2 Использование
- 3.2.1 Использование
Формат SNBT [ ]
Эта функция является эксклюзивной для Java Edition .
SNBT , также известный как тег данных , часто используется в команде в Java Edition . Его можно описать, начиная с пар атрибут-значение, заключенных в фигурные скобки. Одно из распространенных применений тегов данных в Java Edition — это команды, используемые для указания сложных данных для любого объекта.
Тег данных состоит из нуля или более пар атрибут-значение, разделенных запятыми и заключенных в фигурные скобки. Каждая пара атрибут-значение состоит из имени тега и значения тега, разделенных двоеточием. Однако некоторые значения могут быть составным тегом и сами содержать пары атрибут-значение, позволяя тегу данных описывать иерархическую структуру данных.
При необходимости имя тега можно заключить в двойные кавычки.
Он отличается от формата JSON ; следовательно, любой JSON, используемый в NBT, например необработанный текст JSON , должен быть заключен в строковый тег.
Формат каждого типа [ ]
Определенные структуры данных также ожидают, что значения будут правильного типа.
«Call me «Ishmael»»
‘Call me «Ishmael»‘
‘Call me ‘Ishmael»
«Call me ‘Ishmael'»
Каждый тег может быть любого типа.
NBT объект [ ]
Когда игра запущена, сущности и сущности блоков в загрузочных фрагментах сохраняются в памяти. Они не хранятся в NBT, это просто программные объекты.
При обработке операций NBT игре необходимо сгенерировать программный объект NBT из сущностей / сущностей блоков, преобразовать SNBT в объект NBT, изменить сущности / блоки на основе предоставленного объекта NBT или преобразовать объект NBT в SNBT.
Создание объекта NBT [ ]
При генерации NBT из сущности / блока свойства сущности / блока добавляются в программный объект NBT.
Обратите внимание, что не все свойства добавляются. Например, значение того, открывает ли игрок сундук, не будет добавлено в объект NBT.
Значение добавляется с определенным типом данных. Например, идентификатор в пространстве имен будет преобразован в строковое значение .
Эти объекты NBT также будут сохранены в файлах сохранения игры как файлы NBT при выходе из игры или при автоматическом сохранении. Таким образом, структуры данных, которые описывают теги NBT, и тип данных для каждого тега в основном те же, что используются в файлах сохранения игры. Эти структуры данных описаны в других статьях, и команды ожидают, что теги данных будут использовать те же имена атрибутов (которые чувствительны к регистру):
Блокировать сущности | сундуки, печи, командные блоки, создатели мобов, знаки и т. д. |
Предметы | предметы в инвентаре (включая спецификации чар, знания, пользовательские имена и т. д.) |
Сущности предмета | предметы на земле |
Мобы | лианы, коровы, сельские жители и т. д. |
Снаряды | стрелы, огненные шары, брошенные зелья и т. д. |
Транспортные средства | лодки, вагонетки и т. д. |
Динамические плитки | грунтованный TNT, падающий песок / гравий / бетонный порошок / наковальни |
Прочие организации | фейерверки, картины и рамы для предметов |
Преобразование в SNBT [ ]
Эта функция является эксклюзивной для Java Edition .
Программный объект NBT будет преобразован в SNBT при попытке получить его с помощью и т. Д. /data get
После преобразования за числом всегда следует буква (нижний регистр для b, s, f, d и верхний регистр для L), кроме Целое число . Например, 3s для краткости, 3.2f для поплавка и т. Д.
И строка всегда заключена в двойные или одинарные кавычки.
Другие типы данных выражаются как #Format для каждой таблицы типов выше.
Преобразование из SNBT [ ]
Эта функция является эксклюзивной для Java Edition .
SNBT будет преобразован в программный объект NBT при анализе в игре.
Число, за которым следует буква (B, S, L, F, D или их строчные буквы), преобразуется в соответствующий тип данных. Например, 3s для краткости, 3.2f для числа с плавающей запятой и т. Д. Буква может быть в верхнем или нижнем регистре. Если буква не используется, предполагается, что double, если есть десятичная точка, int, если десятичной точки нет и размер соответствует 32 битам, или string, если ни один из них не является истинным.
Предполагается, что литерал в квадратных скобках является списком, если не используется идентификатор: [I;1,2,3] для массива int и [L;1L,2L,3L] для длинного массива.
true и false преобразуются как 1b и 0b соответственно.
Изменение сущности / блока на основе объекта NBT [ ]
Эта функция является эксклюзивной для Java Edition .
Изменение объекта / блока на основе программного объекта NBT — непростой процесс. Перед изменением свойств блока / объекта необходимо разрешить все определенные теги. Обратите внимание, что изменять можно только определенные свойства. Например, при использовании команды для изменения объекта блока его координаты не могут быть изменены. /data
Если для свойства требуется значение идентификатора пространства имен и он получает строковый тег, строка будет преобразована в идентификатор .
Если для свойства требуется значение текста JSON и он получает string , строка будет преобразована в текстовый объект JSON.
Если для свойства требуется числовое значение определенного типа и он получает числовой тег неправильного типа, число получит некоторую операцию округления и преобразуется в требуемый тип.
Если для свойства требуется числовое значение и он получает нечисловой тег, число станет 0.
Если для свойства требуется строковое значение и он получает тег, не являющийся строковым, строка станет пустой строкой.
Если для свойства требуется список или массив определенного типа и он получает тег неправильного типа, будет получен пустой список / массив.
Если для свойства нужен тег compount и он получает тег без compount, будет получен пустой тег compount.
Тестирование тегов NBT [ ]
Эта функция является эксклюзивной для Java Edition .
Когда такие команды, как , используются для сопоставления тегов данных, или аргумент nbt в целевом селекторе пытается нацелить объект, игра преобразует SNBT в программный объект NBT и получает программный объект NBT из блока / объекта / хранилища, а затем сравнивает два объекта NBT. /clear /execute if data
Тем не менее, порядок и количество элементов в байт / длинный / INT массива будет подтверждено.
NBT файл [ ]
Файл NBT представляет собой заархивированный составной тег с именем и идентификатором тега. Файл в zip-архиве должен содержать тег Compound в качестве первых байтов. Некоторые файлы, используемые Minecraft, могут быть несжатыми, но в большинстве случаев файлы соответствуют исходной спецификации Notch и сжимаются с помощью GZip.
Определение TAG [ ]
Тег — это отдельная часть дерева данных. Первый байт в теге — это тип тега (ID), за которым следует двухбайтовое целое число без знака с прямым порядком байтов для длины имени, затем имя в виде строки в формате UTF-8 (примечание TAG_ End не имеет имени и не содержит лишних 2 байта; предполагается, что имя пустое). Наконец, в зависимости от типа тега, следующие за ним байты являются частью полезной нагрузки этого тега . В этой таблице описан каждый из 13 известных тегов в версии 19133 формата NBT:
0 | TAG_ Конец | — | Используется для обозначения конца составных тегов. У этого тега нет имени , поэтому он представляет собой только один байт 0. Он также может быть типом пустых тегов списка. | N / A |
1 | TAG_ Byte | 1 байт / 8 бит, со знаком | Целочисленный тип со знаком. Иногда используется для логических значений. | Полный диапазон от — (2 7 ) до (2 7 — 1) (от -128 до 127) |
2 | TAG_ Short | 2 байта / 16 бит, со знаком, с прямым порядком байтов | Целочисленный тип со знаком. | Полный диапазон от — (2 15 ) до (2 15 — 1) (от -32 768 до 32 767) |
3 | TAG_ Int | 4 байта / 32 бита, со знаком, с прямым порядком байтов | Целочисленный тип со знаком. | Полный диапазон от — (2 31 ) до (2 31 — 1) (от -2 147 483 648 до 2 147 483 647) |
4 | TAG_ Длинный | 8 байт / 64 бита, со знаком, с прямым порядком байтов | Целочисленный тип со знаком. | Полный диапазон от — (2 63 ) до (2 63 — 1) (от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807) |
5 | TAG_ Float | 4 байта / 32 бита, со знаком, с прямым порядком байтов, IEEE 754-2008, binary32 | Тип с плавающей запятой со знаком. | Точность варьируется по числовой строке; См. Раздел Формат одинарной точности с плавающей запятой . Максимальное значение около 3,4 * 10 38 |
6 | TAG_ Double | 8 байт / 64 бита, со знаком, с прямым порядком байтов, IEEE 754-2008, binary64 | Тип с плавающей запятой со знаком. | Точность варьируется по числовой строке; См. Раздел Формат с плавающей запятой двойной точности . Максимальное значение около 1,8 * 10 308 |
7 | TAG_ Байт _ Массив | Полезная нагрузка TAG_Int в размер , то размер полезной нагрузки TAG_Byte в. | Массив байтов. | Максимальное количество элементов находится в диапазоне от (2 31 — 9) до (2 31 — 1) (2 147 483 639 и 2 147 483 647), в зависимости от конкретной JVM. |
8 | TAG_ String | Типа TAG_Short, но вместо него длина полезной нагрузки без знака [1] , тогда строка UTF-8 похожа по длине в байтах. | Строка UTF-8. Он имеет размер, а не завершается нулем. | 65 535 байт интерпретируются как UTF-8 (см. Измененный формат UTF-8 ; наиболее часто используемые символы — однобайтовые). |
9 | TAG_ Список | TAG_Byte в полезной нагрузке TagID , то полезная нагрузка TAG_Int в размере , то размера в полезной нагрузке TAGS’, весь типа TagID . | Список полезных данных тегов без повторяющихся идентификаторов тегов или каких-либо имен тегов. | Из-за ограничений JVM и реализации ArrayList максимальное количество элементов списка составляет (2 31–9 ) или 2 147 483 639. Также обратите внимание, что теги List и Compound не могут быть вложены глубже 512. |
10 | TAG_ Соединение | Полностью сформированные теги, за которыми следует TAG_End. | Список полностью сформированных тегов, включая их идентификаторы, имена и полезные данные. У двух тегов не может быть одного и того же имени. | В отличие от списков, здесь нет жесткого ограничения на количество тегов в Compound (конечно, всегда есть неявное ограничение виртуальной памяти). Однако обратите внимание, что теги Compound и List не могут быть вложены глубже 512. |
11 | TAG_ Int _ Массив | Полезная нагрузка TAG_Int в размер , то размер полезной нагрузки TAG_Int в. | Массив полезных данных TAG_Int. | Максимальное количество элементов находится в диапазоне от (2 31 — 9) до (2 31 — 1) (2 147 483 639 и 2 147 483 647), в зависимости от конкретной JVM. |
12 | TAG_ Long _ Массив | Полезная нагрузка TAG_Int в размер , то размер полезной нагрузки TAG_Long в. | Массив полезных данных TAG_Long. | Максимальное количество элементов находится в диапазоне от (2 31 — 9) до (2 31 — 1) (2 147 483 639 и 2 147 483 647), в зависимости от конкретной JVM. |
Теги List и Compound могут быть и часто рекурсивно вложены. Следует также отметить, что в списке списков каждый из подсписок может содержать различные типы тегов.
Использование [ ]
Minecraft иногда непоследовательно использует формат NBT; в некоторых случаях пустые списки могут быть представлены как список байтовых тегов, а не как список правильного типа, или как список конечных тегов в новых версиях Minecraft, что может нарушить работу некоторых старых инструментов NBT. Кроме того, почти каждый корневой тег имеет пустую строку имени и инкапсулирует только один составной тег с фактическими данными и именем. Например:
- Корневой тег для большинства структур Minecraft NBT.
- SomeName : единственный тег, содержащийся в корневом теге — он имеет имя и содержит все фактические данные.
Кроме того, также непоследовательно используется регистр букв, в основном это CamelCase или PascalCase, но иногда даже в нижнем регистре.
Источник: minecraftpages.wiki