Perché Minecraft sta registrando una TAG_String senza virgolette?
Ho sperimentato i modificatori di attributi sugli articoli. La cosa interessante è che ogni modificatore di attributo richiede un UUID. Quindi ne ho fornito uno io stesso semplicemente digitando numeri casuali sul tastierino numerico della tastiera.
So che in NBT, l'UUID è memorizzato in un Integer Array, che è formattato in questo modo:
[I;1,2,3,4,5,6]
E qui ci sono due dei miei comandi completati (questo è il minimo possibile):
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
Se non vuoi diventare così complicato, l'ho ridotto al minimo indispensabile, con questi comandi che utilizzano tag definiti dall'utente (non fanno altro che renderlo più pulito :)
give @p dirt{MyIntArray:[I;123,345,567,789]}
give @p dirt{MyIntArray:[I;123,456,789,012]}
In entrambi gli esempi precedenti, uno di essi causa un errore. L'altro no. Ma tutto quello che ho fatto è stato inserire numeri diversi. Quale potrebbe essere il problema?
Risposte
Questo è un comportamento molto interessante che ho scoperto rispondendo a questa domanda . Vorrei condividere le mie scoperte in questo post. Lascia che sia una guida per l'utilizzo di NBT.
Considera una semplice CanDestroy
affermazione. Quando ci pensi, sembra così:
/give @s minecraft:diamond_pickaxe{CanDestroy:["minecraft:dirt"]}
Ma alcuni post non hanno le virgolette attorno al valore. Prova i loro comandi, ad esempio: /give @s dirt{CanDestroy:[dirt]}
. Funziona?
Sorprendentemente, sì .
Apparentemente, non è necessario digitare le virgolette circostanti se la stringa è composta solo dai seguenti caratteri (spazi bianchi esclusi):
+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
L'unica eccezione è se la voce viene trattata come un numero, che conta per voci come 12b
, 512s
e 82664
. Ma se il numero è formattato in modo errato e rientrerebbe nella suddetta categoria di stringhe senza virgolette, lo farà , anche se non lo desideri. I seguenti numeri simili diventeranno stringhe:
- Numeri con zeri iniziali: (
012b
,04582s
)
Per risolvere, rimuovi gli zeri iniziali dai tuoi numeri: (12b
,4582s
) - Numeri al di fuori dell'intervallo del tipo di dati: (
255b
,2177548418058
)
Per risolvere, assicurarsi che sia specificato il tipo di dati corretto: (255
,2177548418058l
)