package buildcraftAdditions.inventories.containers; /** * 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/ */ import buildcraftAdditions.inventories.slots.SlotOutput; import buildcraftAdditions.tileEntities.TileFluidicCompressor; 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.FluidContainerRegistry; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidContainerItem; public class ContainerFluidicCompressor extends ContainerBase<TileFluidicCompressor> { private boolean fill; private int fluidID, fluidAmount; public ContainerFluidicCompressor(EntityPlayer player, TileFluidicCompressor tile) { super(player, tile); addSlotToContainer(new Slot(tile, 0, 89, 39) { @Override public boolean isItemValid(ItemStack stack) { return stack != null && stack.getItem() != null && (stack.getItem() instanceof IFluidContainerItem || FluidContainerRegistry.isContainer(stack)); } }); addSlotToContainer(new SlotOutput(tile, 1, 126, 43)); addPlayerInventory(8, 103); } @Override public void addCraftingToCrafters(ICrafting crafting) { super.addCraftingToCrafters(crafting); crafting.sendProgressBarUpdate(this, 0, inventory.fill ? 1 : 0); crafting.sendProgressBarUpdate(this, 1, inventory.tank.getFluidAmount() > 0 ? inventory.tank.getFluid().getFluidID() : -1); crafting.sendProgressBarUpdate(this, 2, inventory.tank.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 (fill != inventory.fill) crafting.sendProgressBarUpdate(this, 0, inventory.fill ? 1 : 0); if (fluidID != (inventory.tank.getFluidAmount() > 0 ? inventory.tank.getFluid().getFluidID() : -1)) crafting.sendProgressBarUpdate(this, 1, inventory.tank.getFluidAmount() > 0 ? inventory.tank.getFluid().getFluidID() : -1); if (fluidAmount != inventory.tank.getFluidAmount()) crafting.sendProgressBarUpdate(this, 2, inventory.tank.getFluidAmount()); } } } fill = inventory.fill; fluidID = inventory.tank.getFluidAmount() > 0 ? inventory.tank.getFluid().getFluidID() : -1; fluidAmount = inventory.tank.getFluidAmount(); } @Override @SideOnly(Side.CLIENT) public void updateProgressBar(int id, int value) { super.updateProgressBar(id, value); switch (id) { case 0: inventory.fill = value != 0; redrawOpenGui(); break; case 1: if (value >= 0) inventory.tank.setFluid(new FluidStack(FluidRegistry.getFluid(value), inventory.tank.getFluidAmount())); else inventory.tank.setFluid(null); break; case 2: if (value > 0 && inventory.tank.getFluid() != null) inventory.tank.setFluid(new FluidStack(inventory.tank.getFluid(), value)); else inventory.tank.setFluid(null); break; default: break; } } }