Почему Minecraft регистрирует TAG_String без кавычек?
Я экспериментировал с модификаторами атрибутов предметов. Что интересно, каждый модификатор атрибута требует UUID. Так что я сделал это сам, просто набрав случайные числа на цифровой клавиатуре.
Я знаю, что в NBT UUID хранится в целочисленном массиве, который имеет следующий формат:
[I;1,2,3,4,5,6]
И вот две из моих выполненных команд (это минимально):
give @p diamond_sword{AttributeModifiers:[{AttributeName:"generic.attack_damage",Name:"generic.attack_damage",Amount:1,Operation:0,UUID:[I;385638563,384738473,018492747,395785936]}]} 1
give @p diamond_sword{AttributeModifiers:[{AttributeName:"generic.attack_damage",Name:"generic.attack_damage",Amount:1,Operation:0,UUID:[I;828748274,736284721,276385632,174612674]}]} 1
Если вы не хотите усложнять себе жизнь, я сократил ее до минимума, используя в этих командах пользовательские теги (они ничего не делают, но делают вид чище :)
give @p dirt{MyIntArray:[I;123,345,567,789]}
give @p dirt{MyIntArray:[I;123,456,789,012]}
В обоих приведенных выше примерах один из них вызывает ошибку. Другой - нет. Но все, что я сделал, это ввел разные числа. В чем может быть проблема?
Ответы
Это очень интересное поведение, которое я обнаружил, отвечая на этот вопрос . Я хотел бы поделиться своими выводами в этом посте. Пусть это будет руководство по использованию NBT.
Рассмотрим простое CanDestroy
утверждение. Когда вы думаете об этом, это выглядит так:
/give @s minecraft:diamond_pickaxe{CanDestroy:["minecraft:dirt"]}
Но в некоторых сообщениях значение не заключено в кавычки. Попробуйте свои команды, например: /give @s dirt{CanDestroy:[dirt]}
. Это работает?
Удивительно, но да .
По-видимому, вам не нужно вводить окружающие кавычки, если ваша строка состоит только из следующих символов (пробелы не включены):
+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
Единственное исключение, если запись рассматривается как число, которое будет рассчитывать для записей , как 12b
, 512s
и 82664
. Но если число отформатировано неправильно и вписывается в указанную выше категорию строк без кавычек, так и будет , даже если вы этого не хотите. Следующие числа двойников станут строками комиксов:
- Числа с ведущими нулями: (
012b
,04582s
)
Чтобы решить, удалите ведущие нули из ваших чисел: (12b
,4582s
) - Числа вне диапазона вашего типа данных: (
255b
,2177548418058
)
Чтобы решить, убедитесь, что указан правильный тип данных: (255
,2177548418058l
)