안녕하세요, 브금입니다.
하이퀄리티 개발자로서 쓰는 첫 강좌 글이네요! 잘 부탁드립니다 :)
오늘 강좌에서 소개해드릴 "아이템 이름 얻기"는 아이템을 변수로 불러오게 되면
아이템의 이름을 뽑아낼 수 없는 문제를 해결하기 위한 해결책입니다.
본론
[!] 사용 스크립트 버전은 2.3.6이며, 타 버전에선 정상적으로 작동할 수 도 있습니다.
이해를 돕기 위해 문제 상황을 가정해보겠습니다!
<전제 조건> {test} 변수에 아이템 이름이 "테스트" 인 아이템 값이 입력되어있습니다.
예시 코드:
command /이름:
trigger:
set {_name} to name of {test}
send "%{_name} %"
이러한 코드를 작성한 뒤, /이름을 치면 "테스트"가 아닌 "<none>", 즉 값이 나오지 않게 됩니다.
이런 식으로 아이템 이름을 뽑아낼 때 뒤에 변수가 온다면 정상적인 출력이 안되는 문제입니다
해결 방법은 정말 간단합니다.
아이템 이름을 구하는 과정에서 name of 뒤에 변수가 안오게끔 만들면 해결이 가능합니다.
여러 구문에서 사용될 수 있기 때문에 함수의 형식으로 구문을 작성해드리겠습니다
function getname(item: item) :: text:
set {_getname} to chest with 1 rows named "."
set slot 1 of {_getname} to {_item}
return name of slot 1 of {_getname}
이런 식의 함수를 작성하신 뒤, 아까 위의 전제에 따라
getname({test}) 를 출력하게 되면, 정상적으로 아이템의 이름이 나옵니다.
원리는 위에서도 설명했듯이 name of 뒤에 변수가 안오게끔 만들면 해결이 가능하기에,
변수 대신 익스프레션이 들어갈 수 있게끔 가상의 상자 하나를 만들어 아이템을 안에 집어넣은 뒤,
해당 슬롯 아이템의 이름을 출력하는 방법을 통해 해당 문제를 해결하였습니다.
감사합니다.
바탕
2020.05.04name of 1 of {_item}