개인 자료란 (JE)

  서버 커뮤니티

Profile wysohn 대표칭호 없음
Profile

강좌 자바 에디션(JE) 플러그인 개발

[트리거 리엑터] 2. 하이픽셀 같은 로비 메뉴 만들기

2019.11.26 조회 수 630 추천 수 0
분야 트리거 
장르 서버 관리자 툴, 개발자 툴, 그 외에 장르 
게임버전 1.5.x, 1.6.x, 1.7.x, 1.8.x, 1.9.x, 1.10.x, 1.11.x, 1.12.x, 1.13.x, 1.14.x, 1.15.x, 1.16.x, 1.17.x 
API 버킷, 스피곳, 페이퍼, 스펀지 
자료글 https://www.curseforge.com/minecraft/buk...gerreactor 

버킷 버전: *

트리거 버전: 2.2.1 에서 테스트

 

심화적인 내용이므로 위키를 충분히 숙지 하셔야 합니다. (https://github.com/wysohn/TriggerReactor/wiki/Home_kr)

 

요구 지식: 인벤토리 트리거, 네임드 트리거, 조건문, 변수, 등.

 

1. 메뉴 디자인



이제 이전 강좌에서 메뉴는 생성을 했는데 인벤토리와 11번 슬롯을 클릭했을때 메시지가 나올 뿐 인벤토리 안에는 아무것도 들어있지가 않습니다! 이래가지고는 하이픽셀은 커녕 일반적인 메뉴만도 못합니다. 이 인벤토리에 아이템을 넣어서 메뉴를 디자인 해봅시다.

 

1.1 손에 들고있는 아이템을 이용하기


이 방법은 손에 들고있는 아이템을 직접 인벤토리에 등록 하는 방법입니다. 코드 작성 없이 아이템을 넣고 싶다면 이 방법이 유용합니다.

 

/trg i <이름> item <슬롯>

 

예를들어 /trg i MyMenu item 3 이라고 친다면 현재 들고있는 아이템이 MyMenu 라는 인벤토리의 4번 슬롯 (0부터 시작합니다. 기억하시죠?) 에 등록됩니다. 다만, 아이템을 들고있지 않다면 해당 위치에 이미 아이템이 있는 경우 삭제됩니다.

 

1.2 코드로 직접 넣기


이 방법은 코드 내에서 직접 아이템을 관리하는 방법으로 위의 방법보다는 조금 복잡 할 수 있지만 더 많은 범위의 활용이 가능합니다.

 

먼저 이전 강좌에서 처럼 인벤토리 트리거 내에는 inventory 라는 내부 변수가 존재 합니다. 이 inventory 가 일종의 메뉴 인벤토리를 직접 관리 할 수 있게 해주는 매개체 역할을 합니다.

 

모든 작업을 편리하기 위해 메소드를 사용 할 것인데 이는 심화 내용중 하나에 속합니다. 어려운 내용은 아니니 한번 읽어보시기 바랍니다. https://github.com/wysohn/TriggerReactor/wiki/Methods_kr

 

inventory 에는 여러가지 사용가능한 메소드가 있지만 그중에서 필요한 부분만 나열 하겠습니다.

  • inventory.setItem(정수형 숫자, ItemStack) - 현재 인벤토리 트리거의 '정수형 숫자' 에 해당 아이템을 넣습니다.
    • inventory.setItem(0, item("DIAMOND_SWORD", 1)) - 첫번째 슬롯에 다이아 검 설정
    • inventory.setItem(0, null) - 해당 칸의 아이템을 삭제하는것과 동일한 효과 입니다. 아래의 clear() 와 사실상 같습니다.
  • inventory.clear(정수형 숫자)- 현재 인벤토리 트리거의 '정수형 숫자' 에 들어있는 아이템을 제거 합니다.
    • inventory.clear(8) - 9번째 슬롯에 있는 아이템 삭제

 

2. 코드


이제 이전 강좌에서 비워뒀던 IF trigger == "open" 파트를 마저 제작합시다. 하이픽셀 같은 메뉴를 구현하기 위해서 1.2 의 코드로 직접 아이템을 넣는 방법을 사용 하도록 하겠습니다.

 

코드:


IF trigger == "open"
    inventory.setItem(0, item("DIAMOND_SWORD", 1)) 
    inventory.setItem(1, {"myItem"}) 
ENDIF 


 

아이템을 집어넣을때는 "open" 일 때, 즉 인벤토리가 방금 막 열렸을때 설정하는것이 이치에 맞겠지요? 물론 클릭했을때나 인벤토리가 닫힐때도 가능하지만 특별히 의미는 없을 것 입니다. (인벤토리가 닫혔는데 아이템을 넣어봐야 소용이 없겠죠?)

 

1. 위의 코드 예제의 두번째 줄은 첫번째 칸에 다이아몬드 칼을 넣으라는것이고

 

2. 세번째 줄은 두번째 칸에 {"myItem"} 즉 광역번수에 저장해둔 아이템으로 설정 하라는 것 입니다.

 

setItem()의 두번째 인자가 ItemStack 인것은 나와있죠? 이것이 아이템을 넣는 위치를 나타내는것인데 item() 은 이 ItemStack 을 제작해주는 메소드 입니다.

 

3. 테스트


수정이 끝났다면 코드를 저장하시고 /trg reload 를 이용해서 인벤토리 트리거를 다시 불러 오신 뒤 이전 강좌에서 했던 것 처럼 /trg i <이름> open 으로 해당 인벤토리를 확인 해 보세요.

 

제대로 작동한다면 인벤토리의 첫번째 칸이 다이아몬드 칼로 설정 될 것 입니다. 물론 두번째칸은 비어있게 될것인데 이는 {"myItem"} 에 아직 우리가 저장을 해둔게 없기 때문이니 나오지 않는다고 해도 정상입니다.

 

 


 

다음 강좌에서는 이 추가한 다이아몬드 검의 이름과 로어를 실시간으로 하이픽셀의 메뉴처럼 바꿀 수 있도록 해봅시다.




5개의 댓글

아이스틴
2019.11.26

오늘도 좋은강좌 감사합니다!

묘단
2019.11.26

다음 강좌가 기대 됩니당!

슈가스
2019.11.28

기대되네요ㅕ!

ENCE
2019.12.13

기대가 됩니당

일레이나
2019.12.28

좋은 강좌군요

뉴스 및 창작물
/files/thumbnails/246/933/003/262x150.crop.jpg?20241204080049

업데이트

[마인크래프트 1.21.4 업데이트]

제작대

2024-12-04

0

/files/thumbnails/477/930/003/262x150.crop.jpg?20241201030912

레드스톤

뉴진스 - Super Shy | 마크 노트블럭 커버

노트블럭전문가

2024-12-01

0

/files/thumbnails/483/916/003/262x150.crop.jpg?20241127115329

레드스톤

[노트블럭 커버] 뉴진스 - ETA 3

노트블럭전문가

2024-11-27

1

/files/thumbnails/150/925/003/262x150.crop.jpg?20241123005717

건축

응답하라 1988 ? 2

팀뉴일리시

2024-11-23

5

/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 6

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2