package buildcraftAdditions.inventories.containers;
import buildcraftAdditions.inventories.slots.SlotFake;
import buildcraftAdditions.tileEntities.TileRefinery;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
/**
* Copyright (c) 2014-2015, AEnterprise
* http://buildcraftadditions.wordpress.com/
* Buildcraft Additions is distributed under the terms of GNU GPL v3.0
* Please check the contents of the license located in
* http://buildcraftadditions.wordpress.com/wiki/licensing-stuff/
*/
public class ContainerRefinery extends ContainerBase<TileRefinery> {
private int currentHeat, requiredHeat, energyCost, fluidIDInput, fluidAmountInput, fluidIDOutput, fluidAmountOutput;
public ContainerRefinery(EntityPlayer player, TileRefinery tile) {
super(player, tile);
}
@Override
public void addCraftingToCrafters(ICrafting crafting) {
super.addCraftingToCrafters(crafting);
crafting.sendProgressBarUpdate(this, 0, inventory.currentHeat);
crafting.sendProgressBarUpdate(this, 1, inventory.requiredHeat);
crafting.sendProgressBarUpdate(this, 2, inventory.energyCost);
crafting.sendProgressBarUpdate(this, 3, inventory.input.getFluidAmount() > 0 ? inventory.input.getFluid().getFluidID() : -1);
crafting.sendProgressBarUpdate(this, 4, inventory.input.getFluidAmount());
crafting.sendProgressBarUpdate(this, 5, inventory.output.getFluidAmount() > 0 ? inventory.output.getFluid().getFluidID() : -1);
crafting.sendProgressBarUpdate(this, 6, inventory.output.getFluidAmount());
}
@Override
public void detectAndSendChanges() {
super.detectAndSendChanges();
if (crafters != null) {
for (Object o : crafters) {
if (o != null && o instanceof ICrafting) {
ICrafting crafting = (ICrafting) o;
if (currentHeat != inventory.currentHeat)
crafting.sendProgressBarUpdate(this, 0, inventory.currentHeat);
if (requiredHeat != inventory.requiredHeat)
crafting.sendProgressBarUpdate(this, 1, inventory.requiredHeat);
if (energyCost != inventory.energyCost)
crafting.sendProgressBarUpdate(this, 2, inventory.energyCost);
if (fluidIDInput != (inventory.input.getFluidAmount() > 0 ? inventory.input.getFluid().getFluidID() : -1))
crafting.sendProgressBarUpdate(this, 3, inventory.input.getFluidAmount() > 0 ? inventory.input.getFluid().getFluidID() : -1);
if (fluidAmountInput != inventory.input.getFluidAmount())
crafting.sendProgressBarUpdate(this, 4, inventory.input.getFluidAmount());
if (fluidIDOutput != (inventory.output.getFluidAmount() > 0 ? inventory.output.getFluid().getFluidID() : -1))
crafting.sendProgressBarUpdate(this, 5, inventory.output.getFluidAmount() > 0 ? inventory.output.getFluid().getFluidID() : -1);
if (fluidAmountOutput != inventory.output.getFluidAmount())
crafting.sendProgressBarUpdate(this, 6, inventory.output.getFluidAmount());
}
}
}
currentHeat = inventory.currentHeat;
requiredHeat = inventory.requiredHeat;
energyCost = inventory.energyCost;
fluidIDInput = inventory.input.getFluidAmount() > 0 ? inventory.input.getFluid().getFluidID() : -1;
fluidAmountInput = inventory.input.getFluidAmount();
fluidIDOutput = inventory.output.getFluidAmount() > 0 ? inventory.output.getFluid().getFluidID() : -1;
fluidAmountOutput = inventory.output.getFluidAmount();
}
@Override
@SideOnly(Side.CLIENT)
public void updateProgressBar(int id, int value) {
super.updateProgressBar(id, value);
switch (id) {
case 0:
inventory.currentHeat = value;
break;
case 1:
inventory.requiredHeat = value;
break;
case 2:
inventory.energyCost = value;
break;
case 3:
if (value >= 0)
inventory.input.setFluid(new FluidStack(FluidRegistry.getFluid(value), inventory.input.getFluidAmount()));
else
inventory.input.setFluid(null);
break;
case 4:
if (value > 0 && inventory.input.getFluid() != null)
inventory.input.setFluid(new FluidStack(inventory.input.getFluid(), value));
else
inventory.input.setFluid(null);
break;
case 5:
if (value >= 0)
inventory.output.setFluid(new FluidStack(FluidRegistry.getFluid(value), inventory.output.getFluidAmount()));
else
inventory.output.setFluid(null);
break;
case 6:
if (value > 0 && inventory.output.getFluid() != null)
inventory.output.setFluid(new FluidStack(inventory.output.getFluid(), value));
else
inventory.output.setFluid(null);
break;
default:
break;
}
}
@Override
protected void addPlayerInventory(int x, int y) {
}
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) {
return null;
}
@Override
public ItemStack slotClick(int slotNum, int mouseButton, int modifier, EntityPlayer player) {
return null;
}
@Override
protected Slot addSlotToContainer(Slot slot) {
return null;
}
@Override
public Slot getSlot(int id) {
return new SlotFake(null, -5, -5, 0);
}
}