package mekanism.common.recipe.inputs; import mekanism.api.util.StackUtils; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.oredict.OreDictionary; public class ItemStackInput extends MachineInput<ItemStackInput> { public ItemStack ingredient; public ItemStackInput(ItemStack stack) { ingredient = stack; } public ItemStackInput() {} @Override public void load(NBTTagCompound nbtTags) { ingredient = ItemStack.loadItemStackFromNBT(nbtTags.getCompoundTag("input")); } @Override public ItemStackInput copy() { return new ItemStackInput(ingredient.copy()); } @Override public boolean isValid() { return ingredient != null; } public ItemStackInput wildCopy() { return new ItemStackInput(new ItemStack(ingredient.getItem(), ingredient.stackSize, OreDictionary.WILDCARD_VALUE)); } public boolean useItemStackFromInventory(ItemStack[] inventory, int index, boolean deplete) { if(inputContains(inventory[index], ingredient)) { if(deplete) { inventory[index] = StackUtils.subtract(inventory[index], ingredient); } return true; } return false; } @Override public int hashIngredients() { return StackUtils.hashItemStack(ingredient); } @Override public boolean testEquality(ItemStackInput other) { return StackUtils.equalsWildcardWithNBT(ingredient, other.ingredient); } @Override public boolean isInstance(Object other) { return other instanceof ItemStackInput; } }