List of usage examples for net.minecraftforge.fluids IFluidTank getFluidAmount
int getFluidAmount();
From source file:com.builtbroken.atomic.content.machines.processing.TileEntityProcessingMachine.java
/** * Pulls fluids from container and insert into tank */// ww w . j av a 2s . co m protected void fillTank(final int slot, final IFluidTank inputTank) { final ItemStack itemStack = getStackInSlot(slot); if (itemStack != null) { if (itemStack.getItem() instanceof IFluidContainerItem) { IFluidContainerItem fluidContainerItem = (IFluidContainerItem) itemStack.getItem(); FluidStack fluidStack = fluidContainerItem.getFluid(itemStack); if (fluidStack != null && getRecipeList().isComponent(this, fluidStack.getFluid())) { fluidStack = fluidContainerItem.drain(itemStack, inputTank.getCapacity() - inputTank.getFluidAmount(), false); int amount = inputTank.fill(fluidStack, true); fluidContainerItem.drain(itemStack, amount, true); setInventorySlotContents(slot, itemStack); } } else if (FluidContainerRegistry.isFilledContainer(itemStack)) { FluidStack stack = FluidContainerRegistry.getFluidForFilledItem(itemStack); if (stack != null && getRecipeList().isComponent(this, stack.getFluid())) { inputTank.fill(stack, true); decrStackSize(slot, 1); ItemStack container = itemStack.getItem().getContainerItem(itemStack); if (container != null) { if (getStackInSlot(slot) == null) { setInventorySlotContents(slot, container); } else { //TODO add fluid container output slot EntityItem item = new EntityItem(worldObj); item.setPosition(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); item.setEntityItemStack(container); worldObj.spawnEntityInWorld(item); } } } } } }
From source file:com.builtbroken.atomic.content.machines.processing.TileEntityProcessingMachine.java
/** * Outputs fluids to container in slot// w ww. j a va2 s . c om * * @param slot - slot with container * @param outputTank - tank to drain */ protected void outputFluids(final int slot, final IFluidTank outputTank) { final ItemStack itemStack = getStackInSlot(slot); if (itemStack != null && outputTank.getFluid() != null) { if (itemStack.getItem() instanceof IFluidContainerItem) { //Copy stack (fix for containers that can stack when empty) final ItemStack fluidContainer = itemStack.copy(); fluidContainer.stackSize = 1; IFluidContainerItem fluidContainerItem = (IFluidContainerItem) fluidContainer.getItem(); FluidStack fluidStack = fluidContainerItem.getFluid(fluidContainer); if (fluidStack == null || fluidStack.getFluid() == outputTank.getFluid().getFluid()) { int filled = fluidContainerItem.fill(fluidContainer, outputTank.getFluid(), true); outputTank.drain(filled, true); if (itemStack.stackSize == 1) { setInventorySlotContents(slot, fluidContainer); } else { decrStackSize(slot, 1); //TODO add fluid container output slot EntityItem item = new EntityItem(worldObj); item.setPosition(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); item.setEntityItemStack(fluidContainer); worldObj.spawnEntityInWorld(item); } } } else if (FluidContainerRegistry.isEmptyContainer(itemStack)) { ItemStack filledContainer = FluidContainerRegistry.fillFluidContainer(outputTank.getFluid(), itemStack); if (filledContainer != null) { FluidStack fluidStack = FluidContainerRegistry.getFluidForFilledItem(filledContainer); if (fluidStack.getFluid() == outputTank.getFluid().getFluid() && fluidStack.amount <= outputTank.getFluidAmount()) { outputTank.drain(fluidStack.amount, true); decrStackSize(slot, 1); if (getStackInSlot(slot) == null) { setInventorySlotContents(slot, filledContainer); } else { //TODO add fluid container output slot EntityItem item = new EntityItem(worldObj); item.setPosition(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); item.setEntityItemStack(filledContainer); worldObj.spawnEntityInWorld(item); } } } } } }