Помогите Shift+click в CraftItemEvent

pro100koder

Активный участник
Пользователь
Баллы
76
Когда игрок использует Shift+click при крафте, CraftItemEvent срабатывает лишь один раз и изменяет лишь первый случай. Мне нужно отменять потерю одного из предметов в сетке.
Как вторгнуться в обработку каждого цикла? (При шифте крафтится 2 предмета.)
Код:
@EventHandler
    public void craft(CraftItemEvent e){
        if(e.getInventory()==null)return;
        ItemStack item=e.getInventory().getResult();
        if(item==null)return;
        if(item.hasItemMeta()&&item.getItemMeta().hasDisplayName()){
            int am=getAmountCraftItem(item.getType(), e);
            if(am>1){
                e.setCancelled(true);
                return;
            }
            ItemMeta meta=item.getItemMeta();
            String name=meta.getDisplayName();
            if(name.contains("Замок")){
                if(am>0){
                    ItemStack[] matrix = e.getInventory().getMatrix();
                    ItemStack left=matrix[3];
                    if(GepUtil.loreContains(left, ChatColor.BLACK+"Key_id=")){
                        left.setAmount(left.getAmount()+1);
                        return;
                    }
                    ItemStack keys=ItemUtil.create(Material.IRON_NUGGET, am, 0, ChatColor.AQUA+"Ключ", new String[]{
                            ChatColor.RED+"ЗАГОТОВКА.",
                            ChatColor.RED+"Требуется выплавить.",
                            ChatColor.BLACK+"Key_id="+(GepUtil.intFromLore(item, ChatColor.BLACK+"Key_id="))
                    }, null, 0);
                    e.getWhoClicked().getInventory().addItem(keys);
                }
            }else if(name.contains("Ключ")){
                if(am>0){
                    ItemStack[] matrix = e.getInventory().getMatrix();
                    ItemStack left=matrix[3];
                    if(GepUtil.loreContains(left, ChatColor.BLACK+"Key_id=")){
                        left.setAmount(left.getAmount()+1);
                        return;
                    }else{
                        e.getInventory().setResult(null);
                    }
                }
            }
            return;
        }
    }
 
Назад
Верх