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
. 숫자 서식이 잘못되고 quoteless 문자열의 위의 범주에 맞게한다면, 그것은 것입니다 , 당신이 할 경우에도가 원하는 없습니다. 다음과 같은 숫자는 comie 문자열이됩니다.
- 선행 0이있는 숫자 : (
012b
,04582s
)
해결하려면 숫자에서 선행 0을 제거합니다. (12b
,4582s
) - 데이터 유형의 범위를 벗어난 숫자 : (
255b
,2177548418058
)
해결하려면 올바른 데이터 유형이 지정되었는지 확인하십시오. (255
,2177548418058l
)