package chbachman.armour.util;
import baubles.api.BaublesApi;
import cpw.mods.fml.common.Loader;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent;
import net.minecraftforge.oredict.OreDictionary;
public class InventoryUtil {
public static void givePlayerItem(EntityPlayer player, ItemStack stack) {
EntityItem entityitem = player.dropPlayerItemWithRandomChoice(stack, false);
entityitem.delayBeforeCanPickup = 0;
entityitem.func_145797_a(player.getCommandSenderName());
}
public static void decrementItemStack(EntityPlayer player, IInventory inventory, int index) {
ItemStack stack = inventory.getStackInSlot(index);
if (stack != null) {
inventory.decrStackSize(index, 1);
if (stack.getItem().hasContainerItem(stack)) {
ItemStack itemstack2 = stack.getItem().getContainerItem(stack);
if (itemstack2 != null && itemstack2.isItemStackDamageable() && itemstack2.getItemDamage() > itemstack2.getMaxDamage()) {
MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(player, itemstack2));
return;
}
if (!stack.getItem().doesContainerItemLeaveCraftingGrid(stack) || !player.inventory.addItemStackToInventory(itemstack2)) {
if (inventory.getStackInSlot(index) == null) {
inventory.setInventorySlotContents(index, itemstack2);
} else {
player.dropPlayerItemWithRandomChoice(itemstack2, false);
}
}
}
}
}
public static boolean doesInventoryContainItemStack(ItemStack[] inventory, ItemStack stack) {
for (ItemStack inventoryStack : inventory) {
if (InventoryUtil.itemMatches(inventoryStack, stack, false)) {
return true;
}
}
return false;
}
public static ItemStack getItemStackFromInventory(ItemStack[] inventory, ItemStack stack) {
for (ItemStack inventoryStack : inventory) {
if (InventoryUtil.itemMatches(inventoryStack, stack, false)) {
return inventoryStack;
}
}
return null;
}
public static boolean doesInventoryContainItemStack(IInventory inventory, ItemStack stack) {
for (int i = 0; i < inventory.getSizeInventory(); i++) {
ItemStack inventoryStack = inventory.getStackInSlot(i);
if (InventoryUtil.itemMatches(inventoryStack, stack, false)) {
return true;
}
}
return false;
}
public static ItemStack getItemStackFromInventory(IInventory inventory, ItemStack stack) {
for (int i = 0; i < inventory.getSizeInventory(); i++) {
ItemStack inventoryStack = inventory.getStackInSlot(i);
if (InventoryUtil.itemMatches(inventoryStack, stack, false)) {
return inventoryStack;
}
}
return null;
}
public static ItemStack[] getArmour(EntityPlayer player) {
if (Loader.isModLoaded("Baubles")) {
return BaublesUtil.getArmour(player);
}
ItemStack[] armour = new ItemStack[7];
for (int i = 0; i < player.inventory.armorInventory.length; i++) {
armour[i] = player.inventory.armorInventory[i];
}
return armour;
}
public static boolean itemMatches(ItemStack target, ItemStack input, boolean strict) {
if (input == null && target != null || input != null && target == null) {
return false;
}
if (input == null && target == null) {
return true;
}
return (target.getItem() == input.getItem() && ((target.getItemDamage() == OreDictionary.WILDCARD_VALUE && !strict) || target.getItemDamage() == input.getItemDamage()));
}
}