Mekanism-tilera-Edition/common/buildcraft/api/blueprints/BptBlockUtils.java
2013-08-08 13:10:11 -04:00

85 lines
2.3 KiB
Java

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