들고있는 아이템의 이름을 감지하는 명령어를 쓰고싶은데 정보가 없어서 물어봅니다.
버전은 1.21.4이며 execute as @a[nbt={들고있는 아이템 이름 감지}] 이런식으로 하고 싶은데 알려주세요
크게 두 가지 방법이 있습니다.
첫 번째는 타겟 셀렉터에서 nbt 를 사용하는 것인데, 느리지만 전통적으로 사용되어 왔습니다.
@s[nbt={SelectedItem:{id:"minecraft:stone",components:{"minecraft:custom_name":"돌덩이"}}]
같은 식으로 작성합니다. 저는 감지할 아이템을 들고 'data get entity @s SelectedItem' 을 입력해 감지할 nbt 정보를 확인하는 편입니다.
두 번째는 새로 추가된 execute if items 를 사용하는 것입니다. 속도를 재어 보지는 않았지만 적어도 nbt 검사보단 빠를 것 같습니다.
execute as @a if items entity @s container.* minecraft:stone[minecraft:custom_name="돌덩이"]
같은 식으로 작성합니다. 이때 = 대신 ~ 을 사용할 수 있는데, = 은 컴포넌트가 조금이라도 다르면 검사에 실패합니다. 예를 들어 내구성3 인챈트가 되어 있는지 검사하면 보호4와 내구성3 이 붙은 아이템은 검사에 실패합니다.
container.*를 weapon.*로 바꾸니 원하는데로 되네요.
감사합니다!~
업데이트
updater
2025-02-06
1
2025-01-30
건축
콩산
2025-01-11
0
모드
BMlight
2024-12-25
2
이벤트
다코미
2024-12-23
lanthanide
23 일 전크게 두 가지 방법이 있습니다.
첫 번째는 타겟 셀렉터에서 nbt 를 사용하는 것인데, 느리지만 전통적으로 사용되어 왔습니다.
@s[nbt={SelectedItem:{id:"minecraft:stone",components:{"minecraft:custom_name":"돌덩이"}}]
같은 식으로 작성합니다. 저는 감지할 아이템을 들고 'data get entity @s SelectedItem' 을 입력해 감지할 nbt 정보를 확인하는 편입니다.
두 번째는 새로 추가된 execute if items 를 사용하는 것입니다. 속도를 재어 보지는 않았지만 적어도 nbt 검사보단 빠를 것 같습니다.
execute as @a if items entity @s container.* minecraft:stone[minecraft:custom_name="돌덩이"]
같은 식으로 작성합니다. 이때 = 대신 ~ 을 사용할 수 있는데, = 은 컴포넌트가 조금이라도 다르면 검사에 실패합니다. 예를 들어 내구성3 인챈트가 되어 있는지 검사하면 보호4와 내구성3 이 붙은 아이템은 검사에 실패합니다.
wttp0501
23 일 전container.*를 weapon.*로 바꾸니 원하는데로 되네요.
감사합니다!~