Помогите Крафт предмета вещами с метой

Lisenochek

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Lisenochek
Всем привет. Как вы уже все поняли мне необходимо сделать крафт, где ингредиенты будут вещи с метой.

Пробовал ловить крафт PrepareItemCraftEvent, но... Все скудно..
Помогите мне, как мне сделать это.
 
Да запили ты свою гуищу сундука как это делают нормальные плагины.
 
Я перебирал все предметы в окне крафта, но чет не получилось
Короче попробуй так, создаешь свой кастом крафт. Потом в гетрезульт сморишь твой ли предмет. Если твой, чекай гетинвентарь.
Там предмет результ тоже показывает в гетинвентарь, если что.
 
Короче попробуй так, создаешь свой кастом крафт. Потом в гетрезульт сморишь твой ли предмет. Если твой, чекай гетинвентарь.
Там предмет результ тоже показывает в гетинвентарь, если что.
Не работает... По идее, он должен сетить результат на null, если в матриксе предметы без меты. Делаю примерно так:
JavaScript:
    @EventHandler
    public void cancelCraft(PrepareItemCraftEvent e) {

        if (e.getRecipe().getResult() != ListItems.axe) return;

        for (ItemStack stack : e.getInventory().getMatrix()) {

            if (stack == null) return;
            if (!stack.hasItemMeta()) return;

            e.getInventory().setResult(null);
        }
    }

Вот так я создаю ItemStack, вдруг будут вопросы по этому поводу.

JavaScript:
    private static ItemStack loadAxe() {

        axe = new ItemStack(Material.STONE_AXE);
        ItemMeta meta = axe.getItemMeta();

        meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);

        List<String> lore = new ArrayList<>();
        lore.add(C.c("&a============================="));
        lore.add(C.c("&7Примитивный топорик из"));
        lore.add(C.c("&7осколков камня и ветки от дерева."));
        lore.add(C.c("&7Думаю, что его хватит на пару"));
        lore.add(C.c("&7блоков."));
        lore.add(C.c("&a============================="));
        meta.setLore(lore);
        meta.setDisplayName(C.c("&7&lПримитивный топорик"));
        axe.setDurability((short) 125);
        meta.addEnchant(Enchantment.ARROW_DAMAGE, r.nextInt(), true);
        axe.setItemMeta(meta);
        return axe;
    }
 
e.getInventory().setResult(new ItemStack(Material.AIR));

не проверял, но должно работать
 
e.getInventory().setResult(new ItemStack(Material.AIR));

не проверял, но должно работать
Неа, не сработало. Я продебажил метод и понял, что он не проходит проверку на результ, т.е дальше "1" не идет:

JavaScript:
@EventHandler
    public void cancelCraft(PrepareItemCraftEvent e) {

        GetLogger.warning("1");

        if (e.getRecipe().getResult() != ListItems.axe) return;

        GetLogger.warning("2");

        for (ItemStack stack : e.getInventory().getMatrix()) {

            GetLogger.warning("3");

            if (stack == null) return;

            GetLogger.warning("4");

            if (!stack.hasItemMeta()) return;

            GetLogger.warning("5");

            e.getInventory().setResult(new ItemStack(Material.AIR));
        }
    }
 
Неа, не сработало. Я продебажил метод и понял, что он не проходит проверку на результ, т.е дальше "1" не идет:

JavaScript:
@EventHandler
    public void cancelCraft(PrepareItemCraftEvent e) {

        GetLogger.warning("1");

        if (e.getRecipe().getResult() != ListItems.axe) return;

        GetLogger.warning("2");

        for (ItemStack stack : e.getInventory().getMatrix()) {

            GetLogger.warning("3");

            if (stack == null) return;

            GetLogger.warning("4");

            if (!stack.hasItemMeta()) return;

            GetLogger.warning("5");

            e.getInventory().setResult(new ItemStack(Material.AIR));
        }
    }
ну значит в рез-тате не топор а какаха

где то кто-то может рецепт забыл создать?

да и вообще:
!e.getRecipe().getResult().equals(ListItems.axe)
 
ну значит в рез-тате не топор а какаха

где то кто-то может рецепт забыл создать?

да и вообще:
!e.getRecipe().getResult().equals(ListItems.axe)
Рецепт создается, т.к топор появляется
Рецепт создается, т.к топор появляется
И с твоим вариантом также дальше "1" не идет
 
Рецепт создается, т.к топор появляется

И с твоим вариантом также дальше "1" не идет
выводи все параметры ItemStack топора и того что в рез-тате. смотри что не сходится. (а не количество ли случаем, ибо оно тоже участвует в проверке?)
 
ItemStack{STONE_AXE x 1, UNSPECIFIC_META:{meta-type=UNSPECIFIC, display-name=Примитивный топорик, lore=[=============================, Примитивный топорик из, осколков камня и ветки от дерева., Думаю, что его хватит на пару, блоков., =============================], enchants={ARROW_DAMAGE=1}, ItemFlags=[HIDE_ENCHANTS]}}

Мне кажется, что это из-за рандомных чар, я их убрал и теперь дальше "4" не идет...
 
Назад
Верх