Вопрос Как получить список эффектов зелья

Версия Minecraft
1.20.X

fjdjusu9e

Пользователь
Сообщения
141
Решения
1
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Цикл for просто не выполняется, пробовал принтить результат potion.getEffects() и принтило просто [], как получить эти эффекты что бы цикл фор нормально выполнялся
 
Немного накостылил, но нашел несколько вариантов решения твоей задачи. Если зелье кастомное или нет

Я увидел, что список for выдает пустой список []. Поэтому решил получить список эффектов через
Такого кода должно впринципе хватить для получения списка эффектов.
Если получать список эффектов у кастомного зелья через PotionData. он будет выводить UNCRAFTABLE


Весь код писался под 1.20.1

Код:
    @EventHandler
    public void onPotionDrink(PlayerItemConsumeEvent e) {
        Player player = e.getPlayer();
        if(e.getItem().getType() == Material.POTION) {
            Potion potion = Potion.fromItemStack(e.getItem());
            PotionMeta potionMeta = (PotionMeta) e.getItem().getItemMeta();
            PotionData data = potionMeta.getBasePotionData();
            List<PotionEffect> customData = potionMeta.getCustomEffects();
            if(potionMeta.hasCustomEffects()) {
                player.sendMessage("Вы выпили зелье со следующими эффектами: " + ChatColor.AQUA + customData.toString());
                return;
            }
            player.sendMessage("Вы выпили зелье со следующими эффектами: " + ChatColor.AQUA + data.getType().toString());
        }
    }
Вот какой результат:
1. Обычное зелье
2. Зелье созданное командой
Вам необходимо зарегистрироваться для просмотра изображений-вложений
 
Назад
Сверху Снизу