RpAhmed
Пользователь
- Сообщения
- 17
Можно ли как-то найти и удалить предмет в инвентаре игрока в конкретном количестве?
Система крафта:
Нажал на предмет -> удалились нужные в крафте предметы в нужном количестве -> получил необходимый предмет.
Проблема метода inv.contains() в том, что он ищет конкретное число предмета.
То есть, если у тебя прописано plyInv.contains(new ItemStack(Material.IRON_INGOT)), то он не будет пропускать нажатие, если у тебя больше 1 слитка в инвентаре.
Кусок кода ниже:
Как можно решить данную проблему?
Система крафта:
Нажал на предмет -> удалились нужные в крафте предметы в нужном количестве -> получил необходимый предмет.
Вам необходимо зарегистрироваться для просмотра изображений-вложений
Проблема метода inv.contains() в том, что он ищет конкретное число предмета.
То есть, если у тебя прописано plyInv.contains(new ItemStack(Material.IRON_INGOT)), то он не будет пропускать нажатие, если у тебя больше 1 слитка в инвентаре.
Кусок кода ниже:
Java:
@EventHandler
public void inventoryEvent(InventoryClickEvent e)
{
Inventory inv = e.getInventory();
ItemStack curretItem = e.getCurrentItem();
Player ply = (Player) e.getWhoClicked();
Inventory plyInv = ply.getInventory();
if (inv.equals(Main.menu))
{
if (curretItem.equals(Main.dust_black))
{
//if (plyInv.contains(new ItemStack(Material.IRON_INGOT)))
//{
for (int i = 1; i < 27; i++) {
ItemStack item = plyInv.getItem(i);
if (item != null) return;
if (item.getType().equals(Material.IRON_INGOT)) // этот способ выдает null ошибку
{
item.setAmount(item.getAmount() - 1);
}
}
//}
}
e.setCancelled(true);
}
}
Последнее редактирование: