Example usage for net.minecraftforge.fluids FluidStack getFluid

List of usage examples for net.minecraftforge.fluids FluidStack getFluid

Introduction

In this page you can find the example usage for net.minecraftforge.fluids FluidStack getFluid.

Prototype

public final Fluid getFluid() 

Source Link

Usage

From source file:advancedbrewing.gui.GuiMachine.java

License:Minecraft Mod Public

protected void displayFluidGauge(int j, int k, int line, int col, int squaled, FluidStack fluidStack) {
    if (fluidStack == null) {
        return;//from ww  w . j av  a2s.  co m
    }

    Fluid fluid = fluidStack.getFluid();

    Icon liquidIcon = null;
    if (fluid != null && fluid.getStillIcon() != null) {
        liquidIcon = fluid.getStillIcon();
    }

    this.mc.renderEngine.bindTexture(GuiMachine.BLOCK_TEXTURE);

    PotionDefinition potionDefinition = Utils.getPotionDefinitionByFluid(fluid);

    if (potionDefinition != null && !potionDefinition.getName().equals("water")) {
        int color = potionDefinition.getColor();
        float r = (color >> 16 & 255) / 255.0F;
        float g = (color >> 8 & 255) / 255.0F;
        float b = (color & 255) / 255.0F;
        GL11.glColor4f(r, g, b, 1.0F);
    }

    if (liquidIcon != null) {
        int start = 0;
        while (true) {
            int x;

            if (squaled > 16) {
                x = 16;
                squaled -= 16;
            } else {
                x = squaled;
                squaled = 0;
            }

            this.drawTexturedModelRectFromIcon(j + col, k + line + 58 - x - start, liquidIcon, 16,
                    16 - (16 - x));
            start = start + 16;

            if (x == 0 || squaled == 0) {
                break;
            }
        }
    }

    if (potionDefinition != null) {
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    }

    this.mc.renderEngine.bindTexture(GuiMachine.TEXTURE);
    this.drawTexturedModalRect(j + col, k + line, 176, 0, 16, 60);
}

From source file:appeng.parts.p2p.PartP2PFluids.java

License:Open Source License

@Override
public int fill(FluidStack resource, boolean doFill) {
    final Deque<PartP2PFluids> stack = this.getDepth();

    for (final PartP2PFluids t : stack) {
        if (t == this) {
            return 0;
        }/*from  ww w  .j  a  v  a  2s.  c om*/
    }

    stack.push(this);

    final List<PartP2PFluids> list = this.getOutputs(resource.getFluid());
    int requestTotal = 0;

    Iterator<PartP2PFluids> i = list.iterator();

    while (i.hasNext()) {
        final PartP2PFluids l = i.next();
        final IFluidHandler tank = l.getTarget();
        if (tank != null) {
            l.tmpUsed = tank.fill(resource.copy(), false);
        } else {
            l.tmpUsed = 0;
        }

        if (l.tmpUsed <= 0) {
            i.remove();
        } else {
            requestTotal += l.tmpUsed;
        }
    }

    if (requestTotal <= 0) {
        if (stack.pop() != this) {
            throw new IllegalStateException("Invalid Recursion detected.");
        }

        return 0;
    }

    if (!doFill) {
        if (stack.pop() != this) {
            throw new IllegalStateException("Invalid Recursion detected.");
        }

        return Math.min(resource.amount, requestTotal);
    }

    int available = resource.amount;

    i = list.iterator();
    int used = 0;

    while (i.hasNext()) {
        final PartP2PFluids l = i.next();

        final FluidStack insert = resource.copy();
        insert.amount = (int) Math.ceil(insert.amount * ((double) l.tmpUsed / (double) requestTotal));
        if (insert.amount > available) {
            insert.amount = available;
        }

        final IFluidHandler tank = l.getTarget();
        if (tank != null) {
            l.tmpUsed = tank.fill(insert.copy(), true);
        } else {
            l.tmpUsed = 0;
        }

        available -= insert.amount;
        used += insert.amount;
    }

    if (stack.pop() != this) {
        throw new IllegalStateException("Invalid Recursion detected.");
    }

    return used;
}

From source file:appeng.parts.p2p.PartP2PLiquids.java

License:Open Source License

@Override
public int fill(ForgeDirection from, FluidStack resource, boolean doFill) {
    Stack<PartP2PLiquids> stack = this.getDepth();

    for (PartP2PLiquids t : stack) {
        if (t == this) {
            return 0;
        }/*from   w  w  w  .j ava 2s.  c  o  m*/
    }

    stack.push(this);

    List<PartP2PLiquids> list = this.getOutputs(resource.getFluid());
    int requestTotal = 0;

    Iterator<PartP2PLiquids> i = list.iterator();
    while (i.hasNext()) {
        PartP2PLiquids l = i.next();
        IFluidHandler tank = l.getTarget();
        if (tank != null) {
            l.tmpUsed = tank.fill(l.side.getOpposite(), resource.copy(), false);
        } else {
            l.tmpUsed = 0;
        }

        if (l.tmpUsed <= 0) {
            i.remove();
        } else {
            requestTotal += l.tmpUsed;
        }
    }

    if (requestTotal <= 0) {
        if (stack.pop() != this) {
            throw new IllegalStateException("Invalid Recursion detected.");
        }

        return 0;
    }

    if (!doFill) {
        if (stack.pop() != this) {
            throw new IllegalStateException("Invalid Recursion detected.");
        }

        return Math.min(resource.amount, requestTotal);
    }

    int available = resource.amount;
    int used = 0;

    i = list.iterator();
    while (i.hasNext()) {
        PartP2PLiquids l = i.next();

        FluidStack insert = resource.copy();
        insert.amount = (int) Math.ceil(insert.amount * ((double) l.tmpUsed / (double) requestTotal));
        if (insert.amount > available) {
            insert.amount = available;
        }

        IFluidHandler tank = l.getTarget();
        if (tank != null) {
            l.tmpUsed = tank.fill(l.side.getOpposite(), insert.copy(), true);
        } else {
            l.tmpUsed = 0;
        }

        available -= insert.amount;
        used += insert.amount;
    }

    if (stack.pop() != this) {
        throw new IllegalStateException("Invalid Recursion detected.");
    }

    return used;
}

From source file:appeng.util.item.AEFluidStack.java

License:Open Source License

private AEFluidStack(@Nonnull FluidStack is) {
    this.fluid = is.getFluid();

    if (this.fluid == null) {
        throw new IllegalArgumentException("Fluid is null.");
    }//from w  ww.  j  a v a  2s  .  com

    this.stackSize = is.amount;
    this.setCraftable(false);
    this.setCountRequestable(0);

    this.myHash = this.fluid.hashCode()
            ^ (this.tagCompound == null ? 0 : System.identityHashCode(this.tagCompound));
}

From source file:blusunrize.immersiveengineering.api.tool.BelljarHandler.java

public static void init() {
    soilTextureMap.put(new ComparableItemStack(new ItemStack(Blocks.DIRT), false, false),
            new ResourceLocation("minecraft:blocks/farmland_wet"));
    registerHandler(cropHandler);//ww  w . j a  v  a  2  s.c  o  m
    registerHandler(stemHandler);
    registerHandler(stackingHandler);

    cropHandler.register(new ItemStack(Items.WHEAT_SEEDS),
            new ItemStack[] { new ItemStack(Items.WHEAT, 2), new ItemStack(Items.WHEAT_SEEDS, 1) },
            new ItemStack(Blocks.DIRT), Blocks.WHEAT.getDefaultState());
    cropHandler.register(new ItemStack(Items.POTATO), new ItemStack[] { new ItemStack(Items.POTATO, 2) },
            new ItemStack(Blocks.DIRT), Blocks.POTATOES.getDefaultState());
    cropHandler.register(new ItemStack(Items.CARROT), new ItemStack[] { new ItemStack(Items.CARROT, 2) },
            new ItemStack(Blocks.DIRT), Blocks.CARROTS.getDefaultState());
    cropHandler.register(new ItemStack(Items.BEETROOT_SEEDS),
            new ItemStack[] { new ItemStack(Items.BEETROOT, 2), new ItemStack(Items.BEETROOT_SEEDS, 1) },
            new ItemStack(Blocks.DIRT), Blocks.BEETROOTS.getDefaultState());
    cropHandler.register(new ItemStack(Items.NETHER_WART),
            new ItemStack[] { new ItemStack(Items.NETHER_WART, 2) }, new ItemStack(Blocks.SOUL_SAND),
            Blocks.NETHER_WART.getDefaultState());

    stemHandler.register(new ItemStack(Items.PUMPKIN_SEEDS), new ItemStack[] { new ItemStack(Blocks.PUMPKIN) },
            new ItemStack(Blocks.DIRT), Blocks.PUMPKIN_STEM.getDefaultState());
    stemHandler.register(new ItemStack(Items.MELON_SEEDS),
            new ItemStack[] { new ItemStack(Blocks.MELON_BLOCK) }, new ItemStack(Blocks.DIRT),
            Blocks.MELON_STEM.getDefaultState());

    stackingHandler.register(new ItemStack(Items.REEDS), new ItemStack[] { new ItemStack(Items.REEDS, 2) },
            "sand", Blocks.REEDS.getDefaultState(), Blocks.REEDS.getDefaultState());
    stackingHandler.register(new ItemStack(Blocks.CACTUS), new ItemStack[] { new ItemStack(Blocks.CACTUS, 2) },
            "sand", Blocks.CACTUS.getDefaultState(), Blocks.CACTUS.getDefaultState());
    stackingHandler.register(new ItemStack(Blocks.CHORUS_FLOWER),
            new ItemStack[] { new ItemStack(Items.CHORUS_FRUIT, 1) }, new ItemStack(Blocks.END_STONE),
            Blocks.CHORUS_PLANT.getDefaultState().withProperty(BlockChorusPlant.DOWN, true)
                    .withProperty(BlockChorusPlant.UP, true),
            Blocks.CHORUS_PLANT.getDefaultState().withProperty(BlockChorusPlant.DOWN, true)
                    .withProperty(BlockChorusPlant.UP, true),
            Blocks.CHORUS_FLOWER.getDefaultState());

    IngredientStack shroomSoil = new IngredientStack(
            ImmutableList.of(new ItemStack(Blocks.MYCELIUM), new ItemStack(Blocks.DIRT, 1, 2)));
    cropHandler.register(new ItemStack(Blocks.RED_MUSHROOM),
            new ItemStack[] { new ItemStack(Blocks.RED_MUSHROOM, 2) }, shroomSoil,
            Blocks.RED_MUSHROOM.getDefaultState());
    cropHandler.register(new ItemStack(Blocks.BROWN_MUSHROOM),
            new ItemStack[] { new ItemStack(Blocks.BROWN_MUSHROOM, 2) }, shroomSoil,
            Blocks.BROWN_MUSHROOM.getDefaultState());

    registerFluidFertilizer(new FluidFertilizerHandler() {
        @Override
        public boolean isValid(@Nullable FluidStack fertilizer) {
            return fertilizer != null && fertilizer.getFluid() == FluidRegistry.WATER;
        }

        @Override
        public float getGrowthMultiplier(FluidStack fertilizer, ItemStack seed, ItemStack soil,
                TileEntity tile) {
            return fluidFertilizerModifier;
        }
    });
    registerItemFertilizer(new ItemFertilizerHandler() {
        final ItemStack bonemeal = new ItemStack(Items.DYE, 1, 15);

        @Override
        public boolean isValid(ItemStack fertilizer) {
            return !fertilizer.isEmpty() && OreDictionary.itemMatches(bonemeal, fertilizer, true);
        }

        @Override
        public float getGrowthMultiplier(ItemStack fertilizer, ItemStack seed, ItemStack soil,
                TileEntity tile) {
            return solidFertilizerModifier * 1.25f;
        }
    });
}

From source file:blusunrize.immersiveengineering.client.fx.ParticleFluidSplash.java

public void setFluidTexture(FluidStack fluid) {
    this.setParticleTexture(ClientUtils.getSprite(fluid.getFluid().getStill(fluid)));
    int argb = fluid.getFluid().getColor(fluid);
    this.particleAlpha = ((argb >> 24) & 255) / 255f;
    this.particleRed = ((argb >> 16) & 255) / 255f;
    this.particleRed = ((argb >> 8 & 255)) / 255f;
    this.particleRed = (argb & 255) / 255f;
}

From source file:blusunrize.immersiveengineering.client.gui.GuiMixer.java

@Override
public void drawScreen(int mx, int my, float partial) {
    super.drawScreen(mx, my, partial);
    ArrayList<String> tooltip = new ArrayList<String>();

    if (mx >= guiLeft + 76 && mx <= guiLeft + 134 && my >= guiTop + 11 && my <= guiTop + 58) {
        float capacity = tile.tank.getCapacity();
        if (tile.tank.getFluidTypes() == 0)
            tooltip.add(I18n.format("gui.immersiveengineering.empty"));
        else {//from  w  w  w. ja  v  a 2s  .  c  o  m

            int fluidUpToNow = 0;
            int lastY = 0;
            int myRelative = guiTop + 58 - my;
            for (int i = tile.tank.getFluidTypes() - 1; i >= 0; i--) {
                FluidStack fs = tile.tank.fluids.get(i);
                if (fs != null && fs.getFluid() != null) {
                    fluidUpToNow += fs.amount;
                    int newY = (int) (47 * (fluidUpToNow / capacity));
                    if (myRelative >= lastY && myRelative < newY) {
                        ClientUtils.addFluidTooltip(fs, tooltip, (int) capacity);
                        break;
                    }
                    lastY = newY;
                }
            }
        }
    }
    if (mx >= guiLeft + 158 && mx < guiLeft + 165 && my > guiTop + 22 && my < guiTop + 68)
        tooltip.add(tile.getEnergyStored(null) + "/" + tile.getMaxEnergyStored(null) + " IF");
    if (mx >= guiLeft + 106 && mx <= guiLeft + 136 && my >= guiTop + 61 && my <= guiTop + 77)
        tooltip.add(I18n.format(Lib.GUI_CONFIG + "mixer.output" + (tile.outputAll ? "All" : "Single")));
    if (!tooltip.isEmpty()) {
        ClientUtils.drawHoveringText(tooltip, mx, my, fontRenderer, guiLeft + xSize, -1);
        RenderHelper.enableGUIStandardItemLighting();
    }
}

From source file:blusunrize.immersiveengineering.client.gui.GuiMixer.java

@Override
protected void drawGuiContainerBackgroundLayer(float f, int mx, int my) {
    GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
    ClientUtils.bindTexture("immersiveengineering:textures/gui/mixer.png");
    this.drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);

    for (MultiblockProcess process : tile.processQueue)
        if (process instanceof MultiblockProcessInMachine) {
            float mod = 1 - (process.processTick / (float) process.maxTicks);
            for (int slot : ((MultiblockProcessInMachine) process).getInputSlots()) {
                int h = (int) Math.max(1, mod * 16);
                this.drawTexturedModalRect(guiLeft + 24 + slot % 2 * 21, guiTop + 7 + slot / 2 * 18 + (16 - h),
                        176, 16 - h, 2, h);
            }/*  w  ww.  ja  va 2s  .c  o  m*/
        }

    int stored = (int) (46 * (tile.getEnergyStored(null) / (float) tile.getMaxEnergyStored(null)));
    ClientUtils.drawGradientRect(guiLeft + 158, guiTop + 22 + (46 - stored), guiLeft + 165, guiTop + 68,
            0xffb51500, 0xff600b00);

    float capacity = tile.tank.getCapacity();
    int fluidUpToNow = 0;
    int lastY = 0;
    for (int i = tile.tank.getFluidTypes() - 1; i >= 0; i--) {
        FluidStack fs = tile.tank.fluids.get(i);
        if (fs != null && fs.getFluid() != null) {
            fluidUpToNow += fs.amount;
            int newY = (int) (47 * (fluidUpToNow / capacity));
            ClientUtils.drawRepeatedFluidSprite(fs, guiLeft + 76, guiTop + 58 - newY, 58, newY - lastY);
            lastY = newY;
        }
    }
}

From source file:blusunrize.immersiveengineering.client.render.EntityRenderChemthrowerShot.java

@Override
public void doRender(Entity entity, double x, double y, double z, float f0, float f1) {
    FluidStack f = ((EntityChemthrowerShot) entity).getFluid();
    if (f == null) {
        f = ((EntityChemthrowerShot) entity).getFluidSynced();
        if (f == null)
            return;
    }/* w w w.  j a v a  2s  .  c o  m*/

    GlStateManager.pushMatrix();
    GlStateManager.translate(x, y, z);
    GlStateManager.enableRescaleNormal();
    GlStateManager.enableBlend();
    GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA,
            GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
    RenderHelper.disableStandardItemLighting();

    Tessellator tessellator = ClientUtils.tes();

    GlStateManager.rotate(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
    GlStateManager.rotate(-this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F);

    TextureAtlasSprite sprite = ClientUtils.mc().getTextureMapBlocks()
            .getAtlasSprite(f.getFluid().getStill(f).toString());
    if (sprite != null) {
        int colour = f.getFluid().getColor(f);
        float a = (colour >> 24 & 255) / 255f;
        float r = (colour >> 16 & 255) / 255f;
        float g = (colour >> 8 & 255) / 255f;
        float b = (colour & 255) / 255f;
        ClientUtils.bindAtlas();
        int lightAll = entity.getBrightnessForRender();
        int lightA = (lightAll >> 0x10) & 0xffff;
        int lightB = lightAll & 0xffff;
        GlStateManager.scale(.25f, .25f, .25f);
        BufferBuilder worldrenderer = ClientUtils.tes().getBuffer();
        worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_LMAP_COLOR);
        worldrenderer.pos(-.25, -.25, 0).tex(sprite.getInterpolatedU(4), sprite.getInterpolatedV(4))
                .lightmap(lightA, lightB).color(r, g, b, a).endVertex();
        worldrenderer.pos(.25, -.25, 0).tex(sprite.getInterpolatedU(0), sprite.getInterpolatedV(4))
                .lightmap(lightA, lightB).color(r, g, b, a).endVertex();
        worldrenderer.pos(.25, .25, 0).tex(sprite.getInterpolatedU(0), sprite.getInterpolatedV(0))
                .lightmap(lightA, lightB).color(r, g, b, a).endVertex();
        worldrenderer.pos(-.25, .25, 0).tex(sprite.getInterpolatedU(4), sprite.getInterpolatedV(0))
                .lightmap(lightA, lightB).color(r, g, b, a).endVertex();
        tessellator.draw();
    }
    RenderHelper.enableStandardItemLighting();
    GlStateManager.disableBlend();
    GlStateManager.disableRescaleNormal();
    GlStateManager.popMatrix();
}

From source file:blusunrize.immersiveengineering.client.render.TileRenderMixer.java

@Override
public void render(TileEntityMixer te, double x, double y, double z, float partialTicks, int destroyStage,
        float alpha) {
    if (!te.formed || te.isDummy() || !te.getWorld().isBlockLoaded(te.getPos(), false))
        return;/*www . j  a  va 2  s.  c  o  m*/

    final BlockRendererDispatcher blockRenderer = Minecraft.getMinecraft().getBlockRendererDispatcher();
    BlockPos blockPos = te.getPos();
    IBlockState state = getWorld().getBlockState(blockPos);
    if (state.getBlock() != IEContent.blockMetalMultiblock)
        return;
    state = state.getBlock().getActualState(state, getWorld(), blockPos);
    state = state.withProperty(IEProperties.DYNAMICRENDER, true);
    IBakedModel model = blockRenderer.getBlockModelShapes().getModelForState(state);

    Tessellator tessellator = Tessellator.getInstance();
    BufferBuilder worldRenderer = tessellator.getBuffer();

    ClientUtils.bindAtlas();
    GlStateManager.pushMatrix();
    GlStateManager.translate(x + .5, y + .5, z + .5);

    if (te.mirrored)
        GlStateManager.scale(te.facing.getXOffset() == 0 ? -1 : 1, 1, te.facing.getZOffset() == 0 ? -1 : 1);

    GlStateManager.pushMatrix();
    GlStateManager.translate(te.facing == EnumFacing.SOUTH || te.facing == EnumFacing.WEST ? -.5 : .5, 0,
            te.facing == EnumFacing.SOUTH || te.facing == EnumFacing.EAST ? .5 : -.5);
    float agitator = te.animation_agitator - (!te.shouldRenderAsActive() ? 0 : (1 - partialTicks) * 9f);
    GlStateManager.rotate(agitator, 0, 1, 0);

    RenderHelper.disableStandardItemLighting();
    GlStateManager.blendFunc(770, 771);
    GlStateManager.enableBlend();
    GlStateManager.disableCull();
    if (Minecraft.isAmbientOcclusionEnabled())
        GlStateManager.shadeModel(7425);
    else
        GlStateManager.shadeModel(7424);
    worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
    worldRenderer.setTranslation(-.5 - blockPos.getX(), -.5 - blockPos.getY(), -.5 - blockPos.getZ());
    worldRenderer.color(255, 255, 255, 255);
    blockRenderer.getBlockModelRenderer().renderModel(te.getWorld(), model, state, blockPos, worldRenderer,
            true);
    worldRenderer.setTranslation(0.0D, 0.0D, 0.0D);
    tessellator.draw();
    RenderHelper.enableStandardItemLighting();

    GlStateManager.popMatrix();

    switch (te.facing) {
    case NORTH:
        break;
    case SOUTH:
        GlStateManager.rotate(180, 0, 1, 0);
        break;
    case WEST:
        GlStateManager.rotate(90, 0, 1, 0);
        break;
    case EAST:
        GlStateManager.rotate(-90, 0, 1, 0);
        break;
    }

    GlStateManager.scale(.0625f, 1, .0625f);
    GlStateManager.rotate(90, 1, 0, 0);
    GlStateManager.translate(8, -8, .625f);

    RenderHelper.disableStandardItemLighting();

    for (int i = te.tank.getFluidTypes() - 1; i >= 0; i--) {
        FluidStack fs = te.tank.fluids.get(i);
        if (fs != null && fs.getFluid() != null) {
            int col = fs.getFluid().getColor(fs);
            GlStateManager.color((col >> 16 & 255) / 255.0f, (col >> 8 & 255) / 255.0f, (col & 255) / 255.0f,
                    1);

            float yy = fs.amount / (float) te.tank.getCapacity() * 1.125f;
            GlStateManager.translate(0, 0, -yy);
            float w = (i < te.tank.getFluidTypes() - 1 || yy >= .125) ? 26 : 16 + yy / .0125f;
            ClientUtils.drawRepeatedFluidSprite(fs, -w / 2, -w / 2, w, w);
        }
    }

    GlStateManager.popMatrix();
}