개인 자료란 (JE)

  서버 커뮤니티

Profile 늘솜보름 정품인증자

JIMIN2457 69b92cf6d9194ba7a57a668b093cb822

Profile

질문하기 스크립트

돌만 인식하고 싶습니다!

2021.07.16 조회 수 96 추천 수 0
이해도 1.12 
게임버전 (JE) 스피곳 
스크립트 버전 중급자(필요한 애드온을 찾아서 만들 수 있어요) 
스크립트 애드온 2.5.3 


set {_testA} to amount of {_testB} in inventory of player

{_testB}에서 인식된 아이템의 개수를 파악해서 {_testA}에 저장하는 구문입니다.


정상적으로 잘 작동합니다. 근데 하나 문제가 있습니다.

'돌' 같은 아이템 입니다.


인벤토리에 돌만 있으면 상관이 없는데 돌 1개, 화강암 1개가 있으면 같은 ID로 인식해서 2개로 됩니다.


이런 경우에 돌만 인식하고 싶으면 어떻게 해야할까요?




4개의 댓글

스크립터브혼
2021.07.16

가장 확실한 방법은 Namespaced Key를 확인하는 것입니다.

돌은 'minecraft:stone', 화강암은 'minecraft:granite' 입니다.


스크립트에서 아이템의 Namespaced Key를 받는 익스프레션은 [Raw Name] 익스프레션 입니다.

반환 타입은 text 입니다.

> send minecraft name of {_item} to player

늘솜보름
2021.07.16
@스크립터브혼

답변 감사합니다. 둘다 stone라고 뜨는거 보고 확신드는게 1.12.2 버전이여서 그런거 같아요.

https://minecraftitemids.com/item/granite 여기 사이트에서 확인해보니까

Legacy Item ID (1.12.2 and Below) minecraft:stone 라고 적혀있네요.

1.12.2 이하 버전에서는 아이템 아이디가 똑같네요.

스크립터브혼
2021.07.16
@늘솜보름

1.12 이하 버전에서 사용했던 id of %item%, data of %item%으로 해보세요.

id는 같아도 data가 다르게 나올 수 있습니다.

늘솜보름
2021.07.17
@스크립터브혼

와... 대박! 정말 감사합니다 ㅠㅠㅠㅠ 엄청난 힌트네요!!

 

id of 는 [WARNING] Items do not have numeric ids on Minecraft 1.13 or newer. This script will not work on those versions!

이렇게 뜨는걸로 봐서 역시 버전문제가 맞는거 같고,

 

data of 는 해당 아이템의 data 값을 잘 가져오더라구요.

 

set {_amount} to 0

loop all items in player's inventory:

-if loop-item is {_test}:

--if data of loop-item is data of {_test}:

---add item amount of loop-item to {_amount}

send "%{_amount}%" to player

 

그래서 이렇게 하니까 제가 원했던 그대로 작동하네요!