/** | |
* 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.src.IInventory; | |
import net.minecraft.src.ItemStack; | |
import net.minecraft.src.NBTTagCompound; | |
import net.minecraft.src.NBTTagList; | |
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); | |
} | |
} |