Example usage for net.minecraftforge.fluids IFluidTank getCapacity

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

Introduction

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

Prototype

int getCapacity();

Source Link

Usage

From source file:com.builtbroken.atomic.content.machines.processing.TileEntityProcessingMachine.java

/**
 * Pulls fluids from container and insert into tank
 *//*from   w w  w  . j  a v a 2 s .  c  om*/
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

/**
 * Checks if there is enough fluid to output
 *
 * @param tank   - tank to drain//from ww w . j  a  v  a 2 s.  c om
 * @param fluid  - fluid to drain
 * @param amount - amount to drain
 * @return true if enough fluid
 */
public boolean canOutputFluid(IFluidTank tank, Fluid fluid, int amount) {
    if (fluid != null && amount > 0) {
        if (tank.getFluid() != null) {
            //Space left in tank
            final int room = tank.getCapacity() - tank.getFluid().amount;
            return room >= amount && fluid == tank.getFluid().getFluid();
        } else {
            return tank.getCapacity() >= amount;
        }
    }
    return false;
}

From source file:com.buuz135.industrial.utils.ItemStackUtils.java

License:Open Source License

public static void fillItemFromTank(ItemStackHandler fluidItems, IFluidTank tank) {
    if (tank.getFluid() == null)
        return;// ww  w.  j a v a2 s .co  m
    ItemStack stack = fluidItems.getStackInSlot(0).copy();
    if (!stack.isEmpty()) {
        if (stack.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null)) {
            FluidActionResult result = FluidUtil.tryFillContainer(stack, (IFluidHandler) tank,
                    tank.getCapacity(), null, false);
            if (result.isSuccess() && (fluidItems.getStackInSlot(1).isEmpty()
                    || (ItemHandlerHelper.canItemStacksStack(result.getResult(), fluidItems.getStackInSlot(1))
                            && result.getResult().getCount() + fluidItems.getStackInSlot(1).getCount() <= result
                                    .getResult().getMaxStackSize()))) {
                result = FluidUtil.tryFillContainer(stack, (IFluidHandler) tank, tank.getCapacity(), null,
                        true);
                if (fluidItems.getStackInSlot(1).isEmpty()) {
                    fluidItems.setStackInSlot(1, result.getResult());
                } else {
                    fluidItems.getStackInSlot(1).grow(1);
                }
                fluidItems.getStackInSlot(0).shrink(1);
            }
        }
    }
}

From source file:com.buuz135.industrial.utils.ItemStackUtils.java

License:Open Source License

public static void fillTankFromItem(ItemStackHandler fluidItems, IFluidTank tank) {
    ItemStack stack = fluidItems.getStackInSlot(0).copy();
    if (!stack.isEmpty()) {
        if (stack.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null)) {
            IFluidHandlerItem cap = stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY,
                    null);//from  w w  w. java  2 s .  co m
            FluidStack fluidStack = cap.drain(1000, false);
            if (fluidStack != null && tank.fill(fluidStack, false) == 0)
                return;
            FluidActionResult result = FluidUtil.tryEmptyContainer(stack, (IFluidHandler) tank, 1000, null,
                    false);
            if (result.isSuccess() && (fluidItems.getStackInSlot(1).isEmpty()
                    || (ItemHandlerHelper.canItemStacksStack(result.getResult(), fluidItems.getStackInSlot(1))
                            && result.getResult().getCount() + fluidItems.getStackInSlot(1).getCount() <= result
                                    .getResult().getMaxStackSize()))) {
                result = FluidUtil.tryEmptyContainer(stack, (IFluidHandler) tank, tank.getCapacity(), null,
                        true);
                if (fluidItems.getStackInSlot(1).isEmpty()) {
                    fluidItems.setStackInSlot(1, result.getResult());
                } else {
                    fluidItems.getStackInSlot(1).grow(1);
                }
                fluidItems.getStackInSlot(0).shrink(1);
            }
        }
    }
}

From source file:mods.railcraft.client.render.carts.CartContentRendererTank.java

License:Open Source License

@Override
public void render(RenderCart renderer, EntityMinecart cart, float light, float time) {
    super.render(renderer, cart, light, time);
    EntityCartTank cartTank = (EntityCartTank) cart;
    GL11.glPushMatrix();//from  ww  w .  j  a va2s  . c om
    GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
    GL11.glTranslatef(0.0F, 0.3125F, 0.0F);
    GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F);
    GL11.glDisable(2896 /*GL_LIGHTING*/);

    int x = (int) (Math.floor(cart.posX));
    int y = (int) (Math.floor(cart.posY));
    int z = (int) (Math.floor(cart.posZ));

    IFluidTank tank = cartTank.getTankManager().get(0);
    FluidStack fluidStack = tank.getFluid();
    if (fluidStack != null && fluidStack.amount > 0) {
        Fluid fluid = fluidStack.getFluid();
        int[] displayLists = FluidRenderer.getLiquidDisplayLists(fluidStack);
        if (fluid != null && displayLists != null) {
            GL11.glPushMatrix();

            GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
            GL11.glEnable(GL11.GL_BLEND);

            GL11.glTranslatef(0, 0.0625f, 0);

            float cap = tank.getCapacity();
            float level = (float) Math.min(fluidStack.amount, cap) / cap;

            renderer.bindTex(FluidRenderer.getFluidSheet(fluidStack));
            FluidRenderer.setColorForFluidStack(fluidStack);
            GL11.glCallList(displayLists[(int) (level * (float) (FluidRenderer.DISPLAY_STAGES - 1))]);

            if (cartTank.isFilling()) {
                ResourceLocation texSheet = FluidRenderer.setupFlowingLiquidTexture(fluidStack,
                        fillBlock.texture);
                if (texSheet != null) {
                    renderer.bindTex(texSheet);
                    RenderFakeBlock.renderBlockForEntity(fillBlock, cart.worldObj, x, y, z, false, true);
                }
            }

            GL11.glPopAttrib();
            GL11.glPopMatrix();
        }
    }

    ItemStack bucket = cartTank.getFilterItem();

    if (bucket != null && bucket.getItem() != null) {

        GL11.glPushMatrix();
        GL11.glScalef(FILTER_SCALE_X, FILTER_SCALE_Y, FILTER_SCALE_Z);
        GL11.glTranslatef(0, -0.4f, 0);

        renderer.bindTex(TextureMap.locationItemsTexture);

        int meta = bucket.getItemDamage();
        for (int pass = 0; pass < bucket.getItem().getRenderPasses(meta); ++pass) {
            IIcon texture = bucket.getItem().getIconFromDamageForRenderPass(meta, pass);
            if (texture == null)
                continue;

            int color = bucket.getItem().getColorFromItemStack(bucket, pass);

            float c1 = (float) (color >> 16 & 255) / 255.0F;
            float c2 = (float) (color >> 8 & 255) / 255.0F;
            float c3 = (float) (color & 255) / 255.0F;

            float dim = 0.7f;

            GL11.glColor4f(c1 * light * dim, c2 * light * dim, c3 * light * dim, 1.0F);

            Tessellator tess = Tessellator.instance;
            tess.setBrightness(bucketSign.template.getMixedBrightnessForBlock(cart.worldObj, x, y, z));

            bucketSign.texture[0] = texture;
            RenderFakeBlock.renderBlockForEntity(bucketSign, cart.worldObj, x, y, z, false, true);
        }

        GL11.glPopMatrix();
    }

    GL11.glPopAttrib();
    GL11.glPopMatrix();
}

From source file:mods.railcraft.client.render.RenderFluidLoader.java

License:Open Source License

@Override
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) {
    TileLoaderFluidBase base = (TileLoaderFluidBase) tile;
    GL11.glPushMatrix();/*from  w  w  w .  j  a  va 2  s  . c  o m*/
    GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
    GL11.glDisable(GL11.GL_LIGHTING);
    GL11.glDisable(GL11.GL_BLEND);
    //        GL11.glEnable(GL11.GL_CULL_FACE);

    backDrop.texture[0] = base.getMachineType().getTexture(7);
    bindTexture(TextureMap.locationBlocksTexture);
    RenderFakeBlock.renderBlock(backDrop, base.getWorld(), x, y, z, false, true);

    GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.5F);
    GL11.glScalef(1f, 0.6f, 1f);

    IFluidTank tank = base.getTankManager().get(0);

    FluidStack fluidStack = tank.getFluid();
    if (fluidStack != null && fluidStack.amount > 0) {
        int[] displayLists = FluidRenderer.getLiquidDisplayLists(fluidStack);
        if (displayLists != null) {
            GL11.glPushMatrix();

            if (FluidRenderer.getFluidTexture(fluidStack, false) != null) {

                float cap = tank.getCapacity();
                float level = (float) Math.min(fluidStack.amount, cap) / cap;

                bindTexture(FluidRenderer.getFluidSheet(fluidStack));
                FluidRenderer.setColorForFluidStack(fluidStack);
                GL11.glCallList(displayLists[(int) (level * (float) (FluidRenderer.DISPLAY_STAGES - 1))]);
            }

            GL11.glPopMatrix();
        }
    }

    //        GL11.glScalef(0.994f, 1.05f, 0.994f);
    GL11.glPopAttrib();
    GL11.glPopMatrix();

    if (tile.getClass() == TileFluidLoader.class) {
        TileFluidLoader loader = (TileFluidLoader) tile;

        pipe.minY = RenderTools.PIXEL - loader.getPipeLenght();

        RenderFakeBlock.renderBlock(pipe, loader.getWorld(), x, y, z, false, true);
    }
}

From source file:mods.railcraft.client.render.RenderLiquidLoader.java

License:Open Source License

@Override
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) {
    TileLoaderLiquidBase base = (TileLoaderLiquidBase) tile;
    GL11.glPushMatrix();//from   w ww . j a  v  a 2s.  c  om
    GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
    GL11.glDisable(GL11.GL_LIGHTING);
    GL11.glDisable(GL11.GL_BLEND);
    //        GL11.glEnable(GL11.GL_CULL_FACE);

    backDrop.texture[0] = base.getMachineType().getTexture(7);
    bindTexture(TextureMap.locationBlocksTexture);
    RenderFakeBlock.renderBlock(backDrop, base.getWorld(), x, y, z, false, true);

    GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.5F);
    GL11.glScalef(1f, 0.6f, 1f);

    IFluidTank tank = base.getTankManager().get(0);

    FluidStack fluidStack = tank.getFluid();
    if (fluidStack != null && fluidStack.amount > 0) {
        int[] displayLists = FluidRenderer.getLiquidDisplayLists(fluidStack);
        if (displayLists != null) {
            GL11.glPushMatrix();

            if (FluidRenderer.getFluidTexture(fluidStack, false) != null) {

                float cap = tank.getCapacity();
                float level = (float) Math.min(fluidStack.amount, cap) / cap;

                bindTexture(FluidRenderer.getFluidSheet(fluidStack));
                FluidRenderer.setColorForFluidStack(fluidStack);
                GL11.glCallList(displayLists[(int) (level * (float) (FluidRenderer.DISPLAY_STAGES - 1))]);
            }

            GL11.glPopMatrix();
        }
    }

    //        GL11.glScalef(0.994f, 1.05f, 0.994f);
    GL11.glPopAttrib();
    GL11.glPopMatrix();

    if (tile.getClass() == TileLiquidLoader.class) {
        TileLiquidLoader loader = (TileLiquidLoader) tile;

        pipe.minY = RenderTools.PIXEL - loader.getPipeLenght();

        RenderFakeBlock.renderBlock(pipe, loader.getWorld(), x, y, z, false, true);
    }
}