Помогите Баланс уходит в минус

NightDay_

Новичок
Пользователь
Баллы
16
Ник в Minecraft
NightDay_
Код:
                 p.getInventory().removeItem(new ItemStack(Material.GRASS_BLOCK, 16));
                 getInstance().pdata.set("data." + p.getName() + ".blocks", getInstance().pdata.getInt("data." + p.getName() + ".blocks") - 16);

вот есть у меня такой код и если у меня баланс например 10 то при покупке блоков он уходит в минус и становится -6

помогите пожалуйста
 
Ну, ты ничего и не проверяешь - естественно он будет в минус уходить.
 
Получи баланс в переменную а не сразу устанавливай, проверь его через if, в зависимости от результата делай что требуется.

как то так??

Код:
 if (getInstance().pdata.getInt("data." + p.getName() + ".blocks") == 0) {
                     p.sendMessage("Нехватает CB");
                 }else {
                     p.getInventory().removeItem(new ItemStack(Material.DIRT, 16));
                     getInstance().pdata.set("data." + p.getName() + ".blocks", getInstance().pdata.getInt("data." + p.getName() + ".blocks") + 16);
                 }
 
как то так??

Код:
 if (getInstance().pdata.getInt("data." + p.getName() + ".blocks") == 0) {
                     p.sendMessage("Нехватает CB");
                 }else {
                     p.getInventory().removeItem(new ItemStack(Material.DIRT, 16));
                     getInstance().pdata.set("data." + p.getName() + ".blocks", getInstance().pdata.getInt("data." + p.getName() + ".blocks") + 16);
                 }
Скорей так
PHP:
int balance = getInstance().pdata.getInt("data." + p.getName() + ".blocks");
if (balance - 16 <= 0) {
    p.sendMessage("Не хватает CB");
} else {
    p.getInventory().removeItem(new ItemStack(Material.DIRT, 16));
    getInstance().pdata.set("data." + p.getName() + ".blocks", balance - 16);
}
 
а как сделать проверку есть ли блок в инвентаре
Создаёшь переменнту Integer, пусть будет "amount", затем перебираешь инвентарь игрока и от каждого ItemStack получаешь материал, если он равен тому, который тебе нужен, amount = amount + item.getAmount();, и так в конце у тебя будет общее количество материалов. И у тебя удаление предметов неправильно идёт, будет работать только если эти блоки одним предметом, если переименованы или лор есть, то это уже работать не будет, поищи более нормальный способ
 
Назад
Верх Низ