package crazypants.enderio.machine;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fluids.FluidStack;
public class MachineRecipeInput {
public static ItemStack getInputForSlot(int slot, MachineRecipeInput... inputs) {
for (MachineRecipeInput ri : inputs) {
if(ri.slotNumber == slot) {
return ri.item;
}
}
return null;
}
public static MachineRecipeInput create(int slotNumber, ItemStack item) {
return new MachineRecipeInput(slotNumber, item);
}
public final int slotNumber;
public final ItemStack item;
public final FluidStack fluid;
public MachineRecipeInput(int slotNumber, ItemStack item) {
this.slotNumber = slotNumber;
this.item = item;
this.fluid = null;
}
public MachineRecipeInput(int slotNumber, FluidStack fluid) {
this.slotNumber = slotNumber;
this.item = null;
this.fluid = fluid;
}
public MachineRecipeInput(int slotNumber, ItemStack item, FluidStack fluid) {
this.slotNumber = slotNumber;
this.item = item;
this.fluid = fluid;
}
public static MachineRecipeInput readFromNBT(NBTTagCompound root) {
int slotNum = root.getInteger("slotNum");
ItemStack item = null;
FluidStack fluid = null;
if(root.hasKey("itemStack")) {
NBTTagCompound stackRoot = root.getCompoundTag("itemStack");
item = ItemStack.loadItemStackFromNBT(stackRoot);
} else if(root.hasKey("fluidStack")) {
NBTTagCompound stackRoot = root.getCompoundTag("fluidStack");
fluid = FluidStack.loadFluidStackFromNBT(stackRoot);
}
return new MachineRecipeInput(slotNum, item, fluid);
}
public void writeToNbt(NBTTagCompound root) {
if(item != null) {
NBTTagCompound stackRoot = new NBTTagCompound();
item.writeToNBT(stackRoot);
root.setTag("itemStack", stackRoot);
} else if(fluid != null) {
NBTTagCompound stackRoot = new NBTTagCompound();
fluid.writeToNBT(stackRoot);
root.setTag("fluidStack", stackRoot);
}
root.setInteger("slotNum", slotNumber);
}
public boolean isFluid() {
return fluid != null;
}
}