1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем pro100koder, 27 июл 2020.

  1. Автор темы
    pro100koder

    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;
            }
        }
     

Поделиться этой страницей