개인 자료란 (JE)

  서버 커뮤니티

Profile pqrsc 대표칭호 없음
Profile

질문하기 Java

인벤토리에 있는 다이아 클릭

2021.08.15 조회 수 140 추천 수 0
이해도 플러그인 
게임버전 (JE) 버킷 


@EventHandler
public void onPlayerUseGold(PlayerInteractEvent e){
    Player p = e.getPlayer();

    if(e.getItem().getType() == Material.GOLD_INGOT && e.getAction() == Action.RIGHT_CLICK_AIR && p.getCooldown(Material.GOLD_INGOT) == 0) {
        p.setCooldown(Material.GOLD_INGOT, 1200);
        Inventory inv = Bukkit.createInventory(null, 26, "Alchemy");
        ItemStack i = new ItemStack(Material.DIAMOND);
        inv.setItem(12, i);
        p.openInventory(inv);
    }
}

여기서 인벤에 있는 다이아 클릭하면 다이아가 인벤에 들어오고 금을 하나 차감하는 시스템을 만들고 싶어요

6개의 댓글

A_bins
2021.08.17

InventoryClickEvent를 EventHandler로 리스닝 하셔서 제어 하시면 될텐데욘?

pqrsc
2021.08.17
@A_bins

넵 감사합니다

pqrsc
2021.08.17
@A_bins

그런데

@EventHandler

public void playerCloseGui(InventoryClickEvent e, PlayerInteractEvent event){

Player p = (Player)e.getWhoClicked();

Inventory inv = Bukkit.createInventory(null,26,"AlchemySlot");

ItemStack alchemyItem = new ItemStack(Material.DIAMOND);

ItemStack closingItem = new ItemStack(Material.BARRIER);

inv.setItem(13, alchemyItem);

inv.setItem(26, closingItem);

if(event.getAction() == Action.RIGHT_CLICK_AIR && event.getItem().getType() == Material.GOLD_INGOT && p.getCooldown(Material.GOLD_INGOT) == 0){

 

p.openInventory(inv);

if (event.getClickedBlock().getType() == Material.DIAMOND) {

p.getInventory().addItem(alchemyItem);

p.setCooldown(Material.GOLD_INGOT, 6000);

p.closeInventory();

}

if(event.getClickedBlock().getType() == Material.BARRIER) {

p.closeInventory();

p.sendMessage("You closed your alchemySlot");

}

}

}

이렇게 수정했거든요? 근데 인벤토리가 열리지 않는데 어떤점이 문제인지 확인해주실 수 있나요?

A_bins
2021.08.17
@pqrsc

한 함수에 두가지 이상의 인수를 받으시면 안되요

A_bins
2021.08.17
@A_bins

정확히는 한 이벤트 핸들러에 말이죤

pqrsc
2021.08.18
@A_bins

음 그럼 따로따로 해야겠네요 감사합니다