개인 자료란 (JE)

  서버 커뮤니티

Profile wysohn 대표칭호 없음
Profile

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

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

2019.11.26 조회 수 581 추천 수 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/520/751/003/262x150.crop.jpg?20240328020349

레드스톤

마인크래프트 노트블록으로 만든 『 Bling‐Bang‐Bang‐Born 』 1

Sonttukk

2024-03-23

1

/files/thumbnails/467/742/003/262x150.crop.jpg?20240311163123

레드스톤

[노트블럭커버] MILGRAM -ミルグラム(밀그램)- / 아마네 「숙청 행진」 제 2심 2

리비온

2024-03-11

0

/files/thumbnails/846/741/003/262x150.crop.jpg?20240310221214

레드스톤

워든 vs 라마 200마리 1

GlassesFilm

2024-03-10

0

/files/thumbnails/542/739/003/262x150.crop.jpg?20240309070457

레드스톤

[고인의 명복을 빕니다][노트블럭]드래곤볼 GT 오프닝 - 점점 마음이 끌려

리비온

2024-03-09

0

/files/thumbnails/326/738/003/262x150.crop.jpg?20240328020414

레드스톤

마인크래프트 노트블록으로 만든 『 Build Our Machine 』

Sonttukk

2024-03-07

0

/files/thumbnails/952/735/003/262x150.crop.jpg?20240303230423

소식

복잡한 설치 없이 마크 애드온을 즐겨보세요! 새로운 블록, 몹, 조합법 등!

도라

2024-03-03

0

/files/thumbnails/212/735/003/262x150.crop.jpg?20240303113438

레드스톤

성장속도 실험

GlassesFilm

2024-03-03

3