Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Hilgert, 7 фев 2014.

  1. Автор темы
    Hilgert

    Hilgert Старожил Пользователь

    Баллы:
    123
    Skype:
    mixa2258
    Имя в 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 боеприпас(кремень) - то пушка стреляет бесконечно! и боеприпасы не отнимаются! как это решить?
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    Hilgert

    Hilgert Старожил Пользователь

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    Ладно, решил проблему, но теперь с каждого стака отнимается по одному боеприпасу =(
    Код:
        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;
        }
        
     
  4. EndEclipse

    EndEclipse Активный участник

    Баллы:
    63
    Имя в Minecraft:
    EndEclipse
    Добавить break после того, как отняли один боеприпас
     
    Hilgert нравится это.

Поделиться этой страницей