개인 자료란 (JE)

  서버 커뮤니티

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

질문하기 플러그인

이벤트핸들러관련 문제

2022.02.24 조회 수 99 추천 수 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/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 4

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

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 4

물귀신

2024-10-06

3