개인 자료란 (JE)

  서버 커뮤니티

Profile 김푸유 대표칭호 없음

poui_ a533b79dbebd472f92761a8bd39d66e8

Profile

질문하기 Java

custom skull 머리에 씌우기 금지, 인벤토리 이동 관련

2022.01.19 조회 수 69 추천 수 0
이해도 플러그인 

custom skull (서버에서 아이템으로 쓰임)을 인벤토리에서 쉬프트 좌클릭, 우클릭하면 플레이어의 머리로 이동하는 현상을 막으려고 이를 취소시키면서, 핫바에서 클릭하면 인벤토리로, 인벤토리에서 클릭하면 핫바로 아이템이 이동됐으면 좋겠습니다.


아래 코드는 클릭이벤트 자체를 취소시켜 아이템이 이동하지가 않는데 해결할 수 있는 방법이 있을까요?

@EventHandler
    public void onClick(InventoryClickEvent e) {
        if (e.getRawSlot() != -999 && e.getCurrentItem() != null && e.getClickedInventory() != null) {
            if (e.getWhoClicked() instanceof Player) {
                Player p = (Player) e.getWhoClicked();
// 머리에 직접 넣으려고 하는 경우
                if (p.getOpenInventory().getType() == InventoryType.CRAFTING){
                    if (e.getRawSlot() == 5 && e.getCursor().getType() == Material.SKULL_ITEM && e.getCursor().getItemMeta().getDisplayName() != null){
                        e.setCancelled(true);
                    }
// 쉬프트 좌클릭, 우클릭을 통해 넣으려고 하는 경우
                    else if ((e.getClick() == ClickType.SHIFT_LEFT || e.getClick() == ClickType.SHIFT_RIGHT) && p.getInventory().getItem(103) == null && e.getCurrentItem().getType() == Material.SKULL_ITEM && e.getCurrentItem().getItemMeta().getDisplayName() != null){
                        e.setCancelled(true);
                    }
                }
            }
        }
    }

1개의 댓글

개발자토미
2022.01.20

cancel 시킨 다음 에 해당 아이템을 제거 후, 핫바나 인벤토리에 추가시키는 방식으로 하면 될 것 같습니다.

뉴스 및 창작물
/files/thumbnails/268/789/003/262x150.crop.jpg?20240515192032

레드스톤

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

GlassesFilm

2024-05-15

0

/files/thumbnails/797/788/003/262x150.crop.jpg?20240515090924

건축

마인크래프트로 구현한 카르카손 보드게임

Warak

2024-05-15

1

/files/thumbnails/487/784/003/262x150.crop.jpg?20240508233607

모드

Windows Borderless 모드에서 악성코드 발견

학교가기싫다

2024-05-08

1

/files/thumbnails/384/778/003/262x150.crop.jpg?20240512002324

업데이트

마인크래프트 자바 에디션 스냅샷 24w18a

학교가기싫다

2024-05-06

0

/files/thumbnails/855/781/003/262x150.crop.jpg?20240505141129

레드스톤

레이저 클리너

GlassesFilm

2024-05-05

1