개인 자료란 (JE)

  서버 커뮤니티

Profile yerin 대표칭호 없음
Profile

질문하기 플러그인

플러그인 제작 InventoryClickEvent / e.getCurrentItem() 1.20.6 입니다.

2024.07.28 조회 수 69 추천 수 0
이해도 중급자 
게임버전 (JE) 1.20.1 
게임버전 (BE) 관련없음 

안녕하세요! 제가 플러그인을 만들고 있었습니다.

그런데 계속 에러가 발생하고 null 처리하면 작동을 안해서 조금 힘들었는데요

몇일 정도 생각해보다 답이 안나와서 올려봅니다

원하는 동작은 플레이어 인벤토리에 아이템을 클릭시 EnchanttableMenu의 4번 슬롯으로 아이템이 복제되길 바랍니다.



부가 코드부분입니다.

  @EventHandler

  public void PlayerClickBlock(PlayerInteractEvent e) {

    if(e.getAction().equals(Action.RIGHT_CLICK_BLOCK)){

     //코드

      if(e.getClickedBlock().getType().equals(Material.ENCHANTING_TABLE) ){

        e.setCancelled(true);

        Inventory enchanttableMune = Bukkit.createInventory(null, 27, "\uEAAA"+ ChatColor.WHITE + "\uEDDD");


        e.getPlayer().openInventory(enchanttableMune);

      }

    //코드

    }

  }



주요 코드는 이부분입니다.

@EventHandler

  public void onInventoryClick(InventoryClickEvent e) {    

  if (ChatColor.stripColor(e.getView().getTitle()).equalsIgnoreCase("\uEAAA\uEDDD")){      

   e.setCancelled(true);      

   enchanttableMune.setItem(4,e.getCurrentItem());

    }

  }



2개의 댓글

yerin
2024.07.28

아 해결방법을 찾았습니다.

 

인벤토리 이름을 바로 사용하지 말고

이런식으로 .getInventory();사용하면 해결이 되네요

 

@EventHandler

public void onInventoryClick(InventoryClickEvent e) {

if (ChatColor.stripColor(e.getView().getTitle()).equalsIgnoreCase("\uEAAA\uEDDD Enchant")){

e.setCancelled(true);

e.getInventory().setItem(4,e.getCurrentItem());

 

}

qsef1256
2024.07.28

일단 한마포 에서는 단락 > 코드를 사용하면 코드 블록을 사용할 수 있습니다. 다음부터는 그렇게 올려주시길 바라고요,

지금 오류가 났다고 하는데 그래서 무슨 오류가 난 건지, 뭐가 문제 인건지가 하나도 안 적혀있습니다. 오류 로그와 예상되는(원하는) 동작을 적어서 올려주시기 바랍니다. 원래 이렇게 올리면 답변이 안 달립니다. 주의 해주시기 바랍니다.