개인 자료란 (JE)

  서버 커뮤니티

Profile 김화울 대표칭호 없음
Profile

질문하기 스크립트

아이템을 정의할 때 로어만으로 정의할 수 있나요?

2021.09.08 조회 수 155 추천 수 0
이해도 초보자(스크립트 구성요소나 기본문법은 알아요) 
게임버전 (JE) 1.17.1 
스크립트 버전 스크립트 2.6-베타3 

진짜 거의 대부분의 애드온은 넣어두었는데 혹시나 특정 애드온이 필요하다면 언급해주시면 합니다.


몇 가지 아이템들을Deadchest 플러그인에서 제외시키기 위해서 그 아이템의 명칭을 알아야 하는데

제가 정의 하려는 아이템이 그저 "&4귀속아이템" 이라는 lore를 가진 모든 아이템이기에 어떤식으로 정의해야 할 지 모르겠습니다.

마찬가지로 수표에서도 책, 이름에 "@@원 수표"와 lore로 붙는 "&6은행" 이 주요 수식어가 되는데 몇 원인지가 계속 바뀌니 마찬가지입니다.

이런 상황일 때 깔끔하게 넣을 수 있는 명칭이 무엇이 있을까요?

만약 정 안되겠다 싶으면 그냥 플러그인을 버리라고 하셔도 됩니다....

4개의 댓글

스크립터브혼
2021.09.09

아이템의 정보를 가지고 해당 값을 가지고 있는지 판단할 수 는 있습니다.


# 01
command /test1:
    trigger:
        loop lore of tool:
            loop-text contains "&4귀속아이템"
            send "포함"
            stop
        send "미포함"

# 02
command /test1:
    trigger:
        if join lore of tool contains "&4귀속아이템":
            send "포함"
        else:
            send "미포함"

로어는 텍스트 리스트 이므로 루프하여 각각의 텍스트에 글자가 있는지 확인(01) 하거나,

Join 익스프레션으로 글자를 하나로 합쳐 글자가 있는지 확인(02)하는 방식으로 값을 비교하면 됩니다.


이름이나 다른 아이템 정보도 같은 방법으로 각각의 데이터를 비교하시면 됩니다.

김화울
2021.09.09
@스크립터브혼

ItemStack 자체를 정의 할 수는 없나요?

이름이 있는 경우에는 book named "이름" with lore of "은행" 라던가

로어만 있는 경우에는 예를 들어 book lore of "은행" 라던가 이런식으로 ItemStack을 부여할 수는 없나요?

스크립터브혼
2021.09.09
@김화울

ItemStack이라는것은 기본적으로 Material이 필요합니다.

Material이 아이템의 종류를 의미하는데 이것이 없다면 당연히 아이템도 있을 수 없습니다.

 

아이템의 이름, 로어, 인첸트, 어트리뷰트, 플래그, 커스텀 태그... 등의 데이터는 ItemStack이 아니라 ItemMeta입니다.

아이템을 치장해줄 데이터를 의미하고 이것은 Material에 따라 조금씩 다른 ItemMeta가 있습니다.

 

방금 언급한 치장 데이터는 기본적으로 아이템이라면 가지고 있는 ItemMeta이고,

책이라면 글쓴이, 원본/사본/복사본, 각 페이지의 정보 등의 메타가 추가로 있고

폭죽이라면 폭죽의 타입1/2, 날아가는 높이, 색상1/2/3 등의 메타가 추가로 있습니다.

 

결론적으로, 로어는 ItemStack이 아닙니다. 독립적으로 존재할 수도 없을뿐더러

ItemMeta역시 Material에 맞춰 생성되는 데이터이기 때문에 "Book"이라는 아이템의 종류를 결정하지 않고서는 정의 될 수 없습니다.

로어는 여러개의 문자로 이루어진 배열입니다. 로어를 특정하려면 앞 댓글 코드대로 각각의 문자가 어떠한지 비교하는 방법뿐입니다.

김화울
2021.09.09
@스크립터브혼

감사합니다.

읽어보니 그냥 전혀 다른 것들을 하나로 만드려고 한 것 같네요... ㅎㅎ

그냥 귀속 스크립트를 버렸습니다 ㅋㅋㅋㅋ