개인 자료란 (JE)

  서버 커뮤니티

Profile qrqr 대표칭호 없음
Profile

질문하기 스크립트

픽셀몬 관련 몬스터가 죽었을 때 드랍하는 아이템 질문

2020.11.02 조회 수 2242 추천 수 0
이해도 1.12 
게임버전 (JE) 스피곳 
스크립트 애드온 2.2-dev37c 

포켓몬을 죽이면, 트레이너들을 이기면 프리즈머린 수정 하나를 고정으로 받고싶은데 스크립트를 만져야할까요?

on death of a entity %pokemon%:

    drop 1 Prismarine Crystals at victim

여기서 첫째줄이 문젠데 포켓몬들 전부를 지칭하려면 어떻게해야하나요?

1개의 댓글

스크립터브혼
2020.11.02

마인크래프트 기본 소스 외의 타입에 대해서는 스크립트에서 사용할 수 없습니다.

한가지 시도 해 볼만한 방법은 엔티티 타입을 메세지로 출력해 보는 것입니다.


타입에 대해서 간단히 설명하자면,
플레이어도 엔티티고, 동물도 엔티티고, 배나 카트같은 탈것도 엔티티입니다.
그러나 플레이어와 동물과 탈것은 모두 다른 종류죠. 즉 플레이어, 동물, 탈것은 엔티티의 하위 타입이라고 할 수 있습니다.
이러한 상/하 관계를 자바 프로그래밍에서 부모/자식 관계에 있다고 하며, 이러한 특성을 상속이라고 합니다.

자식 타입은 부모 타입의 모든 속성을 물려받습니다.
예를들어 위치(좌표)는 플레이어, 동물, 탈것 모두에게 있습니다.
위치 정보는 부모 타입인 엔티티에 구현된 기능이기 때문입니다.

반대로 플레이어는 장비를 입지만, 동물과 탈것은 장비를 입지 못하죠.
장비를 입는 기능은 자식 타입인 플레이어에게만 구현된 기능이기 때문입니다.


다시 본론으로 돌아와서 on death 이벤트는 죽은 대상을 엔티티로 불러옵니다.
그리고 이 엔티티를 메세지로 출력을하면 실제 데이터 타입의 값이 출력됩니다.
예를들어 메세지를 출력할때 플레이어가 죽었다면 플레이어, 돼지가 죽었다면 돼지가 표시됩니다.
위에서 설명해드렸다시피 모두 엔티티이지만 실제 데이터는 플레이어, 동물, 탈것 등 여러가지이기 때문입니다.

이와같이 모드로 구현된 엔티티 또한 기본 소스의 엔티티를 상속받아 구현된 자식 타입입니다.
그래서 엔티티의 타입을 메세지로 출력함으로써 모드로 구현된 엔티티인지 텍스트로 구분이 가능할 수도 있습니다.