| /** |
| * 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<ItemStack> 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); |
| } |
| |
| } |