Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Почему создаётся копия предмета в меню

QuodLitee

Активный участник
Пользователь
Баллы
66
делаю плагин который будет выдавать головы с метой через меню.
Баг происходит, когда игрок открывает меню с наличием в инвентаре head1(), то этот head1() копируется в меню и помещается в первый свободной слот.
Код:
public static void openMenu(Player player) {
        inventory = Bukkit.createInventory(player, Main.cfg.getInt("gui.slots"), ColorUtil.color(Main.cfg.getString("title")));
        setItem1();
        player.openInventory(inventory);
    }
Код:
public static void setItem1() {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.1.material")));
        if (Main.cfg.get("gui.item.1.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.1.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.1.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.1.lore"))
            lore.add(ColorUtil.color(s));
        meta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 5, true);
        meta.addEnchant(Enchantment.PROTECTION_FIRE, 5, true);
        meta.addEnchant(Enchantment.PROTECTION_PROJECTILE, 5, true);
        meta.addEnchant(Enchantment.OXYGEN, 5, true);
        meta.addEnchant(Enchantment.WATER_WORKER, 2, true);
        meta.addAttributeModifier(Attribute.GENERIC_ATTACK_SPEED,
                new AttributeModifier(UUID.randomUUID(), "generic.attack_speed", 0.25, AttributeModifier.Operation.MULTIPLY_SCALAR_1, EquipmentSlot.HEAD));
        meta.addAttributeModifier(Attribute.GENERIC_ATTACK_DAMAGE,
                new AttributeModifier(UUID.randomUUID(), "generic.attack_damage", 1, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HEAD));
        meta.addAttributeModifier(Attribute.GENERIC_ARMOR_TOUGHNESS,
                new AttributeModifier(UUID.randomUUID(), "generic.armor_toughness", 2.5, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HEAD));
        meta.addAttributeModifier(Attribute.GENERIC_ARMOR,
                new AttributeModifier(UUID.randomUUID(), "generic.armor", 3, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HEAD));
        if (Main.cfg.getBoolean("enable-hide")) {
            meta.hasItemFlag(ItemFlag.HIDE_ATTRIBUTES);
            meta.hasItemFlag(ItemFlag.HIDE_ENCHANTS);
        }
        meta.setLore(lore);
        stack.setItemMeta(meta);
        inventory.setItem(Main.cfg.getInt("gui.item.1.slot"), stack);
    }
Код:
public static ItemStack head1() {
        ItemStack item1 = new ItemStack(Objects.requireNonNull(Material.getMaterial(ColorUtil.color(Main.heads.getString("Head1.material")))), 1);
        if (Main.heads.get("Head1.id") != null)
            StackUtil.setSkullOwner(item1, Objects.requireNonNull(Main.heads.getString(("Head1.id"))));
        ItemMeta meta = item1.getItemMeta();
        List<String> lore = new ArrayList<>();
        meta.setDisplayName(ColorUtil.color(Main.heads.getString("Head1.name")));
        for (String s : Main.heads.getStringList("Head1.lore"))
            lore.add(ColorUtil.color(s));
        meta.setLore(lore);
        meta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 5, true);
        meta.addEnchant(Enchantment.PROTECTION_FIRE, 5, true);
        meta.addEnchant(Enchantment.PROTECTION_PROJECTILE, 5, true);
        meta.addEnchant(Enchantment.OXYGEN, 5, true);
        meta.addEnchant(Enchantment.WATER_WORKER, 2, true);
        meta.addAttributeModifier(Attribute.GENERIC_ATTACK_SPEED,
                new AttributeModifier(UUID.randomUUID(), "generic.attack_speed", 0.25, AttributeModifier.Operation.MULTIPLY_SCALAR_1, EquipmentSlot.HEAD));
        meta.addAttributeModifier(Attribute.GENERIC_ATTACK_DAMAGE,
                new AttributeModifier(UUID.randomUUID(), "generic.attack_damage", 1, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HEAD));
        meta.addAttributeModifier(Attribute.GENERIC_ARMOR_TOUGHNESS,
                new AttributeModifier(UUID.randomUUID(), "generic.armor_toughness", 2.5, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HEAD));
        meta.addAttributeModifier(Attribute.GENERIC_ARMOR,
                new AttributeModifier(UUID.randomUUID(), "generic.armor", 3, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HEAD));
        item1.setItemMeta(meta);
        return item1;
    }
 
Копирование айтемстаков в меню это особенность баккита. А вот почему вставляется на первый свободный слот придётся дебажить.
 
Копирование айтемстаков в меню это особенность баккита. А вот почему вставляется на первый свободный слот придётся дебажить.
Что значит особенность баккита? То есть клонирование айтемстака из инвентаря в меню это особенность?
 
Копирование айтемстаков в меню это особенность баккита. А вот почему вставляется на первый свободный слот придётся дебажить.
А где в коде копия создаётся?

Что значит особенность баккита? То есть клонирование айтемстака из инвентаря в меню это особенность?
Не указывай player в качестве холдера инвентаря.
Помимо этого, я рекомендую инвентарь передавать в метод в качестве параметра, а не тащить его из поля, тем более статического
 
Не указывай player в качестве холдера инвентаря.
Помимо этого, я рекомендую инвентарь передавать в метод в качестве параметра, а не тащить его из поля, тем более статического
Баг с копированием исчез, но появился другой, теперь все головы в ивентаре в количестве двух штук
 
upload_2024-2-12_19-48-31.png
Точнее все 6 итемов не важно голова это или другой блок стакаются в 2 штуки
 
Ну вон предмет снизу не подублировался.

Показывай полный код класса. Я, например, не вижу, где head1() вызывается
Код:
public class Gui implements Listener {

    public static void openMenu(Player player) {
        Inventory gui = Bukkit.createInventory(null, 9 * Main.cfg.getInt("gui.rows"), ColorUtil.color(Main.cfg.getString("title")));
        setItem1(gui);
        setItem2(gui);
        setItem3(gui);
        setItem4(gui);
        setItem5(gui);
        setItem6(gui);
        setItem7(gui);
        player.openInventory(gui);
    }
    public static void setItem1(Inventory gui) {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.1.material")), 1);
        if (Main.cfg.get("gui.item.1.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.1.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.1.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.1.lore"))
            lore.add(ColorUtil.color(s));
        meta.setLore(lore);
        stack.setItemMeta(meta);
        gui.setItem(Main.cfg.getInt("gui.item.1.slot"), stack);
    }

    public static void setItem2(Inventory gui) {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.2.material")), 1);
        if (Main.cfg.get("gui.item.2.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.2.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.2.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.2.lore"))
            lore.add(ColorUtil.color(s));
        meta.setLore(lore);
        stack.setItemMeta(meta);
        gui.setItem(Main.cfg.getInt("gui.item.2.slot"), stack);
    }

    public static void setItem3(Inventory gui) {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.3.material")), 1);
        if (Main.cfg.get("gui.item.3.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.3.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.3.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.3.lore"))
            lore.add(ColorUtil.color(s));
        meta.setLore(lore);
        stack.setItemMeta(meta);
        gui.setItem(Main.cfg.getInt("gui.item.3.slot"), stack);
    }

    public static void setItem4(Inventory gui) {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.4.material")), 1);
        if (Main.cfg.get("gui.item.4.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.4.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.4.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.4.lore"))
            lore.add(ColorUtil.color(s));
        meta.setLore(lore);
        stack.setItemMeta(meta);
        gui.setItem(Main.cfg.getInt("gui.item.4.slot"), stack);
    }

    public static void setItem5(Inventory gui) {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.5.material")), 1);
        if (Main.cfg.get("gui.item.5.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.5.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.5.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.5.lore"))
            lore.add(ColorUtil.color(s));
        meta.setLore(lore);
        stack.setItemMeta(meta);
        gui.setItem(Main.cfg.getInt("gui.item.5.slot"), stack);
    }

    public static void setItem6(Inventory gui) {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.6.material")), 1);
        if (Main.cfg.get("gui.item.6.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.6.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.6.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.6.lore"))
            lore.add(ColorUtil.color(s));
        meta.setLore(lore);
        stack.setItemMeta(meta);
        gui.setItem(Main.cfg.getInt("gui.item.6.slot"), stack);
    }

    public static void setItem7(Inventory gui) {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.7.material")), 1);
        if (Main.cfg.get("gui.item.7.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.7.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.7.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.7.lore"))
            lore.add(ColorUtil.color(s));
        meta.setLore(lore);
        stack.setItemMeta(meta);
        gui.setItem(Main.cfg.getInt("gui.item.7.slot"), stack);
    }

    @EventHandler
    public void onClick(InventoryClickEvent event) {
        Player player = (Player) event.getWhoClicked();
        ItemStack item = event.getCurrentItem();
        int slot = event.getSlot();
        if (event.getView().getTitle().equalsIgnoreCase(ColorUtil.color(Main.cfg.getString("title")))) {
            if (item != null && item.getItemMeta() != null) {
                if (slot == Main.cfg.getInt("gui.item.1.slot")) {
                    if (Main.ppAPI.look(player.getUniqueId()) >= Main.cfg.getInt("gui.item.1.cost")) {
                        Main.ppAPI.take(player.getUniqueId(), Main.cfg.getInt("gui.item.1.cost"));
                        for (String s : Main.cfg.getStringList("gui.item.1.purchase"))
                            player.sendMessage(s);
                        player.closeInventory();
                        player.getInventory().addItem(ItemSUtils.head1());
                    } else {
                        for (String s : Main.cfg.getStringList("noMoney"))
                            player.sendMessage(s);
                        player.closeInventory();
                    }
                }
                if (slot == Main.cfg.getInt("gui.item.2.slot")) {
                    if (Main.ppAPI.look(player.getUniqueId()) >= Main.cfg.getInt("gui.item.2.cost")) {
                        Main.ppAPI.take(player.getUniqueId(), Main.cfg.getInt("gui.item.2.cost"));
                        for (String s : Main.cfg.getStringList("gui.item.2.purchase"))
                            player.sendMessage(s);
                        player.closeInventory();
                        player.getInventory().addItem(ItemSUtils.head2());
                    } else {
                        for (String s : Main.cfg.getStringList("noMoney"))
                            player.sendMessage(s);
                        player.closeInventory();
                    }

                }
                if (slot == Main.cfg.getInt("gui.item.3.slot")) {
                    if (Main.ppAPI.look(player.getUniqueId()) >= Main.cfg.getInt("gui.item.3.cost")) {
                        Main.ppAPI.take(player.getUniqueId(), Main.cfg.getInt("gui.item.3.cost"));
                        for (String s : Main.cfg.getStringList("gui.item.3.purchase"))
                            player.sendMessage(s);
                        player.closeInventory();
                        player.getInventory().addItem(ItemSUtils.head3());
                    } else {
                        for (String s : Main.cfg.getStringList("noMoney"))
                            player.sendMessage(s);
                        player.closeInventory();
                    }
                }
                if (slot == Main.cfg.getInt("gui.item.4.slot")) {
                    if (Main.ppAPI.look(player.getUniqueId()) >= Main.cfg.getInt("gui.item.4.cost")) {
                        Main.ppAPI.take(player.getUniqueId(), Main.cfg.getInt("gui.item.4.cost"));
                        for (String s : Main.cfg.getStringList("gui.item.4.purchase"))
                            player.sendMessage(s);
                        player.closeInventory();
                        player.getInventory().addItem(ItemSUtils.head4());
                    } else {
                        for (String s : Main.cfg.getStringList("noMoney"))
                            player.sendMessage(s);
                        player.closeInventory();
                    }
                }
                if (slot == Main.cfg.getInt("gui.item.5.slot")) {
                    if (Main.ppAPI.look(player.getUniqueId()) >= Main.cfg.getInt("gui.item.5.cost")) {
                        Main.ppAPI.take(player.getUniqueId(), Main.cfg.getInt("gui.item.5.cost"));
                        for (String s : Main.cfg.getStringList("gui.item.5.purchase"))
                            player.sendMessage(s);
                        player.closeInventory();
                        player.getInventory().addItem(ItemSUtils.head5());
                    } else {
                        for (String s : Main.cfg.getStringList("noMoney"))
                            player.sendMessage(s);
                        player.closeInventory();
                    }
                }
                if (slot == Main.cfg.getInt("gui.item.6.slot")) {
                    player.closeInventory();
                    if (Main.ppAPI.look(player.getUniqueId()) >= Main.cfg.getInt("gui.item.6.cost")) {
                        Main.ppAPI.take(player.getUniqueId(), Main.cfg.getInt("gui.item.6.cost"));
                        for (String s : Main.cfg.getStringList("gui.item.6.purchase"))
                            player.sendMessage(s);
                        player.closeInventory();
                        player.getInventory().addItem(ItemSUtils.head6());
                    } else {
                        for (String s : Main.cfg.getStringList("noMoney"))
                            player.sendMessage(s);
                        player.closeInventory();
                    }
                }
                if (slot == Main.cfg.getInt("gui.item.7.slot")) {
                    player.closeInventory();

                }
                event.setCancelled(true);
            }
        }
    }
}
 
Код:
public class Gui implements Listener {

    public static void openMenu(Player player) {
        Inventory gui = Bukkit.createInventory(null, 9 * Main.cfg.getInt("gui.rows"), ColorUtil.color(Main.cfg.getString("title")));
        setItem1(gui);
        setItem2(gui);
        setItem3(gui);
        setItem4(gui);
        setItem5(gui);
        setItem6(gui);
        setItem7(gui);
        player.openInventory(gui);
    }
    public static void setItem1(Inventory gui) {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.1.material")), 1);
        if (Main.cfg.get("gui.item.1.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.1.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.1.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.1.lore"))
            lore.add(ColorUtil.color(s));
        meta.setLore(lore);
        stack.setItemMeta(meta);
        gui.setItem(Main.cfg.getInt("gui.item.1.slot"), stack);
    }

    public static void setItem2(Inventory gui) {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.2.material")), 1);
        if (Main.cfg.get("gui.item.2.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.2.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.2.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.2.lore"))
            lore.add(ColorUtil.color(s));
        meta.setLore(lore);
        stack.setItemMeta(meta);
        gui.setItem(Main.cfg.getInt("gui.item.2.slot"), stack);
    }

    public static void setItem3(Inventory gui) {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.3.material")), 1);
        if (Main.cfg.get("gui.item.3.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.3.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.3.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.3.lore"))
            lore.add(ColorUtil.color(s));
        meta.setLore(lore);
        stack.setItemMeta(meta);
        gui.setItem(Main.cfg.getInt("gui.item.3.slot"), stack);
    }

    public static void setItem4(Inventory gui) {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.4.material")), 1);
        if (Main.cfg.get("gui.item.4.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.4.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.4.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.4.lore"))
            lore.add(ColorUtil.color(s));
        meta.setLore(lore);
        stack.setItemMeta(meta);
        gui.setItem(Main.cfg.getInt("gui.item.4.slot"), stack);
    }

    public static void setItem5(Inventory gui) {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.5.material")), 1);
        if (Main.cfg.get("gui.item.5.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.5.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.5.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.5.lore"))
            lore.add(ColorUtil.color(s));
        meta.setLore(lore);
        stack.setItemMeta(meta);
        gui.setItem(Main.cfg.getInt("gui.item.5.slot"), stack);
    }

    public static void setItem6(Inventory gui) {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.6.material")), 1);
        if (Main.cfg.get("gui.item.6.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.6.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.6.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.6.lore"))
            lore.add(ColorUtil.color(s));
        meta.setLore(lore);
        stack.setItemMeta(meta);
        gui.setItem(Main.cfg.getInt("gui.item.6.slot"), stack);
    }

    public static void setItem7(Inventory gui) {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.7.material")), 1);
        if (Main.cfg.get("gui.item.7.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.7.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.7.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.7.lore"))
            lore.add(ColorUtil.color(s));
        meta.setLore(lore);
        stack.setItemMeta(meta);
        gui.setItem(Main.cfg.getInt("gui.item.7.slot"), stack);
    }

    @EventHandler
    public void onClick(InventoryClickEvent event) {
        Player player = (Player) event.getWhoClicked();
        ItemStack item = event.getCurrentItem();
        int slot = event.getSlot();
        if (event.getView().getTitle().equalsIgnoreCase(ColorUtil.color(Main.cfg.getString("title")))) {
            if (item != null && item.getItemMeta() != null) {
                if (slot == Main.cfg.getInt("gui.item.1.slot")) {
                    if (Main.ppAPI.look(player.getUniqueId()) >= Main.cfg.getInt("gui.item.1.cost")) {
                        Main.ppAPI.take(player.getUniqueId(), Main.cfg.getInt("gui.item.1.cost"));
                        for (String s : Main.cfg.getStringList("gui.item.1.purchase"))
                            player.sendMessage(s);
                        player.closeInventory();
                        player.getInventory().addItem(ItemSUtils.head1());
                    } else {
                        for (String s : Main.cfg.getStringList("noMoney"))
                            player.sendMessage(s);
                        player.closeInventory();
                    }
                }
                if (slot == Main.cfg.getInt("gui.item.2.slot")) {
                    if (Main.ppAPI.look(player.getUniqueId()) >= Main.cfg.getInt("gui.item.2.cost")) {
                        Main.ppAPI.take(player.getUniqueId(), Main.cfg.getInt("gui.item.2.cost"));
                        for (String s : Main.cfg.getStringList("gui.item.2.purchase"))
                            player.sendMessage(s);
                        player.closeInventory();
                        player.getInventory().addItem(ItemSUtils.head2());
                    } else {
                        for (String s : Main.cfg.getStringList("noMoney"))
                            player.sendMessage(s);
                        player.closeInventory();
                    }

                }
                if (slot == Main.cfg.getInt("gui.item.3.slot")) {
                    if (Main.ppAPI.look(player.getUniqueId()) >= Main.cfg.getInt("gui.item.3.cost")) {
                        Main.ppAPI.take(player.getUniqueId(), Main.cfg.getInt("gui.item.3.cost"));
                        for (String s : Main.cfg.getStringList("gui.item.3.purchase"))
                            player.sendMessage(s);
                        player.closeInventory();
                        player.getInventory().addItem(ItemSUtils.head3());
                    } else {
                        for (String s : Main.cfg.getStringList("noMoney"))
                            player.sendMessage(s);
                        player.closeInventory();
                    }
                }
                if (slot == Main.cfg.getInt("gui.item.4.slot")) {
                    if (Main.ppAPI.look(player.getUniqueId()) >= Main.cfg.getInt("gui.item.4.cost")) {
                        Main.ppAPI.take(player.getUniqueId(), Main.cfg.getInt("gui.item.4.cost"));
                        for (String s : Main.cfg.getStringList("gui.item.4.purchase"))
                            player.sendMessage(s);
                        player.closeInventory();
                        player.getInventory().addItem(ItemSUtils.head4());
                    } else {
                        for (String s : Main.cfg.getStringList("noMoney"))
                            player.sendMessage(s);
                        player.closeInventory();
                    }
                }
                if (slot == Main.cfg.getInt("gui.item.5.slot")) {
                    if (Main.ppAPI.look(player.getUniqueId()) >= Main.cfg.getInt("gui.item.5.cost")) {
                        Main.ppAPI.take(player.getUniqueId(), Main.cfg.getInt("gui.item.5.cost"));
                        for (String s : Main.cfg.getStringList("gui.item.5.purchase"))
                            player.sendMessage(s);
                        player.closeInventory();
                        player.getInventory().addItem(ItemSUtils.head5());
                    } else {
                        for (String s : Main.cfg.getStringList("noMoney"))
                            player.sendMessage(s);
                        player.closeInventory();
                    }
                }
                if (slot == Main.cfg.getInt("gui.item.6.slot")) {
                    player.closeInventory();
                    if (Main.ppAPI.look(player.getUniqueId()) >= Main.cfg.getInt("gui.item.6.cost")) {
                        Main.ppAPI.take(player.getUniqueId(), Main.cfg.getInt("gui.item.6.cost"));
                        for (String s : Main.cfg.getStringList("gui.item.6.purchase"))
                            player.sendMessage(s);
                        player.closeInventory();
                        player.getInventory().addItem(ItemSUtils.head6());
                    } else {
                        for (String s : Main.cfg.getStringList("noMoney"))
                            player.sendMessage(s);
                        player.closeInventory();
                    }
                }
                if (slot == Main.cfg.getInt("gui.item.7.slot")) {
                    player.closeInventory();

                }
                event.setCancelled(true);
            }
        }
    }
}
Не вижу пока конкретную причину. Приведи код в порядок, глядишь и ясно станет. Или, может, другие что-то разглядят
 
Не вижу пока конкретную причину. Приведи код в порядок, глядишь и ясно станет. Или, может, другие что-то разглядят
я понял что конкретно происходит с количеством итемов. Почему-то все начиная от slot1 до slot6 умнажают своё количество на 2x, т.е когда я ставлю amount 5, то в меню их становится 10
 
я по кусочкам проверял метод setItem1() и понял, что предмет умножается в количестве из-за чаров, а почему баг происходит именно из-за чаров?

Код:
public static void setItem1(Inventory gui) {
        ItemStack stack = new ItemStack(Material.getMaterial(Main.cfg.getString("gui.item.1.material")), 1);
        if (Main.cfg.get("gui.item.1.id") != null)
            StackUtil.setSkullOwner(stack, Main.cfg.getString("gui.item.1.id"));
        ItemMeta meta = stack.getItemMeta();
        meta.setDisplayName(ColorUtil.color(Main.cfg.getString("gui.item.1.name")));
        List<String> lore = new ArrayList<>();
        for (String s : Main.cfg.getStringList("gui.item.1.lore"))
            lore.add(ColorUtil.color(s));
        meta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 5, true);
        meta.addEnchant(Enchantment.PROTECTION_FIRE, 5, true);
        meta.addEnchant(Enchantment.PROTECTION_PROJECTILE, 5, true);
        meta.addEnchant(Enchantment.OXYGEN, 5, true);
        meta.addEnchant(Enchantment.WATER_WORKER, 2, true);
        meta.addAttributeModifier(Attribute.GENERIC_ATTACK_SPEED,
                new AttributeModifier(UUID.randomUUID(), "generic.attack_speed", 0.25, AttributeModifier.Operation.MULTIPLY_SCALAR_1, EquipmentSlot.HEAD));
        meta.addAttributeModifier(Attribute.GENERIC_ATTACK_DAMAGE,
                new AttributeModifier(UUID.randomUUID(), "generic.attack_damage", 1, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HEAD));
        meta.addAttributeModifier(Attribute.GENERIC_ARMOR_TOUGHNESS,
                new AttributeModifier(UUID.randomUUID(), "generic.armor_toughness", 2.5, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HEAD));
        meta.addAttributeModifier(Attribute.GENERIC_ARMOR,
                new AttributeModifier(UUID.randomUUID(), "generic.armor", 3, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HEAD));
        if (Main.cfg.getBoolean("enable-hide")) {
            meta.hasItemFlag(ItemFlag.HIDE_ATTRIBUTES);
            meta.hasItemFlag(ItemFlag.HIDE_ENCHANTS);
        }
        meta.setLore(lore);
        stack.setItemMeta(meta);
        gui.setItem(Main.cfg.getInt("gui.item.1.slot"), stack);
    }
 

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

Назад
Верх