Команди консолі/data

Матеріал з Minecraft Wiki
Перейти до: навігація, пошук
Information icon.svg
Тільки для Java Edition
data
Обмеження

Оператор

Перша поява

1.13 (17w45a)

Дає можливість отримувати, змінювати і вилучати NBT-дані сутностей і блоків-сутностей.

Синтаксис

Існує чотири інструкції щодо /data (get, merge, modify, remove), і цілі/джерела, на які посилається кожна команда інструкції, можуть бути будь-якими block <targetPos>, entity <target>, або storage <target>.

data get block <targetPos> [<path>] [<scale>]
data get entity <target> [<path>] [<scale>]
data get storage <target> [<path>] [<scale>]
data merge block <targetPos> <nbt>
data merge entity <target> <nbt>
data merge storage <target> <nbt>
data modify block <targetPos> <targetPath> (append|insert <index>|merge|prepend|set) from block <sourcePos> <sourcePath>
data modify block <targetPos> <targetPath> (append|insert <index>|merge|prepend|set) from entity <source> <sourcePath>
data modify block <targetPos> <targetPath> (append|insert <index>|merge|prepend|set) from storage <source> <sourcePath>
data modify block <targetPos> <targetPath> (append|insert <index>|merge|prepend|set) value <nbt>
data modify entity <target> <targetPath> (append|insert <index>|merge|prepend|set) from block <sourcePos> <sourcePath>
data modify entity <target> <targetPath> (append|insert <index>|merge|prepend|set) from entity <source> <sourcePath>
data modify entity <target> <targetPath> (append|insert <index>|merge|prepend|set) from storage <source> <sourcePath>
data modify entity <target> <targetPath> (append|insert <index>|merge|prepend|set) value <value>
data modify storage <target> <targetPath> (append|insert <index>|merge|prepend|set) from block <sourcePos> <sourcePath>
data modify storage <target> <targetPath> (append|insert <index>|merge|prepend|set) from entity <source> <sourcePath>
data modify storage <target> <targetPath> (append|insert <index>|merge|prepend|set) from storage <source> <sourcePath>
data modify storage <target> <targetPath> (append|insert <index>|merge|prepend|set) value <value>
data remove block <targetPos> <path>
data remove entity <target> <path>
data remove storage <target> <path>

Синтаксис відображається різними способами

Аргументі

(block <targetPos>|entity <target>|storage <target>):
get ... [<path>] [<scale>]:
  • <path> — Дійсне ім'я шляху, що визначає конкретну NBT для отримання
  • <scale> — Скаляр для повернення значення команди
merge ... <nbt>:
  • <nbt> — Складений тег. Найпростіший дійсний ввід {}.
modify ... <targetPath> (append|insert <index>|merge|prepend|set):
  • <targetPath> — Дійсне ім’я шляху, що визначає конкретну NBTTT target для зміни
  • <index> — Дійсне ціле число із зазначенням індексу елемента в списку
… from (block <sourcePos>|entity <source>) <sourcePath>:
  • <sourcePos> — Положення <x> <y> <z> вихідного блоку, NBT якого слід використовувати
  • <source> — Дійсне ім’я гравця, UUID або змінної вибору цілі об'єкта джерела, NBT якого слід використовувати
  • <sourcePath> — Дійсне ім'я шляху, що визначає конкретну NB source NBT, яку слід використовувати modify
… value <value>:
  • <value> — Числове значення, яке слід використовувати для модифікації цільового NBT. Повинно відповідати типу даних
remove ... <path>:
  • <path> — Дійсне ім'я шляху до NBT для видалення
Див

Результати

Виходить з ладу, якщо аргументи не вказані правильно.

Успіх:

/data Шаблон:Text anchor
/data get ...
Прочитайте всі дані NBT з націленої позиції блоку або сутності на виконавця із виділенням синтаксису.
Якщо застосовується, повертає 1 за успіх.
/data get ... <path>
Надішліть підрозділ даних NBT з цільової позиції блоку чи сутності виконавцю без виділення синтаксису.
Повернене значення залежить від типу елемента NBT:
  • Отримання номера повертає це число.
  • Отримання рядка повертає довжину рядка.
  • Отримання списку повертає кількість елементів у цьому списку.
  • Отримання з'єднання повертає кількість тегів, які є прямими дітьми цієї сполуки.
/data get ... <path> <scale>
Поверніть значення тегу, масштабоване на <scale>.
<path> потрібно вказати числовий тег — TAG_byte, TAG_short, TAG_int, TAG_long, TAG_float, або TAG_double.
/data Шаблон:Text anchor
Об'єднайте дані NBT з позицією джерела блоку або об'єктом із зазначеними <nbt> даними.
За наявності, повертає 1 на успіх.
/data Шаблон:Text anchor
append
Додайте вихідні дані до кінця списку, що вказується.
<targetPath> повинен вказати тег TAG_list тип, а вихідні дані мають бути типом елемента, відповідним списку.
insert <index>
Вставте вихідні дані в загострений список як елемент <index>, потім перемістіть вищі елементи на одну позицію вгору.
<targetPath> повинен вказати тег TAG_list тип, а вихідні дані мають бути типом елемента, відповідним списку.
merge
Об'єднайте вихідні дані в об'єкт із загостреним об'єктом.
Обидва <targetPath> а вихідні дані повинні бути такими TAG_compound типу.
prepend
Додайте вихідні дані до початку зазначеного списку.
<targetPath> повинен вказати тег TAG_list тип, а вихідні дані мають бути типом елемента, відповідним списку.
set
Встановіть тег, вказаний <targetPath>, на вихідні дані.
/data Шаблон:Text anchor
Видаляє дані NBT на <path> з цільового блоку або сутності. Дані про плеєр NBT неможливо видалити.
За наявності, повертає 1 на успіх.

NBT path

Шлях даних NBT — це описова мітка, яка використовується для визначення колекції конкретних елементів з дерево даних NBT. Шлях має загальну форму node.….node, де кожен node оголошує, які типи піделементів можна вибрати з попереднього тегу.

Вузол

Це всі доступні шість типів вузлів.

Колекція тегів починається лише з одного елемента (тобто кореневого тегу) і змінюється уздовж вузлів шляху. Споживачі шляху NBT працюватимуть над остаточним збором тегів.

Назва Формат Опис Результат вибору Приклад Приклад Опис
Корінний вузол з об'єктом {tag}, де tag — складний вміст NBT Вибирає початковий тег лише у тому випадку, якщо він відповідає наведеному складеному тегу.
Застосовується лише як перший елемент шляху.
Початковий тег або нічого, якщо збіг не вдається. {Invisible:1b} Вибирає кореневий тег, якщо в ньому є субтег  Invisible зі значенням 1.
Названий вузол name, де name може бути простою або втеченою рядком Вибирає субтеги з назвою name у попередніх тегах. Колекція тегів; не більше елементів, ніж попередня колекція тегів. Може бути нічого. VillagerData Вибирає VillagerData субтег.
"A cool name[]" Selects the A cool name[] subtag.
Названий вузол з об'єктом name{tag}, де name може бути простою або відхиленою рядком, а tag — складеним вмістом NBT Вибирає субтеги, що відповідають складеному тегу, вказаному та названому "name" в попередніх тегах. Колекція тегів; не більше елементів, ніж попередня колекція тегів. Може бути нічого. VillagerData{profession:"minecraft:nitwit"} Виберіть  VillagerData тег лише у тому випадку, якщо у нього є субтег  profession зі значенням minecraft:nitwit.
Індексований список списку name[index], де name може бути простим або уникнутим рядком, а index — цілим числом Вибирає елементи в index (або listLength + index якщо index негативний) підсписів з назвою name у попередніх тегах. Колекція тегів; не більше елементів, ніж попередня колекція тегів. Може бути нічого. Pos[0] Вибирає перший дочірній тег у  Pos підпису.
Inventory[-1] Вибирає останній дочірній тег у  Inventory підпису.
Усі вузли списку name[] Вибирає всі елементи підсписів з назвою name у попередніх тегах. Колекція тегів; може мати більше елементів, ніж попередня колекція тегів. Може бути нічого. ActiveEffects[] Виберіть усі елементи в  ActiveEffects підтег останнього тегу.
Список вузла з об'єктом name[{tag}], де name може бути простою або відхиленою рядком, а tag — складеним вмістом NBT Вибирає елементи, що відповідають наведеному складеному тегу та у підсписках, названих name у попередніх тегах. Колекція тегів; може мати більше елементів, ніж попередня колекція тегів. Може бути нічого. Inventory[{Count:25b}] Виберіть елементи  Inventory тегу, який має підтег  Count зі значенням 25.

На шляху . (точка/період) символи відокремлюють вузли. Вузли можуть бути змішані та зіставлені, за винятком того, що кореневий вузол з об'єктом повинен бути першим на шляху, коли він присутній.

Назва, що проходить,

Дійсний набір символів (без лапок) для шляху, здається, є всі символи, що не містять пробілів, до тих пір, як будь-які відкриваючі дужки ([ і {) є закритими і наприкінці кожного терміну (тобто не слід нічого, окрім періоду чи кінця шляху — . абл ). Як було сказано, "розумний набір символів" для визначення тегів даних включає всі малі та великі літери, цифри, підкреслення, період та квадратні та фігурні дужки (Регулярне вираження: [a-zA-Z0-9\.[\]{}]*)

Цитуються рядки, такі як "Lorem ipsum", може використовуватися, якщо назву ключа потрібно уникати.

Приклади

Foo.bar

/data get entity @p foo.bar[0]."A [crazy name]!".baz

Ці імена були довільно підібрані для демонстраційних цілей.

  • foo — Визначає елемент верхнього рівня з назвою "foo"
  • foo.bar — Визначає назву дитини foo "bar". Зробимо вигляд, що це список.
  • foo.bar[0] — Вказує перший елемент списку "bar"
  • foo.bar[-1] — Вказує останній елемент списку "bar"
  • foo.bar[0]."A [crazy name]!" — Вказує назву дитини "A [crazy name]!" under that first element
  • foo.bar[0]."A [crazy name]!".baz — Вказує назву дитини "baz" під цим божевільно названим елементом
  • foo.bar[] — Вказує всі елементи списку "bar"
  • foo.bar[].baz — Вказує дітям усі елементи списку "bar"
  • foo.bar[{baz:5b}] — Вказує всі елементи списку "bar", на який встановлено тег "baz" 5b
  • {} — Вказує кореневий тег цільового об'єкта або блоку
  • {foo:4.0f} — Визначає кореневий тег цільової сутності або блоку, якщо для тегу "foo" встановлено значення 4.0f
  • foo{bar:"baz"} — Вказує тег "foo", якщо його дочірній "bar" має значення "baz"
  • foo{bar:"baz"}.bar — Вказує тег "bar", якщо він відповідає значенню "baz"

Книга в скрині

/data get block ~ ~ ~ Items[1].tag.pages[3]

Гравець написав книгу і помістив її у скриню біля своїх ніг, і поетапно буде працювати над вищезазначеною командою. Дотримуйтесь наступного уявного журналу чату:

Приклади

  • Щоб гравці не могли забрати всі предмети протягом 10 блоків:
    /data modify entity @e[type=item,distance=..10] PickupDelay set value -1
  • Щоб отримати Y-положення випадкового елемента:
    /data get entity @e[type=item,limit=1,sort=random] Pos[1]
  • Щоб отримати ідентифікатор елемента в першому слоті гарячої панелі найближчого гравця:
    /data get entity @p Inventory[{Slot:0b}].id
  • Для встановлення броні атрибуту дельфіна, найближчого до координат (0, 64, 0), до 20:
    /data modify entity @e[x=0, y=64, z=0, type=dolphin, limit=1] Attributes[{Name:"generic.armor"}].Base set value 20
  • Щоб змінити перший елемент у скрині, розташованій за координатами (1, 64, 1), в алмазний блок, зберігаючи всі дані NBT:
    /data modify block 1 64 1 Items[0].id set value "minecraft:diamond_block"

Зберігання

Збереження команд даних NBT є ефективним способом для команд доступу або збереження даних NBT без накладних витрат для блокових сутностей або сутностей, які читають або записують у дані NBT.

Кожне зберігання команд — це загальне призначення, зберігання ключа-значення, ідентифіковане ідентифікатор простору імен для запобігання ненавмисних конфліктів.

/data get і /data modify може читати зі сховища, поки /data merge, /data modify, /data remove, і /execute store може записати в сховище.

Зберігання команд доступне і через JSON текст.

Історія

Java Edition
1.1317w45bДодана команда /data.
17w47aКоманда /blockdata і /entitydata було видалено, коли їх функції об’єднані в /data.
18w03aВикористання /data get з контуром тепер працює на нечислові значення.
1.1418w43aДодано /data modify.
1.1519w38aДодано command storage.
Додано storage <ідентифікатор простору імен> як джерело чи ціль.
19w39aДодано сховище NBT компонент чату.