¿Por qué Minecraft registra una TAG_String sin comillas?
He estado experimentando con modificadores de atributos en artículos. Lo interesante es que cada modificador de atributo requiere un UUID. Así que me proporcioné uno simplemente ingresando números aleatorios en el teclado numérico de mi teclado.
Sé que en NBT, el UUID se almacena en una matriz de enteros, que tiene el siguiente formato:
[I;1,2,3,4,5,6]
Y aquí están dos de mis comandos completos (esto es lo mínimo posible):
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
Si no quiere complicarse tanto, lo he reducido a lo mínimo, con estos comandos usando etiquetas definidas por el usuario (no hacen nada más que hacer que se vea más limpio :)
give @p dirt{MyIntArray:[I;123,345,567,789]}
give @p dirt{MyIntArray:[I;123,456,789,012]}
En los dos ejemplos anteriores, uno de ellos provoca un error. El otro no. Pero todo lo que hice fue ingresar números diferentes. ¿Cual podría ser el problema?
Respuestas
Este es un comportamiento muy interesante que descubrí al responder esta pregunta . Me gustaría compartir mis hallazgos en esta publicación. Que sea una guía para usar NBT.
Considere una declaración simple CanDestroy
. Cuando lo piensas, se ve así:
/give @s minecraft:diamond_pickaxe{CanDestroy:["minecraft:dirt"]}
Pero algunas publicaciones no tienen las comillas alrededor del valor. Pruebe sus comandos, por ejemplo: /give @s dirt{CanDestroy:[dirt]}
. ¿Funciona?
Sorprendentemente, sí .
Aparentemente, no necesita escribir las comillas circundantes si su cadena solo consta de los siguientes caracteres (espacios en blanco no incluidos):
+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
La única excepción es si la entrada se trata como un número, lo que contaría para entradas como 12b
, 512s
y 82664
. Pero si el número tiene un formato incorrecto y encajaría en la categoría anterior de cadenas sin comillas, lo hará , incluso si no lo desea. Los siguientes números similares se convertirán en cadenas:
- Números con ceros a la izquierda: (
012b
,04582s
)
Para resolver, elimina los ceros a la izquierda de tus números: (12b
,4582s
) - Números fuera del rango de su tipo de datos: (
255b
,2177548418058
)
Para resolver, asegúrese de especificar el tipo de datos correcto: (255
,2177548418058l
)