개인 자료란 (JE)

  서버 커뮤니티

Profile 이과만세 대표칭호 없음
Profile

질문하기 플러그인

이벤트핸들러관련 문제

2022.02.24 조회 수 68 추천 수 0
게임버전 (JE) 1.18.1 
게임버전 (BE) 관련없음 

버킷 1.18.1 버전에서 플러그인을 만드는 중인데, 이벤트 핸들러가 작동을 안합니다.

구상중인건 1줄의 인벤토리를 생성하고, 4번째 슬롯에 test라는 이름의 아이템을 넣고 해당 아이템을 클릭시 메세지를 출력하려고 합니다.

이때 아이템을 빼가거나 옮길 수 없게 하려고 아래와 같이 입력했습니다.

@EventHandler
public void chinv(InventoryClickEvent e) {
    Player p = (Player) e.getWhoClicked();
    if (e.getClickedInventory().getType().name().equals("test")) {
        e.setCancelled(true);
        if (e.getCurrentItem() == null || e.getCurrentItem().getType().getId() == 0 || !e.getCurrentItem().hasItemMeta()) {
            e.setCancelled(false);

처음에는 event 이라는 이름의 클래스를 만들어 메인 클래스에서 불러왔는데 작동을 안하더군요



그래서 메인클래스에 작성했는데도 작동을 안합니다.

인벤토리를 띄우고 아이템을 만드는것까지는 성공했는데 클릭 막는곳에서 막히네요

5개의 댓글

데드풀리오
2022.02.26

당연히 작동 안합니다

if (e.getClickedInventory().getType().name().equals("test")) {

인벤토리의 타입중 test라는 타입은 존재하지 않습니다

데드풀리오
2022.02.26
@데드풀리오

e.getCurrentItem() 메서드를 사용하세요

e.getCurrentItem() 메서드는 Nullable, 값이 null일수 있으므로

조건문으로 검사하고 다음 구문으로 넘기는게 좋습니다

이과만세
2022.02.26
@데드풀리오

그러면 특정 인벤토리를 지정하려면 어떻게 해야할까요?

데드풀리오
2022.02.26
@이과만세

클릭한 슬롯을 비교하시거나

클릭한 인벤토리의 타입이 PlayerInventory 타입이 아닐경우 로 비교하시면 됩니다

이과만세
2022.02.26
@데드풀리오

감사합니다!

뉴스 및 창작물
/files/thumbnails/308/805/003/262x150.crop.jpg?20240605201646

레드스톤

[노트블럭 커버] 팬서비스/mona 【 HoneyWorks 】

노트블럭전문가

2024-06-05

0

/files/thumbnails/288/791/003/262x150.crop.jpg?20240602150002

아티클

《까다로운 시련》 업데이트 날짜 공개 및 정보

학교가기싫다

2024-06-02

0

/files/thumbnails/841/773/003/262x150.crop.jpg?20240526120908

레드스톤

마인크래프트 노트블록버전 『 봄을 고하다 (春を告げる) 』 [더블옥타브 버전]

노트블럭전문가

2024-05-26

0

/files/thumbnails/712/796/003/262x150.crop.jpg?20240525085438

레드스톤

마인크래프트 노트블록으로 만든 『 봄을 고하다 (春を告げる) 』 1

Sonttukk

2024-05-25

1

/files/thumbnails/268/789/003/262x150.crop.jpg?20240515192032

레드스톤

벌레먹은 돌 빠르게 제거하는 법

GlassesFilm

2024-05-15

0