package net.minecraft.client.renderer; import net.minecraft.block.BlockLiquid; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.src.CustomColorizer; import net.minecraft.src.RenderEnv; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; public class BlockFluidRenderer { private TextureAtlasSprite[] field_178272_a = new TextureAtlasSprite[2]; private TextureAtlasSprite[] field_178271_b = new TextureAtlasSprite[2]; private static final String __OBFID = "CL_00002519"; public BlockFluidRenderer() { this.func_178268_a(); } protected void func_178268_a() { TextureMap var1 = Minecraft.getMinecraft().getTextureMapBlocks(); this.field_178272_a[0] = var1.getAtlasSprite("minecraft:blocks/lava_still"); this.field_178272_a[1] = var1.getAtlasSprite("minecraft:blocks/lava_flow"); this.field_178271_b[0] = var1.getAtlasSprite("minecraft:blocks/water_still"); this.field_178271_b[1] = var1.getAtlasSprite("minecraft:blocks/water_flow"); } public boolean func_178270_a(IBlockAccess p_178270_1_, IBlockState p_178270_2_, BlockPos p_178270_3_, WorldRenderer p_178270_4_) { BlockLiquid var5 = (BlockLiquid)p_178270_2_.getBlock(); var5.setBlockBoundsBasedOnState(p_178270_1_, p_178270_3_); TextureAtlasSprite[] var6 = var5.getMaterial() == Material.lava ? this.field_178272_a : this.field_178271_b; int var7 = CustomColorizer.getFluidColor(var5, p_178270_1_, p_178270_3_); float var8 = (float)(var7 >> 16 & 255) / 255.0F; float var9 = (float)(var7 >> 8 & 255) / 255.0F; float var10 = (float)(var7 & 255) / 255.0F; boolean var11 = var5.shouldSideBeRendered(p_178270_1_, p_178270_3_.offsetUp(), EnumFacing.UP); boolean var12 = var5.shouldSideBeRendered(p_178270_1_, p_178270_3_.offsetDown(), EnumFacing.DOWN); RenderEnv renderEnv = RenderEnv.getInstance(p_178270_1_, p_178270_2_, p_178270_3_); boolean[] var13 = renderEnv.getBorderFlags(); var13[0] = var5.shouldSideBeRendered(p_178270_1_, p_178270_3_.offsetNorth(), EnumFacing.NORTH); var13[1] = var5.shouldSideBeRendered(p_178270_1_, p_178270_3_.offsetSouth(), EnumFacing.SOUTH); var13[2] = var5.shouldSideBeRendered(p_178270_1_, p_178270_3_.offsetWest(), EnumFacing.WEST); var13[3] = var5.shouldSideBeRendered(p_178270_1_, p_178270_3_.offsetEast(), EnumFacing.EAST); if (!var11 && !var12 && !var13[0] && !var13[1] && !var13[2] && !var13[3]) { return false; } else { boolean var14 = false; float var15 = 0.5F; float var16 = 1.0F; float var17 = 0.8F; float var18 = 0.6F; Material var19 = var5.getMaterial(); float var20 = this.func_178269_a(p_178270_1_, p_178270_3_, var19); float var21 = this.func_178269_a(p_178270_1_, p_178270_3_.offsetSouth(), var19); float var22 = this.func_178269_a(p_178270_1_, p_178270_3_.offsetEast().offsetSouth(), var19); float var23 = this.func_178269_a(p_178270_1_, p_178270_3_.offsetEast(), var19); double var24 = (double)p_178270_3_.getX(); double var26 = (double)p_178270_3_.getY(); double var28 = (double)p_178270_3_.getZ(); float var30 = 0.001F; TextureAtlasSprite var31; float var32; float var33; float var34; float var35; float var36; float var37; if (var11) { var14 = true; var31 = var6[0]; var32 = (float)BlockLiquid.func_180689_a(p_178270_1_, p_178270_3_, var19); if (var32 > -999.0F) { var31 = var6[1]; } var20 -= var30; var21 -= var30; var22 -= var30; var23 -= var30; float var52; float var53; float var54; if (var32 < -999.0F) { var33 = var31.getInterpolatedU(0.0D); var37 = var31.getInterpolatedV(0.0D); var34 = var33; var52 = var31.getInterpolatedV(16.0D); var35 = var31.getInterpolatedU(16.0D); var53 = var52; var36 = var35; var54 = var37; } else { float var55 = MathHelper.sin(var32) * 0.25F; float var44 = MathHelper.cos(var32) * 0.25F; float var43 = 8.0F; var33 = var31.getInterpolatedU((double)(8.0F + (-var44 - var55) * 16.0F)); var37 = var31.getInterpolatedV((double)(8.0F + (-var44 + var55) * 16.0F)); var34 = var31.getInterpolatedU((double)(8.0F + (-var44 + var55) * 16.0F)); var52 = var31.getInterpolatedV((double)(8.0F + (var44 + var55) * 16.0F)); var35 = var31.getInterpolatedU((double)(8.0F + (var44 + var55) * 16.0F)); var53 = var31.getInterpolatedV((double)(8.0F + (var44 - var55) * 16.0F)); var36 = var31.getInterpolatedU((double)(8.0F + (var44 - var55) * 16.0F)); var54 = var31.getInterpolatedV((double)(8.0F + (-var44 - var55) * 16.0F)); } p_178270_4_.func_178963_b(var5.getMixedBrightnessForBlock(p_178270_1_, p_178270_3_)); p_178270_4_.func_178986_b(var16 * var8, var16 * var9, var16 * var10); p_178270_4_.addVertexWithUV(var24 + 0.0D, var26 + (double)var20, var28 + 0.0D, (double)var33, (double)var37); p_178270_4_.addVertexWithUV(var24 + 0.0D, var26 + (double)var21, var28 + 1.0D, (double)var34, (double)var52); p_178270_4_.addVertexWithUV(var24 + 1.0D, var26 + (double)var22, var28 + 1.0D, (double)var35, (double)var53); p_178270_4_.addVertexWithUV(var24 + 1.0D, var26 + (double)var23, var28 + 0.0D, (double)var36, (double)var54); if (var5.func_176364_g(p_178270_1_, p_178270_3_.offsetUp())) { p_178270_4_.addVertexWithUV(var24 + 0.0D, var26 + (double)var20, var28 + 0.0D, (double)var33, (double)var37); p_178270_4_.addVertexWithUV(var24 + 1.0D, var26 + (double)var23, var28 + 0.0D, (double)var36, (double)var54); p_178270_4_.addVertexWithUV(var24 + 1.0D, var26 + (double)var22, var28 + 1.0D, (double)var35, (double)var53); p_178270_4_.addVertexWithUV(var24 + 0.0D, var26 + (double)var21, var28 + 1.0D, (double)var34, (double)var52); } } if (var12) { p_178270_4_.func_178963_b(var5.getMixedBrightnessForBlock(p_178270_1_, p_178270_3_.offsetDown())); p_178270_4_.func_178986_b(var15, var15, var15); var32 = var6[0].getMinU(); var33 = var6[0].getMaxU(); var34 = var6[0].getMinV(); var35 = var6[0].getMaxV(); p_178270_4_.addVertexWithUV(var24, var26, var28 + 1.0D, (double)var32, (double)var35); p_178270_4_.addVertexWithUV(var24, var26, var28, (double)var32, (double)var34); p_178270_4_.addVertexWithUV(var24 + 1.0D, var26, var28, (double)var33, (double)var34); p_178270_4_.addVertexWithUV(var24 + 1.0D, var26, var28 + 1.0D, (double)var33, (double)var35); var14 = true; } for (int var571 = 0; var571 < 4; ++var571) { int var581 = 0; int var59 = 0; if (var571 == 0) { --var59; } if (var571 == 1) { ++var59; } if (var571 == 2) { --var581; } if (var571 == 3) { ++var581; } BlockPos var60 = p_178270_3_.add(var581, 0, var59); var31 = var6[1]; if (var13[var571]) { double var56; double var57; double var58; double var61; if (var571 == 0) { var36 = var20; var37 = var23; var56 = var24; var58 = var24 + 1.0D; var57 = var28 + (double)var30; var61 = var28 + (double)var30; } else if (var571 == 1) { var36 = var22; var37 = var21; var56 = var24 + 1.0D; var58 = var24; var57 = var28 + 1.0D - (double)var30; var61 = var28 + 1.0D - (double)var30; } else if (var571 == 2) { var36 = var21; var37 = var20; var56 = var24 + (double)var30; var58 = var24 + (double)var30; var57 = var28 + 1.0D; var61 = var28; } else { var36 = var23; var37 = var22; var56 = var24 + 1.0D - (double)var30; var58 = var24 + 1.0D - (double)var30; var57 = var28; var61 = var28 + 1.0D; } var14 = true; float var46 = var31.getInterpolatedU(0.0D); float var47 = var31.getInterpolatedU(8.0D); float var48 = var31.getInterpolatedV((double)((1.0F - var36) * 16.0F * 0.5F)); float var49 = var31.getInterpolatedV((double)((1.0F - var37) * 16.0F * 0.5F)); float var50 = var31.getInterpolatedV(8.0D); p_178270_4_.func_178963_b(var5.getMixedBrightnessForBlock(p_178270_1_, var60)); float var51 = 1.0F; var51 *= var571 < 2 ? var17 : var18; p_178270_4_.func_178986_b(var16 * var51 * var8, var16 * var51 * var9, var16 * var51 * var10); p_178270_4_.addVertexWithUV(var56, var26 + (double)var36, var57, (double)var46, (double)var48); p_178270_4_.addVertexWithUV(var58, var26 + (double)var37, var61, (double)var47, (double)var49); p_178270_4_.addVertexWithUV(var58, var26 + 0.0D, var61, (double)var47, (double)var50); p_178270_4_.addVertexWithUV(var56, var26 + 0.0D, var57, (double)var46, (double)var50); p_178270_4_.addVertexWithUV(var56, var26 + 0.0D, var57, (double)var46, (double)var50); p_178270_4_.addVertexWithUV(var58, var26 + 0.0D, var61, (double)var47, (double)var50); p_178270_4_.addVertexWithUV(var58, var26 + (double)var37, var61, (double)var47, (double)var49); p_178270_4_.addVertexWithUV(var56, var26 + (double)var36, var57, (double)var46, (double)var48); } } return var14; } } private float func_178269_a(IBlockAccess p_178269_1_, BlockPos p_178269_2_, Material p_178269_3_) { int var4 = 0; float var5 = 0.0F; for (int var6 = 0; var6 < 4; ++var6) { BlockPos var7 = p_178269_2_.add(-(var6 & 1), 0, -(var6 >> 1 & 1)); if (p_178269_1_.getBlockState(var7.offsetUp()).getBlock().getMaterial() == p_178269_3_) { return 1.0F; } IBlockState var8 = p_178269_1_.getBlockState(var7); Material var9 = var8.getBlock().getMaterial(); if (var9 == p_178269_3_) { int var10 = ((Integer)var8.getValue(BlockLiquid.LEVEL)).intValue(); if (var10 >= 8 || var10 == 0) { var5 += BlockLiquid.getLiquidHeightPercent(var10) * 10.0F; var4 += 10; } var5 += BlockLiquid.getLiquidHeightPercent(var10); ++var4; } else if (!var9.isSolid()) { ++var5; ++var4; } } return 1.0F - var5 / (float)var4; } }