개인 자료란 (JE)

  서버 커뮤니티

Profile leejisuS2 대표칭호 없음

leejisuS2 f0cdc5de71864047a73a07d60ff93eb0

Profile

질문하기 스크립트

상자설치후 클릭시 명령어가 실행되는 스크립트..

2020.04.23 조회 수 610 추천 수 0
이해도 1.14 
게임버전 (BE) 모름 
스크립트 애드온 2.4 

쓰레기통이라는 이름의 상자를 만들고

설치해서 오픈시에 /쓰레기통 이라는 명령어가 작동하게끔 만들려고하는데

간단한 구문같은데 스크립트 초보라 너무 헷갈리네요..ㅠㅠ


command /쓰레기통받기:
trigger:
give 10 paper named "&a쓰레기통" with lore "설치하시고 그안에 템을 버리시면 됩니당" to player

on rightclick on chest:
if chest's name is "&a쓰레기통":
execute player command "/쓰레기통"
 


이렇게 작성했는데 받기와 설치는 되는데 클릭했을때 그냥 상자처럼 열리고

/쓰레기통 이라는 명령이 작동하지않습니다.. 어디부분이 문제일까요?




2개의 댓글

스크립터브혼
2020.04.23

인벤토리에 아이템으로 존재할때는 타입이 '아이템' 입니다.

이 아이템을 드랍(Q)해서 월드에 버려져있다면 타입이 '엔티티' 입니다.

그리고 월드에 설치 했다면 타입이 '블록' 입니다.


아이템 상태의 정보와 블록 상태의 정보는 다릅니다. 아이템이 블럭이 된다면 아이템의 정보를 잃습니다. 

각 타입의 정보를 자세히 알고싶으시면 "minecraft tag" 를 검색해보시면 각각의 타입이 어떤 정보를 가질 수 있는지 알수 있습니다.


인벤토리도 아이템, 엔티티, 블록과 마찬가지로 하나의 데이터 타입입니다.

상자같은 기능성 블럭은 클릭했을때 소리를 낸다던가, 인벤토리를 열어준다던가 하는 기능의 트리거일 뿐입니다.


때문에, 상자를 사용하지않고도 인벤토리를 열 수 있습니다. 인벤토리와 블록은 각각 독립된 오브젝트이기 때문이죠.


이런 인벤토리를 가상인벤토리라고 부릅니다.

가상 인벤토리를 새로 만들어 열어준다면 한번 닫으면 다시는 인벤토리를 열지 못할겁니다. 상자같은 트리거가 없기 때문이죠

지수님이 원하는 쓰래기통과 유사한 기능을 할 수 있는 것이지요.


스크립터브혼
2020.04.23
@스크립터브혼

만약 꼭 월드에 설치된 상자를 통해 열려야 한다면 두가지 방법이 있습니다.

 

먼저 공통인 부분은 월드에 설치된 상자는 스스로 아이템을 비우거나 가상 인벤토리를 열 수 없으므로,

작성하신대로 on rightclick on chest 이벤트에서 직접 아이템을 비우거나 가상 인벤토리를 열 수 있도록 해주어야합니다.

 

쓰래기통 종이로 상자를 설치할때, 설치된 상자의 위치를 전역변수로 저장해두셔야 합니다.

그리고나서 on rightclick on chest 이벤트에서 상자의 위치가 저장해둔 전역변수와 같다면 쓰래기통 종이로 설치한 상자인 것이죠.

 

그럼 상자 인벤토리가 열리지 않게 가상 인벤토리를 열어주면 됩니다.

 

또는,

쓰래기통을 열었음을 전역변수로 저장한 후

on inventory close에서 쓰래기통을 열었음이 확인되면 해당 인벤토리를 비워주는 방법으로 해결할 수 있습니다.