List of usage examples for net.minecraftforge.fluids FluidStack getFluid
public final Fluid getFluid()
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(); }