[1.7.10] Игнорирует предмет с уроном

Статус
В этой теме нельзя размещать новые ответы.
1,239
2
24
Есть код,который удаляет ItemStack из инвентаря

Код:
public static boolean consumeItemStack2(IInventory inventory, ItemStack stack)
{
   if(getAmount(inventory, stack) >= stack.stackSize)
   {
      for (int i = 0; i < inventory.getSizeInventory(); i++) {
         if(isItemStackEqual(inventory.getStackInSlot(i), stack)){
            int amount = Math.min(stack.stackSize, inventory.getStackInSlot(i).stackSize);
            if(amount > 0)
            {
               inventory.getStackInSlot(i).stackSize -= amount;
               if(inventory.getStackInSlot(i).stackSize <= 0)
                  inventory.setInventorySlotContents(i, null);
               stack.stackSize -= amount;
            }
            if(stack.stackSize <= 0)
               return true;
         }
      }
   }
   return false;
}

public static boolean isItemStackEqual(ItemStack stack, ItemStack stack2)
{
   if(stack != null && stack2 != null && stack.getItem() == stack2.getItem() && stack.getItemDamage() == stack2.getItemDamage())
   {
      if(!stack.hasTagCompound() && !stack2.hasTagCompound())
         return true;
      else if(stack.hasTagCompound() != stack2.hasTagCompound())
         return false;
      else if(stack.stackTagCompound.equals(stack2.stackTagCompound))
         return true;

   }
   return false;
}

public static int getAmount(IInventory inventory, ItemStack stack)
{
   int amount = 0;
   for (int i = 0; i < inventory.getSizeInventory(); i++) {
      if(isItemStackEqual(inventory.getStackInSlot(i), stack)){
         amount += inventory.getStackInSlot(i).stackSize;
      }
   }
   return amount;
}


Вся проблема в том,что если этот предмет с уроном:
d2708a0afe.jpg


То он не удалит его.

Удаляю так: (ItemUtils - мой класс , ModItems - класс с предметами )
Код:
ItemStack st = new ItemStack(ModItems.ar);
ItemUtils.consumeItemStack2(player.inventory ,  st);

Возможно,если есть другие способы удалить из инвентаря предмет с уроном то ответьте.
 
1,976
68
220
XuPuPG написал(а):
Есть другие способы удалить предмет?
Код:
player.inventory.consumeInventoryItem(item)
[merge_posts_bbcode]Добавлено: 30.05.2016 22:46:28[/merge_posts_bbcode]

У тебя стак новый - урон будет 0. А блочит вот это :
Код:
stack.getItemDamage() == stack2.getItemDamage()

[merge_posts_bbcode]Добавлено: 30.05.2016 22:47:10[/merge_posts_bbcode]

Я одолжу этот код, ты не против? :D
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху