(Решено)Перебор id в конфиге...

  • Автор темы Автор темы reZero
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

reZero

Активный участник
Пользователь
Баллы
76
Всем привет. У меня стоит плагин на сохранение вещей после смерти, но мне нужно чтобы некоторые предметы все-таки исчезали. Для этого мне нужно перебрать в конфиге лист с id предметов (я знаю что в 1.13 id нет и лучше было бы использовать названия) и удалять эти предметы при респавне через 1 сек.
Реализовал я это так
PHP:
    @SuppressWarnings("deprecation")
    public static void removeItems(Player p)
    {
        new BukkitRunnable()
        {
            @Override
            public void run()
            {
                for(int id : main.getConfig().getIntegerList("settings.items"))
                {
                    if(p.getInventory().contains(id))
                    {
                        p.getInventory().remove(id);
                    }
                }
            }
        }.runTaskLater(main, 20L);
    }
PHP:
settings: 
  items:
  - 215
  - 35:12
  - 35:15
Но есть маленькая проблема. Если мне потребуется вписать туда, например, шерсть, которая имеет id и subid(если я конечно ничего не перепутал), то эта шерсть не удалится.
Пробовал вписывать так: 35:15, 35/15
Никакой из этих двух вариантов не сработал. Прошу Вашей помощи =)
P.S извиняюсь, если вопрос очень глупый
 
Всем привет. У меня стоит плагин на сохранение вещей после смерти, но мне нужно чтобы некоторые предметы все-таки исчезали. Для этого мне нужно перебрать в конфиге лист с id предметов (я знаю что в 1.13 id нет и лучше было бы использовать названия) и удалять эти предметы при респавне через 1 сек.
Реализовал я это так
PHP:
    @SuppressWarnings("deprecation")
    public static void removeItems(Player p)
    {
        new BukkitRunnable()
        {
            @Override
            public void run()
            {
                for(int id : main.getConfig().getIntegerList("settings.items"))
                {
                    if(p.getInventory().contains(id))
                    {
                        p.getInventory().remove(id);
                    }
                }
            }
        }.runTaskLater(main, 20L);
    }
PHP:
settings:
  items:
  - 215
  - 35:12
  - 35:15
Но есть маленькая проблема. Если мне потребуется вписать туда, например, шерсть, которая имеет id и subid(если я конечно ничего не перепутал), то эта шерсть не удалится.
Пробовал вписывать так: 35:15, 35/15
Никакой из этих двух вариантов не сработал. Прошу Вашей помощи =)
P.S извиняюсь, если вопрос очень глупый
Цвет шерсти указывается в short, не в самом материале
 
Код:
String[] split = config.getString("id").split(":");
ItemStack itemStack = new ItemStack(Material.getMaterial(split[0]));
if (split.lenght > 1 && itemStack.getType() == Material.WOOL) {
    itemStack.setDurability(Integer.parseInt(split[1]));
}
p.getInventory().remove(itemStack);
С циклом foreach
Код:
for (String mat : config.getStringList("mats")) {
    String[] split = mat.split(":");
    ItemStack itemStack = new ItemStack(Material.getMaterial(split[0]));
    if (split.lenght > 1 && itemStack.getType() == Material.WOOL) {
        itemStack.setDurability(Integer.parseInt(split[1]));
    }
    p.getInventory().remove(itemStack);
}
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх