Помогите Как проверить есть ли что то в сундуке?

AguRChek_TV

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
AguRChek_TV
Как проверить есть ли что то в сундуке?
 
Код:
public boolean isInventoryEmpty(Inventory inv) {
    for (ItemStack item : inv.getContents()) {
        if (item != null)
            return false;
    }
    return true;
}
Вызываешь через isInventoryEmpty(chest.getInventory())
 
Советую делать в асинхронном потоке, дабы не нагружать серв
Просчет наличия предметов в сундуке не так уж нагружает, чтоб проводить его в асинхроне.
Всё хорошо но советую использовать contine
Во-первых, continue. Во-вторых, с чего ты вообще это взял? Так ты только логику сломаешь и никогда не выйдешь с результатом false.
 
Код:
public boolean isInventoryEmpty(Inventory inv) {
    for (ItemStack item : inv.getContents()) {
        if (item != null)
            return false;
    }
    return true;
}
Вызываешь через isInventoryEmpty(chest.getInventory())
Разве нельзя getContents проверить на empty? Ну или getContents()#length > 0
 
Просчет наличия предметов в сундуке не так уж нагружает, чтоб проводить его в асинхроне.

Во-первых, continue. Во-вторых, с чего ты вообще это взял? Так ты только логику сломаешь и никогда не выйдешь с результатом false.
Ну придираться за contine и continue эт конечно верх разума, ну а в остальном, ты не проверяешь предметы, а только первый предмет, т.е если во втором слоте будет предмет, а в первом нет, то сундук будет считаться пустым, малая нагрузка? Ало, это может на школо серверах с онлайн ом 10 не будет нагрузки, 36 слотов, т.е 36 проверок(хотя в количестве я могу ошибаться), допустим на серве 36 игроков и у каждого по 36 слотов, умножай и понимай
 
Ну придираться за contine и continue эт конечно верх разума
Зато по делу.
ну а в остальном, ты не проверяешь предметы, а только первый предмет, т.е если во втором слоте будет предмет, а в первом нет, то сундук будет считаться пустым, малая нагрузка?
Пересмотри мой код, гений. Если предмет НЕ null (т.е. если существует), то мы возвращаем, что сундук НЕ пуст, иначе продолжаем цикл.
В твоём предложении мы обработаем вообще все предметы, и в любом случае вернём true.
Ало, это может на школо серверах с онлайн ом 10 не будет нагрузки, 36 слотов, т.е 36 проверок(хотя в количестве я могу ошибаться), допустим на серве 36 игроков и у каждого по 36 слотов, умножай и понимай
Мы обрабатываем не инвентари игроков, а сундук, и очень сомневаюсь, что проверка происходит каждый тик.
Переход в асинхрон также имеет свои минусы, если, например, нам нужно в тот же тик проверить наличие в сундуке предметов. Например, запрет открытия сундука, если в нём есть предметы - ты не сможешь отменить событие, просто потому что ты уже уходишь в другой поток.
 
Плюсую, у сундука бывают виеверы, конкурент модифи словится в асинсе и все. Окажется что сундук уже не пуст, или наоборот и проверка по писде пойдет.
 
Назад
Верх