Войти или зарегистрироваться

Помогите с методом на боеприпасы.

  • Автор темы Автор темы Hilgert
  • Дата начала Дата начала

Hilgert

Старожил
Пользователь
Баллы
123
Имя в Minecraft
Hilgert
Добрый день, у меня появилась (не)большая проблема, я пытаюсь сделать пулемёты, ну я уже всё сделал кроме проверки/отнимания патронов, вот мой метод:
Код:
    public int getAmmoCount(Player p, Material m){
        int i = 0;
        int invs = p.getInventory().getSize();
        for(int it = 0; it < invs; it++){
            if(p.getInventory().getItem(it) != null && p.getInventory().getItem(it).getType() == m){
                i = i + p.getInventory().getItem(it).getAmount();
                if(p.getInventory().getItem(it).getAmount() <= 1){
                    p.getInventory().getItem(it).setType(Material.AIR);
                }else{
                    p.getInventory().getItem(it).setAmount(p.getInventory().getItem(it).getAmount()-1);
                }
               
            }
        }
        p.updateInventory();
        return i;
    }
Пробовал и через:
getInventory().getContents();
Но проблема в том что если в инвентаре в разных ячейках есть хотябы 1 боеприпас(кремень) - то пушка стреляет бесконечно! и боеприпасы не отнимаются! как это решить?
 
Ладно, решил проблему, но теперь с каждого стака отнимается по одному боеприпасу =(
Код:
    public int getAmmoCount(Player p, Material m){
        int a = 0;
        Inventory i = p.getInventory();
        for(ItemStack item : i.getContents()){
            if(item != null && item.getType() == m){
                if(item.getAmount() >= 2){
                    a = item.getAmount();
                    item.setAmount(a-1);
                }else{
                    a = 0;
                    item.setType(Material.AIR);
                }
            }
        }
        return a;
    }
 
Добавить break после того, как отняли один боеприпас
 
Назад
Верх