이과만세
대표칭호 없음
게임버전 (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 이라는 이름의 클래스를 만들어 메인 클래스에서 불러왔는데 작동을 안하더군요
그래서 메인클래스에 작성했는데도 작동을 안합니다.
인벤토리를 띄우고 아이템을 만드는것까지는 성공했는데 클릭 막는곳에서 막히네요
데드풀리오
2022.02.26당연히 작동 안합니다
if (e.getClickedInventory().getType().name().equals("test")) {
인벤토리의 타입중 test라는 타입은 존재하지 않습니다
데드풀리오
2022.02.26e.getCurrentItem() 메서드를 사용하세요
e.getCurrentItem() 메서드는 Nullable, 값이 null일수 있으므로
조건문으로 검사하고 다음 구문으로 넘기는게 좋습니다
이과만세
2022.02.26그러면 특정 인벤토리를 지정하려면 어떻게 해야할까요?
데드풀리오
2022.02.26클릭한 슬롯을 비교하시거나
클릭한 인벤토리의 타입이 PlayerInventory 타입이 아닐경우 로 비교하시면 됩니다
이과만세
2022.02.26감사합니다!