Проблема с созданием предметов в инвентаре Эндер-Сундука

Версия Minecraft
1.17.X
Ядро
Purpur

ProGiple

Пользователь
Сообщения
80
Решения
1
Другие ядра
  1. Purpur
Привет! Я недавно начал делать плагин на прокачку эндер-сундука, всё работает, все значения записывает в конфиг для каждого игрока, но я столкнулся с одной проблемой: в конфиге может быть прописано:
YAML:
data:
    nickname: 27
Но даже при таком случае, предметы, которые нужны для прокачки (т.е. нажимаешь на предмет - он забирает монеты и добавляет доп. слот в конфиг для игрока), они всё равно идут либо с нуля (т.е. все слоты закрыты с самого начала), либо с 9 (т.е. открыта одна строка)

Для расширения эндер-сундука до 6 строк я использую встроенную функцию в ядро Purpur

Всё работает, кроме расположения предметов. Даже если я прокачаю слот, он не появиться в эндер-сундуке, будет так же, как я говорил до этого

Прилагаю часть кода, отвечающую за это:

Java:
@EventHandler
    public void onOpen(InventoryOpenEvent event) {
        Player player = (Player) event.getPlayer();
        Inventory ender = player.getEnderChest();
        int size = ender.getSize();
        ItemStack itemt = new ItemStack(Material.valueOf(getConfig().getString("buy_slot.material")));
        ItemMeta meta = itemt.getItemMeta();

        player.updateInventory();

        List<String> loretext = new ArrayList<>();
        List<String> configLore = getConfig().getStringList("buy_slot.lore");

        meta.setCustomModelData(987651);

        meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(getConfig().getString("buy_slot.name"))));
        for (String line : configLore) {
            String coloredline = ChatColor.translateAlternateColorCodes('&', line);
            loretext.add(coloredline);
        }
        meta.setLore(loretext);
        itemt.setItemMeta(meta);
        boolean hasPlayerValue = Objects.requireNonNull(getConfig().getConfigurationSection("data")).contains(player.getName());
        if (!hasPlayerValue) {
            upd("data." + player.getName(), 27);
            reloadConfig();
        }
        int slots = getConfig().getInt("data." + player.getName());
        if (size > 27) {
            for (int i = slots; i < size; i++) {
                ender.setItem(i, itemt);
            }
            player.updateInventory();
        }
    }

Буду благодарен вашей помощи!
 
Назад
Сверху Снизу