Example usage for net.minecraftforge.fluids IFluidTank getFluidAmount

List of usage examples for net.minecraftforge.fluids IFluidTank getFluidAmount

Introduction

In this page you can find the example usage for net.minecraftforge.fluids IFluidTank getFluidAmount.

Prototype

int getFluidAmount();

Source Link

Usage

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);
                    }
                }
            }
        }
    }
}