/** * Copyright (c) SpaceToad, 2011 * http://www.mod-buildcraft.com * * BuildCraft is distributed under the terms of the Minecraft Mod Public * License 1.0, or MMPL. Please check the contents of the license located in * http://www.mod-buildcraft.com/MMPL-1.0.txt */ package buildcraft.api.blueprints; import java.util.LinkedList; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @Deprecated public class BptBlockUtils { public static void requestInventoryContents(BptSlotInfo slot, IBptContext context, LinkedList requirements) { ItemStack[] stacks = getItemStacks(slot, context); for (ItemStack stack : stacks) { if (stack != null) { requirements.add(stack); } } } public static void initializeInventoryContents(BptSlotInfo slot, IBptContext context, IInventory inventory) { ItemStack[] stacks = new ItemStack[inventory.getSizeInventory()]; for (int i = 0; i < inventory.getSizeInventory(); ++i) { stacks[i] = inventory.getStackInSlot(i); } setItemStacks(slot, context, stacks); } public static void buildInventoryContents(BptSlotInfo slot, IBptContext context, IInventory inventory) { ItemStack[] stacks = getItemStacks(slot, context); for (int i = 0; i < stacks.length; ++i) { inventory.setInventorySlotContents(i, stacks[i]); } } public static ItemStack[] getItemStacks(BptSlotInfo slot, IBptContext context) { NBTTagList list = (NBTTagList) slot.cpt.getTag("inv"); if (list == null) return new ItemStack[0]; ItemStack stacks[] = new ItemStack[list.tagCount()]; for (int i = 0; i < list.tagCount(); ++i) { ItemStack stack = ItemStack.loadItemStackFromNBT((NBTTagCompound) list.tagAt(i)); if (stack != null && stack.itemID != 0 && stack.stackSize > 0) { stacks[i] = context.mapItemStack(stack); } } return stacks; } public static void setItemStacks(BptSlotInfo slot, IBptContext context, ItemStack[] stacks) { NBTTagList nbttaglist = new NBTTagList(); for (int i = 0; i < stacks.length; ++i) { NBTTagCompound cpt = new NBTTagCompound(); nbttaglist.appendTag(cpt); ItemStack stack = stacks[i]; if (stack != null && stack.stackSize != 0) { stack.writeToNBT(cpt); context.storeId(stack.itemID); } } slot.cpt.setTag("inv", nbttaglist); } }