Помогите Не работает цикл for

Статус
Закрыто для дальнейших ответов.

HaloSpartan

Активный участник
Пользователь
Баллы
66
Код:
for(ItemStack item : p.getInventory().getContents())
{
int dm;
int gm;
int fm;

if(item.getType() != Material.DIRT) return;
{
dm = item.getAmount() * 1;
item.setType(Material.AIR);
}
if(item.getType() != Material.GRAVEL) return;
{
gm = item.getAmount() * 1;
item.setType(Material.AIR);
}
if(item.getType() != Material.FLINT) return;
{
fm = item.getAmount() * 2;
item.setType(Material.AIR);
}

int money = dm + gm + fm;
configuration.set("players." + p.getName() + ".balance", balance + money);
int bal = configuration.getInt("players." + p.getName() + ".balance");
}

В чём собственно проблема, этот кусочек кода часть PlayerInteractEvent всё работает отлично, кроме этой части кода.
Собственно в чём смысл этой части? Я перебираю инвентарь игрока который клацнул по блоку, затем получаю/отсеиваю блоки которые мне нужно(в данному случае земля, гравий и кремень) и за каждый предмет отсеиваемого типа присваиваю ему определённое число.
То есть должно быть так, я перебираю инвентарь игрока, если у него есть в нём допустим 12 земли и 2 кремня, я получаю кол-во этих блоков и присваиваю определённым переменным сумму произведении кол-ва и вторых множителей , то есть у в итоге у нас получается 16 и в файл должно записаться число: число из файла + 16, но этого не происходит.
И я не могу понять в чём проблема. Прошу помочь мне.
 
Код:
    public static int calc(Player p, Material m) {
        int count = 0;
        for (int i = 0; i < p.getInventory().getSize(); i++) {
            ItemStack stack = p.getInventory().getItem(i);
            if (stack == null)
                continue;
            if (stack.getType()==m) {
                count += stack.getAmount();
            }
        }
        return count;
    }
 
твой код заработает (ну или как минимум будет ближе к истине), если ты уберешь
return;
и поменяешь != на ==
не знаю, что ты пытался изобразить, но сейчас как только ты натыкаешься на что-то кроме земли, гравия и кремния, цикл и метод завершается, не пройдя весь инвентарь
 
Код:
    public static int calc(Player p, Material m) {
        int count = 0;
        for (int i = 0; i < p.getInventory().getSize(); i++) {
            ItemStack stack = p.getInventory().getItem(i);
            if (stack == null)
                continue;
            if (stack.getType()==m) {
                count += stack.getAmount();
            }
        }
        return count;
    }
Спасибо, всё работает)
Но почему не работает удаление предмета?
Код:
if(stack.getType() == Material.FLINT)
            {
                count += stack.getAmount() * 2;
                stack.setType(Material.AIR);
            }
 
твой код заработает (ну или как минимум будет ближе к истине), если ты уберешь
return;
и поменяешь != на ==
не знаю, что ты пытался изобразить, но сейчас как только ты натыкаешься на что-то кроме земли, гравия и кремния, цикл и метод завершается, не пройдя весь инвентарь
Хорошо, приму у сведенью, спасибо за помощь :3
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх