Помогите Проверка предмета у игрока

kefavova

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Afek
Всем привет! Мне нужно проверить есть ли у игрока предметы Эндер Пёрл и Изумруд, если есть ети предметы то выскакивает сообщение, а если нету етих предметов то закрывается меню. Я нашел в интернете код:
Код:
ItemStack whatShoudRemove = new ItemStack (Material.APPLE);
if (p.getInventory().containsAtLeast(whatShoudRemove, 1)){   
    for (int i = 0; i<=36; i++){
        if (p.getInventory().getItem(i)==null) continue; //пропускаем код если item null а то nullpointer
        if (p.getInventory().getItem(i).getType()==whatShoudRemove.getType()){ //сравниваем тип
            if (p.getInventory().getItem(i).getAmount()==1){ //количество
                p.getInventory().setItem(i, new ItemStack(Material.AIR)); //удаляем вещь из этого слота. если использовать remove то он удалит все вещи с кол-вом 1
            } else if (p.getInventory().getItem(i).getAmount()>1){ //если кол-во больше 1 то просто уменьшаем его
                p.getInventory().getItem(i).setAmount(p.getInventory().getItem(i).getAmount()-1);
            }
        }
    }
}
Кто сможет мне помочь как сделать проверку на 2 предмета. Р.с. не надо мне говорить что " тебя что в гугле заблокировали".
 
Эммм, у класса Inventory метод contains - используй его.
Тебя что, в документации к Spigot забанили?
 
Последнее редактирование:
Код:
    public static boolean checkremove(Player p, ItemStack s, int c) {
        if (calc(p, s) >= c) {
            clear(p, s, c);
            return true;
        }
        return false;
    }

    public static int calc(Player p, ItemStack s) {
        int count = 0;
        for (int i = 0; i < p.getInventory().getSize(); i++) {
            ItemStack stack = p.getInventory().getItem(i);
            if (stack == null)
                continue;
            if (stack.isSimilar(s)) {
                count += stack.getAmount();
            }
        }
        return count;
    }

    public static void clear(Player p, ItemStack s, int c) {
        for (int i = 0; i < p.getInventory().getSize(); i++) {
            ItemStack stack = p.getInventory().getItem(i);
            if (stack == null)
                continue;
            if (stack.isSimilar(s)) {
                if (stack.getAmount() == 0)
                    break;
                if (stack.getAmount() <= c) {
                    c = c - stack.getAmount();
                    stack.setAmount(-1);
                }
                if (stack.getAmount() > c) {
                    stack.setAmount(stack.getAmount() - c);
                    c = 0;
                }
            }
        }
    }
 
Код:
    public static boolean checkremove(Player p, ItemStack s, int c) {
        if (calc(p, s) >= c) {
            clear(p, s, c);
            return true;
        }
        return false;
    }

    public static int calc(Player p, ItemStack s) {
        int count = 0;
        for (int i = 0; i < p.getInventory().getSize(); i++) {
            ItemStack stack = p.getInventory().getItem(i);
            if (stack == null)
                continue;
            if (stack.isSimilar(s)) {
                count += stack.getAmount();
            }
        }
        return count;
    }

    public static void clear(Player p, ItemStack s, int c) {
        for (int i = 0; i < p.getInventory().getSize(); i++) {
            ItemStack stack = p.getInventory().getItem(i);
            if (stack == null)
                continue;
            if (stack.isSimilar(s)) {
                if (stack.getAmount() == 0)
                    break;
                if (stack.getAmount() <= c) {
                    c = c - stack.getAmount();
                    stack.setAmount(-1);
                }
                if (stack.getAmount() > c) {
                    stack.setAmount(stack.getAmount() - c);
                    c = 0;
                }
            }
        }
    }
Сможешь помочь мне надо отправить игроку сообщение если нету етого предмета?
 
Сможешь помочь мне надо отправить игроку сообщение если нету етого предмета?

doktor-preobrazhenskiy-i-diagnoz_136369739_orig_.jpg
 
Назад
Верх