Skip to content

Commit

Permalink
Take fluid color into account for liquid rendering #1150
Browse files Browse the repository at this point in the history
  • Loading branch information
bonii-xx committed Nov 10, 2014
1 parent d789453 commit 28a4dfe
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 23 deletions.
34 changes: 19 additions & 15 deletions src/main/java/tconstruct/client/BlockSkinRenderHelper.java
Expand Up @@ -852,28 +852,32 @@ public static boolean renderLiquidBlock (IIcon stillIcon, IIcon flowingIcon, int
}

public static boolean renderLiquidBlock (IIcon stillIcon, IIcon flowingIcon, int x, int y, int z, RenderBlocks renderer, IBlockAccess world, boolean extraBright)
{
return renderLiquidBlock(stillIcon, flowingIcon, x, y, z, renderer, world, extraBright, 0xffffffff);
}

public static boolean renderLiquidBlock (IIcon stillIcon, IIcon flowingIcon, int x, int y, int z, RenderBlocks renderer, IBlockAccess world, boolean extraBright, int color)
{
Block block = Blocks.stone;
int var5 = block.colorMultiplier(world, x, y, z);
float var6 = (float) (var5 >> 16 & 255) / 255.0F;
float var7 = (float) (var5 >> 8 & 255) / 255.0F;
float var8 = (float) (var5 & 255) / 255.0F;
float red = (float) (color >> 16 & 255) / 255.0F;
float green = (float) (color >> 8 & 255) / 255.0F;
float blue = (float) (color & 255) / 255.0F;

if (EntityRenderer.anaglyphEnable)
{
float var9 = (var6 * 30.0F + var7 * 59.0F + var8 * 11.0F) / 100.0F;
float var10 = (var6 * 30.0F + var7 * 70.0F) / 100.0F;
float var11 = (var6 * 30.0F + var8 * 70.0F) / 100.0F;
var6 = var9;
var7 = var10;
var8 = var11;
float var9 = (red * 30.0F + green * 59.0F + blue * 11.0F) / 100.0F;
float var10 = (red * 30.0F + green * 70.0F) / 100.0F;
float var11 = (red * 30.0F + blue * 70.0F) / 100.0F;
red = var9;
green = var10;
blue = var11;
}

if (extraBright)
{
var6 = Math.max(1.0f, var6 + 0.5f);
var7 = Math.max(1.0f, var7 + 0.5f);
var8 = Math.max(1.0f, var8 + 0.5f);
red = Math.max(1.0f, red + 0.5f);
green = Math.max(1.0f, green + 0.5f);
blue = Math.max(1.0f, blue + 0.5f);
}

// safety
Expand All @@ -887,9 +891,9 @@ public static boolean renderLiquidBlock (IIcon stillIcon, IIcon flowingIcon, int

boolean ret;
if (Minecraft.isAmbientOcclusionEnabled())
ret = renderFakeBlockWithAmbientOcclusion(stillIcon, flowingIcon, x, y, z, var6, var7, var8, renderer, world);
ret = renderFakeBlockWithAmbientOcclusion(stillIcon, flowingIcon, x, y, z, red, green, blue, renderer, world);
else
ret = renderFakeBlockWithColorMultiplier(stillIcon, flowingIcon, x, y, z, var6, var7, var8, renderer, world);
ret = renderFakeBlockWithColorMultiplier(stillIcon, flowingIcon, x, y, z, red, green, blue, renderer, world);

renderer.renderAllFaces = raf;
return ret;
Expand Down
Expand Up @@ -187,9 +187,9 @@ private void renderLiquidPart (IBlockAccess world, int x, int y, int z, Block bl
if (fluid.canBePlacedInWorld() && !useFlowingTexture)
BlockSkinRenderHelper.renderMetadataBlock(fluid.getBlock(), 0, x, y, z, renderer, world);
else if (useFlowingTexture)
BlockSkinRenderHelper.renderLiquidBlock(fluid.getFlowingIcon(), fluid.getFlowingIcon(), x, y, z, renderer, world);
BlockSkinRenderHelper.renderLiquidBlock(fluid.getFlowingIcon(), fluid.getFlowingIcon(), x, y, z, renderer, world, false, fluid.getColor(fluidStack));
else
BlockSkinRenderHelper.renderLiquidBlock(fluid.getStillIcon(), fluid.getFlowingIcon(), x, y, z, renderer, world);
BlockSkinRenderHelper.renderLiquidBlock(fluid.getStillIcon(), fluid.getFlowingIcon(), x, y, z, renderer, world, false, fluid.getColor(fluidStack));
}

private void renderStandardBlock (Block block, int meta, RenderBlocks renderer)
Expand Down
Expand Up @@ -196,7 +196,7 @@ public boolean renderWorldBlock (IBlockAccess world, int x, int y, int z, Block
renderer.setRenderBounds(minX, minHeight, minZ, maxX, minHeight + height, maxZ);

Fluid fluid = logic.liquid.getFluid();
BlockSkinRenderHelper.renderLiquidBlock(fluid.getStillIcon(), fluid.getFlowingIcon(), x, y, z, renderer, world);
BlockSkinRenderHelper.renderLiquidBlock(fluid.getStillIcon(), fluid.getFlowingIcon(), x, y, z, renderer, world, false, fluid.getColor(logic.liquid));
}
}
}
Expand Down Expand Up @@ -275,7 +275,7 @@ else if (uBlock == TinkerSmeltery.castingChannel)
{
Fluid fluid = logic.liquid.getFluid();
renderer.setRenderBounds(xMin, yMin, zMin, xMax, 0.625, zMax);
BlockSkinRenderHelper.renderLiquidBlock(fluid.getStillIcon(), fluid.getFlowingIcon(), x, y, z, renderer, world);
BlockSkinRenderHelper.renderLiquidBlock(fluid.getStillIcon(), fluid.getFlowingIcon(), x, y, z, renderer, world, false, fluid.getColor(logic.liquid));

// float xMin = 0.375F, zMin = 0.375F, xMax = 0.625F,
// zMax = 0.625F;
Expand All @@ -299,7 +299,7 @@ else if (uBlock == TinkerSmeltery.castingChannel)
break;
}
renderer.setRenderBounds(xMin, 0.5F, zMin, xMax, 0.625F, zMax);
BlockSkinRenderHelper.renderLiquidBlock(fluid.getStillIcon(), fluid.getFlowingIcon(), x, y, z, renderer, world);
BlockSkinRenderHelper.renderLiquidBlock(fluid.getStillIcon(), fluid.getFlowingIcon(), x, y, z, renderer, world, false, fluid.getColor(logic.liquid));
}
}
}
Expand Down Expand Up @@ -403,7 +403,7 @@ else if (metadata == 2)
renderer.setRenderBounds(minX, minHeight, minZ, maxX, minHeight + height, maxZ);

Fluid fluid = logic.liquid.getFluid();
BlockSkinRenderHelper.renderLiquidBlock(fluid.getStillIcon(), fluid.getFlowingIcon(), x, y, z, renderer, world);
BlockSkinRenderHelper.renderLiquidBlock(fluid.getStillIcon(), fluid.getFlowingIcon(), x, y, z, renderer, world, false, fluid.getColor(logic.liquid));
}
}
}
Expand Down
Expand Up @@ -93,7 +93,7 @@ public boolean renderSmeltery (IBlockAccess world, int x, int y, int z, Block bl
if (fluid.canBePlacedInWorld())
BlockSkinRenderHelper.renderMetadataBlock(fluid.getBlock(), 0, xi, from.y + yBase, zi, renderer, world);
else
BlockSkinRenderHelper.renderLiquidBlock(fluid.getStillIcon(), fluid.getFlowingIcon(), xi, from.y + yBase, zi, renderer, world);
BlockSkinRenderHelper.renderLiquidBlock(fluid.getStillIcon(), fluid.getFlowingIcon(), xi, from.y + yBase, zi, renderer, world, false, fluid.getColor(liquid));
}

if (countSize == room)
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/tconstruct/smeltery/model/TankRender.java
Expand Up @@ -45,7 +45,7 @@ public boolean renderWorldBlock (IBlockAccess world, int x, int y, int z, Block
FluidStack liquid = logic.tank.getFluid();
renderer.setRenderBounds(0.001, 0.001, 0.001, 0.999, logic.getFluidAmountScaled(), 0.999);
Fluid fluid = liquid.getFluid();
BlockSkinRenderHelper.renderLiquidBlock(fluid.getStillIcon(), fluid.getStillIcon(), x, y, z, renderer, world, true);
BlockSkinRenderHelper.renderLiquidBlock(fluid.getStillIcon(), fluid.getStillIcon(), x, y, z, renderer, world, true, fluid.getColor(liquid));

renderer.setRenderBounds(0, 0.001, 0.001, 0.999, logic.getFluidAmountScaled(), 0.999);
}
Expand Down

0 comments on commit 28a4dfe

Please sign in to comment.