85 lines
2.3 KiB
Java
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);
|
|
}
|
|
|
|
}
|