package coloredlightscore.src.helper;
import net.minecraft.block.Block;
import net.minecraft.block.BlockGrass;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.init.Blocks;
import net.minecraft.util.IIcon;
public class CLRenderBlocksHelper {
public CLRenderBlocksHelper() {
//
}
/**
* Gutted to work with colors
* CptSpaceToaster
* <p/>
* Reset to vanilla and fixed by Glitchfinder
*
* @param par1Block Block Type (Sky or Normal Block)
* @param par2 the X coordinate
* @param par3 the Y coordinate
* @param par4 the Z coordinate
* @param par5 amount of red
* @param par6 amount of green
* @param par7 amount of blue
*/
public static boolean renderStandardBlockWithAmbientOcclusion(RenderBlocks renderBlocks, Block par1Block, int par2, int par3, int par4, float par5, float par6, float par7) {
renderBlocks.enableAO = true;
boolean var8 = false;
float var9;
float var10;
float var11;
float var12;
boolean var13 = true;
int var14 = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3, par4);
Tessellator var15 = Tessellator.instance;
var15.setBrightness(983055);
if (renderBlocks.getBlockIcon(par1Block).getIconName().equals("grass_top")) {
var13 = false;
} else if (renderBlocks.hasOverrideBlockTexture()) {
var13 = false;
}
boolean var17;
boolean var16;
boolean var19;
boolean var18;
float var21;
int var20;
//YYY-1
if (renderBlocks.renderAllFaces || par1Block.shouldSideBeRendered(renderBlocks.blockAccess, par2, par3 - 1, par4, 0)) {
if (renderBlocks.renderMinY <= 0.0D) {
--par3;
}
renderBlocks.aoLightValueScratchXYNN = renderBlocks.blockAccess.getBlock(par2 - 1, par3, par4).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchYZNN = renderBlocks.blockAccess.getBlock(par2, par3, par4 - 1).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchYZNP = renderBlocks.blockAccess.getBlock(par2, par3, par4 + 1).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchXYPN = renderBlocks.blockAccess.getBlock(par2 + 1, par3, par4).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYNN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 - 1, par3, par4);
renderBlocks.aoBrightnessYZNN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3, par4 - 1);
renderBlocks.aoBrightnessYZNP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3, par4 + 1);
renderBlocks.aoBrightnessXYPN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 + 1, par3, par4);
var16 = renderBlocks.blockAccess.getBlock(par2 + 1, par3 - 1, par4).getCanBlockGrass();
var17 = renderBlocks.blockAccess.getBlock(par2 - 1, par3 - 1, par4).getCanBlockGrass();
var18 = renderBlocks.blockAccess.getBlock(par2, par3 - 1, par4 + 1).getCanBlockGrass();
var19 = renderBlocks.blockAccess.getBlock(par2, par3 - 1, par4 - 1).getCanBlockGrass();
if (!var19 && !var17) {
renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.aoLightValueScratchXYNN;
renderBlocks.aoBrightnessXYZNNN = renderBlocks.aoBrightnessXYNN;
} else {
renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.blockAccess.getBlock(par2 - 1, par3, par4 - 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZNNN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 - 1, par3, par4 - 1);
}
if (!var18 && !var17) {
renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.aoLightValueScratchXYNN;
renderBlocks.aoBrightnessXYZNNP = renderBlocks.aoBrightnessXYNN;
} else {
renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.blockAccess.getBlock(par2 - 1, par3, par4 + 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZNNP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 - 1, par3, par4 + 1);
}
if (!var19 && !var16) {
renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.aoLightValueScratchXYPN;
renderBlocks.aoBrightnessXYZPNN = renderBlocks.aoBrightnessXYPN;
} else {
renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.blockAccess.getBlock(par2 + 1, par3, par4 - 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZPNN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 + 1, par3, par4 - 1);
}
if (!var18 && !var16) {
renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.aoLightValueScratchXYPN;
renderBlocks.aoBrightnessXYZPNP = renderBlocks.aoBrightnessXYPN;
} else {
renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.blockAccess.getBlock(par2 + 1, par3, par4 + 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZPNP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 + 1, par3, par4 + 1);
}
if (renderBlocks.renderMinY <= 0.0D) {
++par3;
}
var20 = var14;
if (renderBlocks.renderMinY <= 0.0D || !renderBlocks.blockAccess.getBlock(par2, par3 - 1, par4).isOpaqueCube()) {
var20 = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 - 1, par4);
}
var21 = renderBlocks.blockAccess.getBlock(par2, par3 - 1, par4).getAmbientOcclusionLightValue();
var9 = (renderBlocks.aoLightValueScratchXYZNNP + renderBlocks.aoLightValueScratchXYNN + renderBlocks.aoLightValueScratchYZNP + var21) / 4.0F;
var12 = (renderBlocks.aoLightValueScratchYZNP + var21 + renderBlocks.aoLightValueScratchXYZPNP + renderBlocks.aoLightValueScratchXYPN) / 4.0F;
var11 = (var21 + renderBlocks.aoLightValueScratchYZNN + renderBlocks.aoLightValueScratchXYPN + renderBlocks.aoLightValueScratchXYZPNN) / 4.0F;
var10 = (renderBlocks.aoLightValueScratchXYNN + renderBlocks.aoLightValueScratchXYZNNN + var21 + renderBlocks.aoLightValueScratchYZNN) / 4.0F;
// BEGIN - GlitchLights
// Calculate the basic corner brightnesses
renderBlocks.brightnessTopLeft = ((renderBlocks.aoBrightnessXYZNNP & 15728880) + (renderBlocks.aoBrightnessXYNN & 15728880) + (renderBlocks.aoBrightnessYZNP & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessBottomLeft = ((renderBlocks.aoBrightnessXYZNNN & 15728880) + (renderBlocks.aoBrightnessXYNN & 15728880) + (renderBlocks.aoBrightnessYZNN & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessBottomRight = ((renderBlocks.aoBrightnessXYZPNN & 15728880) + (renderBlocks.aoBrightnessYZNN & 15728880) + (renderBlocks.aoBrightnessXYPN & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessTopRight = ((renderBlocks.aoBrightnessXYZPNP & 15728880) + (renderBlocks.aoBrightnessYZNP & 15728880) + (renderBlocks.aoBrightnessXYPN & 15728880) + (var20 & 15728880)) >> 2;
// Calculate a basic corner color: x+ z+
renderBlocks.colorRedTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZNNP >> 4) & 240) + ((renderBlocks.aoBrightnessXYNN >> 4) & 240) + ((renderBlocks.aoBrightnessYZNP >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZNNP >> 8) & 240) + ((renderBlocks.aoBrightnessXYNN >> 8) & 240) + ((renderBlocks.aoBrightnessYZNP >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZNNP >> 12) & 240) + ((renderBlocks.aoBrightnessXYNN >> 12) & 240) + ((renderBlocks.aoBrightnessYZNP >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x+ z-
renderBlocks.colorRedBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZNNN >> 4) & 240) + ((renderBlocks.aoBrightnessXYNN >> 4) & 240) + ((renderBlocks.aoBrightnessYZNN >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZNNN >> 8) & 240) + ((renderBlocks.aoBrightnessXYNN >> 8) & 240) + ((renderBlocks.aoBrightnessYZNN >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZNNN >> 12) & 240) + ((renderBlocks.aoBrightnessXYNN >> 12) & 240) + ((renderBlocks.aoBrightnessYZNN >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x- z-
renderBlocks.colorRedBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZPNN >> 4) & 240) + ((renderBlocks.aoBrightnessYZNN >> 4) & 240) + ((renderBlocks.aoBrightnessXYPN >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZPNN >> 8) & 240) + ((renderBlocks.aoBrightnessYZNN >> 8) & 240) + ((renderBlocks.aoBrightnessXYPN >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZPNN >> 12) & 240) + ((renderBlocks.aoBrightnessYZNN >> 12) & 240) + ((renderBlocks.aoBrightnessXYPN >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x- z+
renderBlocks.colorRedTopRight = ((float) ((((renderBlocks.aoBrightnessXYZPNP >> 4) & 240) + ((renderBlocks.aoBrightnessYZNP >> 4) & 240) + ((renderBlocks.aoBrightnessXYPN >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenTopRight = ((float) ((((renderBlocks.aoBrightnessXYZPNP >> 8) & 240) + ((renderBlocks.aoBrightnessYZNP >> 8) & 240) + ((renderBlocks.aoBrightnessXYPN >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueTopRight = ((float) ((((renderBlocks.aoBrightnessXYZPNP >> 12) & 240) + ((renderBlocks.aoBrightnessYZNP >> 12) & 240) + ((renderBlocks.aoBrightnessXYPN >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// If colors are applied to any corners
if ((renderBlocks.colorRedTopLeft + renderBlocks.colorGreenTopLeft + renderBlocks.colorBlueTopLeft + renderBlocks.colorRedBottomLeft + renderBlocks.colorGreenBottomLeft + renderBlocks.colorBlueBottomLeft + renderBlocks.colorRedBottomRight + renderBlocks.colorGreenBottomRight + renderBlocks.colorBlueBottomRight + renderBlocks.colorRedTopRight + renderBlocks.colorGreenTopRight + renderBlocks.colorBlueTopRight) > 0f) {
// Calculate a rough brightness modifier for each corner color
float brightnessTopLeft = (1f - ((renderBlocks.colorRedTopLeft + renderBlocks.colorGreenTopLeft + renderBlocks.colorBlueTopLeft) / 3f)) * (((float) (240 - (renderBlocks.brightnessTopLeft & 240))) / 240f);
float brightnessBottomLeft = (1f - ((renderBlocks.colorRedBottomLeft + renderBlocks.colorGreenBottomLeft + renderBlocks.colorBlueBottomLeft) / 3f)) * (((float) (240 - (renderBlocks.brightnessBottomLeft & 240))) / 240f);
float brightnessBottomRight = (1f - ((renderBlocks.colorRedBottomRight + renderBlocks.colorGreenBottomRight + renderBlocks.colorBlueBottomRight) / 3f)) * (((float) (240 - (renderBlocks.brightnessBottomRight & 240))) / 240f);
float brightnessTopRight = (1f - ((renderBlocks.colorRedTopRight + renderBlocks.colorGreenTopRight + renderBlocks.colorBlueTopRight) / 3f)) * (((float) (240 - (renderBlocks.brightnessTopRight & 240))) / 240f);
// Finalize the corner color: x+ z+
renderBlocks.colorRedTopLeft = Math.min(1f, renderBlocks.colorRedTopLeft + brightnessTopLeft);
renderBlocks.colorGreenTopLeft = Math.min(1f, renderBlocks.colorGreenTopLeft + brightnessTopLeft);
renderBlocks.colorBlueTopLeft = Math.min(1f, renderBlocks.colorBlueTopLeft + brightnessTopLeft);
// Finalize the corner color: x+ z-
renderBlocks.colorRedBottomLeft = Math.min(1f, renderBlocks.colorRedBottomLeft + brightnessBottomLeft);
renderBlocks.colorGreenBottomLeft = Math.min(1f, renderBlocks.colorGreenBottomLeft + brightnessBottomLeft);
renderBlocks.colorBlueBottomLeft = Math.min(1f, renderBlocks.colorBlueBottomLeft + brightnessBottomLeft);
// Finalize the corner color: x- z-
renderBlocks.colorRedBottomRight = Math.min(1f, renderBlocks.colorRedBottomRight + brightnessBottomRight);
renderBlocks.colorGreenBottomRight = Math.min(1f, renderBlocks.colorGreenBottomRight + brightnessBottomRight);
renderBlocks.colorBlueBottomRight = Math.min(1f, renderBlocks.colorBlueBottomRight + brightnessBottomRight);
// Finalize the corner color: x- z+
renderBlocks.colorRedTopRight = Math.min(1f, renderBlocks.colorRedTopRight + brightnessTopRight);
renderBlocks.colorGreenTopRight = Math.min(1f, renderBlocks.colorGreenTopRight + brightnessTopRight);
renderBlocks.colorBlueTopRight = Math.min(1f, renderBlocks.colorBlueTopRight + brightnessTopRight);
}
// If no colors are applied to any of the corners
else {
// Reset the corners to white
renderBlocks.colorRedTopLeft = renderBlocks.colorGreenTopLeft = renderBlocks.colorBlueTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorGreenBottomRight = renderBlocks.colorBlueBottomRight = renderBlocks.colorRedTopRight = renderBlocks.colorGreenTopRight = renderBlocks.colorBlueTopRight = 1f;
}
// If the block color is not being overridden
if (var13) {
renderBlocks.colorRedTopLeft *= par5;
renderBlocks.colorGreenTopLeft *= par6;
renderBlocks.colorBlueTopLeft *= par7;
renderBlocks.colorRedBottomLeft *= par5;
renderBlocks.colorGreenBottomLeft *= par6;
renderBlocks.colorBlueBottomLeft *= par7;
renderBlocks.colorRedBottomRight *= par5;
renderBlocks.colorGreenBottomRight *= par6;
renderBlocks.colorBlueBottomRight *= par7;
renderBlocks.colorRedTopRight *= par5;
renderBlocks.colorGreenTopRight *= par6;
renderBlocks.colorBlueTopRight *= par7;
}
// Apply shadows next to walls and highlights next to edges
renderBlocks.colorRedTopLeft *= var9 * 0.5f;
renderBlocks.colorGreenTopLeft *= var9 * 0.5f;
renderBlocks.colorBlueTopLeft *= var9 * 0.5f;
renderBlocks.colorRedBottomLeft *= var10 * 0.5f;
renderBlocks.colorGreenBottomLeft *= var10 * 0.5f;
renderBlocks.colorBlueBottomLeft *= var10 * 0.5f;
renderBlocks.colorRedBottomRight *= var11 * 0.5f;
renderBlocks.colorGreenBottomRight *= var11 * 0.5f;
renderBlocks.colorBlueBottomRight *= var11 * 0.5f;
renderBlocks.colorRedTopRight *= var12 * 0.5f;
renderBlocks.colorGreenTopRight *= var12 * 0.5f;
renderBlocks.colorBlueTopRight *= var12 * 0.5f;
// END - GlitchLights
renderBlocks.renderFaceYNeg(par1Block, (double) par2, (double) par3, (double) par4, renderBlocks.getBlockIcon(par1Block, renderBlocks.blockAccess, par2, par3, par4, 0));
var8 = true;
}
//YYY+1
if (renderBlocks.renderAllFaces || par1Block.shouldSideBeRendered(renderBlocks.blockAccess, par2, par3 + 1, par4, 1)) {
if (renderBlocks.renderMaxY >= 1.0D) {
++par3;
}
renderBlocks.aoLightValueScratchXYNP = renderBlocks.blockAccess.getBlock(par2 - 1, par3, par4).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchXYPP = renderBlocks.blockAccess.getBlock(par2 + 1, par3, par4).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchYZPN = renderBlocks.blockAccess.getBlock(par2, par3, par4 - 1).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchYZPP = renderBlocks.blockAccess.getBlock(par2, par3, par4 + 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYNP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 - 1, par3, par4);
renderBlocks.aoBrightnessXYPP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 + 1, par3, par4);
renderBlocks.aoBrightnessYZPN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3, par4 - 1);
renderBlocks.aoBrightnessYZPP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3, par4 + 1);
var16 = renderBlocks.blockAccess.getBlock(par2 + 1, par3 + 1, par4).getCanBlockGrass();
var17 = renderBlocks.blockAccess.getBlock(par2 - 1, par3 + 1, par4).getCanBlockGrass();
var18 = renderBlocks.blockAccess.getBlock(par2, par3 + 1, par4 + 1).getCanBlockGrass();
var19 = renderBlocks.blockAccess.getBlock(par2, par3 + 1, par4 - 1).getCanBlockGrass();
if (!var19 && !var17) {
renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.aoLightValueScratchXYNP;
renderBlocks.aoBrightnessXYZNPN = renderBlocks.aoBrightnessXYNP;
} else {
renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.blockAccess.getBlock(par2 - 1, par3, par4 - 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZNPN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 - 1, par3, par4 - 1);
}
if (!var19 && !var16) {
renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.aoLightValueScratchXYPP;
renderBlocks.aoBrightnessXYZPPN = renderBlocks.aoBrightnessXYPP;
} else {
renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.blockAccess.getBlock(par2 + 1, par3, par4 - 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZPPN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 + 1, par3, par4 - 1);
}
if (!var18 && !var17) {
renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.aoLightValueScratchXYNP;
renderBlocks.aoBrightnessXYZNPP = renderBlocks.aoBrightnessXYNP;
} else {
renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.blockAccess.getBlock(par2 - 1, par3, par4 + 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZNPP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 - 1, par3, par4 + 1);
}
if (!var18 && !var16) {
renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.aoLightValueScratchXYPP;
renderBlocks.aoBrightnessXYZPPP = renderBlocks.aoBrightnessXYPP;
} else {
renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.blockAccess.getBlock(par2 + 1, par3, par4 + 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZPPP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 + 1, par3, par4 + 1);
}
if (renderBlocks.renderMaxY >= 1.0D) {
--par3;
}
var20 = var14;
if (renderBlocks.renderMaxY >= 1.0D || !renderBlocks.blockAccess.getBlock(par2, par3 + 1, par4).isOpaqueCube()) {
var20 = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 + 1, par4);
}
var21 = renderBlocks.blockAccess.getBlock(par2, par3 + 1, par4).getAmbientOcclusionLightValue();
var12 = (renderBlocks.aoLightValueScratchXYZNPP + renderBlocks.aoLightValueScratchXYNP + renderBlocks.aoLightValueScratchYZPP + var21) / 4.0F;
var9 = (renderBlocks.aoLightValueScratchYZPP + var21 + renderBlocks.aoLightValueScratchXYZPPP + renderBlocks.aoLightValueScratchXYPP) / 4.0F;
var10 = (var21 + renderBlocks.aoLightValueScratchYZPN + renderBlocks.aoLightValueScratchXYPP + renderBlocks.aoLightValueScratchXYZPPN) / 4.0F;
var11 = (renderBlocks.aoLightValueScratchXYNP + renderBlocks.aoLightValueScratchXYZNPN + var21 + renderBlocks.aoLightValueScratchYZPN) / 4.0F;
// BEGIN - GlitchLights
// Calculate the basic corner brightnesses
renderBlocks.brightnessTopLeft = ((renderBlocks.aoBrightnessXYZPPP & 15728880) + (renderBlocks.aoBrightnessYZPP & 15728880) + (renderBlocks.aoBrightnessXYPP & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessBottomLeft = ((renderBlocks.aoBrightnessXYZPPN & 15728880) + (renderBlocks.aoBrightnessYZPN & 15728880) + (renderBlocks.aoBrightnessXYPP & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessBottomRight = ((renderBlocks.aoBrightnessXYZNPN & 15728880) + (renderBlocks.aoBrightnessXYNP & 15728880) + (renderBlocks.aoBrightnessYZPN & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessTopRight = ((renderBlocks.aoBrightnessXYZNPP & 15728880) + (renderBlocks.aoBrightnessXYNP & 15728880) + (renderBlocks.aoBrightnessYZPP & 15728880) + (var20 & 15728880)) >> 2;
// Calculate a basic corner color: x+ z+
renderBlocks.colorRedTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZPPP >> 4) & 240) + ((renderBlocks.aoBrightnessYZPP >> 4) & 240) + ((renderBlocks.aoBrightnessXYPP >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZPPP >> 8) & 240) + ((renderBlocks.aoBrightnessYZPP >> 8) & 240) + ((renderBlocks.aoBrightnessXYPP >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZPPP >> 12) & 240) + ((renderBlocks.aoBrightnessYZPP >> 12) & 240) + ((renderBlocks.aoBrightnessXYPP >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x+ z-
renderBlocks.colorRedBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZPPN >> 4) & 240) + ((renderBlocks.aoBrightnessYZPN >> 4) & 240) + ((renderBlocks.aoBrightnessXYPP >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZPPN >> 8) & 240) + ((renderBlocks.aoBrightnessYZPN >> 8) & 240) + ((renderBlocks.aoBrightnessXYPP >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZPPN >> 12) & 240) + ((renderBlocks.aoBrightnessYZPN >> 12) & 240) + ((renderBlocks.aoBrightnessXYPP >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x- z-
renderBlocks.colorRedBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZNPN >> 4) & 240) + ((renderBlocks.aoBrightnessXYNP >> 4) & 240) + ((renderBlocks.aoBrightnessYZPN >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZNPN >> 8) & 240) + ((renderBlocks.aoBrightnessXYNP >> 8) & 240) + ((renderBlocks.aoBrightnessYZPN >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZNPN >> 12) & 240) + ((renderBlocks.aoBrightnessXYNP >> 12) & 240) + ((renderBlocks.aoBrightnessYZPN >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x- z+
renderBlocks.colorRedTopRight = ((float) ((((renderBlocks.aoBrightnessXYZNPP >> 4) & 240) + ((renderBlocks.aoBrightnessXYNP >> 4) & 240) + ((renderBlocks.aoBrightnessYZPP >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenTopRight = ((float) ((((renderBlocks.aoBrightnessXYZNPP >> 8) & 240) + ((renderBlocks.aoBrightnessXYNP >> 8) & 240) + ((renderBlocks.aoBrightnessYZPP >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueTopRight = ((float) ((((renderBlocks.aoBrightnessXYZNPP >> 12) & 240) + ((renderBlocks.aoBrightnessXYNP >> 12) & 240) + ((renderBlocks.aoBrightnessYZPP >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// If colors are applied to any corners
if ((renderBlocks.colorRedTopLeft + renderBlocks.colorGreenTopLeft + renderBlocks.colorBlueTopLeft + renderBlocks.colorRedBottomLeft + renderBlocks.colorGreenBottomLeft + renderBlocks.colorBlueBottomLeft + renderBlocks.colorRedBottomRight + renderBlocks.colorGreenBottomRight + renderBlocks.colorBlueBottomRight + renderBlocks.colorRedTopRight + renderBlocks.colorGreenTopRight + renderBlocks.colorBlueTopRight) > 0f) {
// Calculate a rough brightness modifier for each corner color
float brightnessTopLeft = (1f - ((renderBlocks.colorRedTopLeft + renderBlocks.colorGreenTopLeft + renderBlocks.colorBlueTopLeft) / 3f)) * (((float) (240 - (renderBlocks.brightnessTopLeft & 240))) / 240f);
float brightnessBottomLeft = (1f - ((renderBlocks.colorRedBottomLeft + renderBlocks.colorGreenBottomLeft + renderBlocks.colorBlueBottomLeft) / 3f)) * (((float) (240 - (renderBlocks.brightnessBottomLeft & 240))) / 240f);
float brightnessBottomRight = (1f - ((renderBlocks.colorRedBottomRight + renderBlocks.colorGreenBottomRight + renderBlocks.colorBlueBottomRight) / 3f)) * (((float) (240 - (renderBlocks.brightnessBottomRight & 240))) / 240f);
float brightnessTopRight = (1f - ((renderBlocks.colorRedTopRight + renderBlocks.colorGreenTopRight + renderBlocks.colorBlueTopRight) / 3f)) * (((float) (240 - (renderBlocks.brightnessTopRight & 240))) / 240f);
// Finalize the corner color: x+ z+
renderBlocks.colorRedTopLeft = Math.min(1f, renderBlocks.colorRedTopLeft + brightnessTopLeft);
renderBlocks.colorGreenTopLeft = Math.min(1f, renderBlocks.colorGreenTopLeft + brightnessTopLeft);
renderBlocks.colorBlueTopLeft = Math.min(1f, renderBlocks.colorBlueTopLeft + brightnessTopLeft);
// Finalize the corner color: x+ z-
renderBlocks.colorRedBottomLeft = Math.min(1f, renderBlocks.colorRedBottomLeft + brightnessBottomLeft);
renderBlocks.colorGreenBottomLeft = Math.min(1f, renderBlocks.colorGreenBottomLeft + brightnessBottomLeft);
renderBlocks.colorBlueBottomLeft = Math.min(1f, renderBlocks.colorBlueBottomLeft + brightnessBottomLeft);
// Finalize the corner color: x- z-
renderBlocks.colorRedBottomRight = Math.min(1f, renderBlocks.colorRedBottomRight + brightnessBottomRight);
renderBlocks.colorGreenBottomRight = Math.min(1f, renderBlocks.colorGreenBottomRight + brightnessBottomRight);
renderBlocks.colorBlueBottomRight = Math.min(1f, renderBlocks.colorBlueBottomRight + brightnessBottomRight);
// Finalize the corner color: x- z+
renderBlocks.colorRedTopRight = Math.min(1f, renderBlocks.colorRedTopRight + brightnessTopRight);
renderBlocks.colorGreenTopRight = Math.min(1f, renderBlocks.colorGreenTopRight + brightnessTopRight);
renderBlocks.colorBlueTopRight = Math.min(1f, renderBlocks.colorBlueTopRight + brightnessTopRight);
}
// If no colors are applied to any of the corners
else {
// Reset the corners to white
renderBlocks.colorRedTopLeft = renderBlocks.colorGreenTopLeft = renderBlocks.colorBlueTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorGreenBottomRight = renderBlocks.colorBlueBottomRight = renderBlocks.colorRedTopRight = renderBlocks.colorGreenTopRight = renderBlocks.colorBlueTopRight = 1f;
}
// Apply shadows next to walls, highlights next to edges, and the supplied argument colors
renderBlocks.colorRedTopLeft *= var9 * par5;
renderBlocks.colorGreenTopLeft *= var9 * par6;
renderBlocks.colorBlueTopLeft *= var9 * par7;
renderBlocks.colorRedBottomLeft *= var10 * par5;
renderBlocks.colorGreenBottomLeft *= var10 * par6;
renderBlocks.colorBlueBottomLeft *= var10 * par7;
renderBlocks.colorRedBottomRight *= var11 * par5;
renderBlocks.colorGreenBottomRight *= var11 * par6;
renderBlocks.colorBlueBottomRight *= var11 * par7;
renderBlocks.colorRedTopRight *= var12 * par5;
renderBlocks.colorGreenTopRight *= var12 * par6;
renderBlocks.colorBlueTopRight *= var12 * par7;
// END - GlitchLights
renderBlocks.renderFaceYPos(par1Block, (double) par2, (double) par3, (double) par4, renderBlocks.getBlockIcon(par1Block, renderBlocks.blockAccess, par2, par3, par4, 1));
var8 = true;
}
IIcon var22;
if (renderBlocks.renderAllFaces || par1Block.shouldSideBeRendered(renderBlocks.blockAccess, par2, par3, par4 - 1, 2)) {
if (renderBlocks.renderMinZ <= 0.0D) {
--par4;
}
renderBlocks.aoLightValueScratchXZNN = renderBlocks.blockAccess.getBlock(par2 - 1, par3, par4).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchYZNN = renderBlocks.blockAccess.getBlock(par2, par3 - 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchYZPN = renderBlocks.blockAccess.getBlock(par2, par3 + 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchXZPN = renderBlocks.blockAccess.getBlock(par2 + 1, par3, par4).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXZNN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 - 1, par3, par4);
renderBlocks.aoBrightnessYZNN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 - 1, par4);
renderBlocks.aoBrightnessYZPN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 + 1, par4);
renderBlocks.aoBrightnessXZPN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 + 1, par3, par4);
var16 = renderBlocks.blockAccess.getBlock(par2 + 1, par3, par4 - 1).getCanBlockGrass();
var17 = renderBlocks.blockAccess.getBlock(par2 - 1, par3, par4 - 1).getCanBlockGrass();
var18 = renderBlocks.blockAccess.getBlock(par2, par3 + 1, par4 - 1).getCanBlockGrass();
var19 = renderBlocks.blockAccess.getBlock(par2, par3 - 1, par4 - 1).getCanBlockGrass();
if (!var17 && !var19) {
renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.aoLightValueScratchXZNN;
renderBlocks.aoBrightnessXYZNNN = renderBlocks.aoBrightnessXZNN;
} else {
renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.blockAccess.getBlock(par2 - 1, par3 - 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZNNN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 - 1, par3 - 1, par4);
}
if (!var17 && !var18) {
renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.aoLightValueScratchXZNN;
renderBlocks.aoBrightnessXYZNPN = renderBlocks.aoBrightnessXZNN;
} else {
renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.blockAccess.getBlock(par2 - 1, par3 + 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZNPN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 - 1, par3 + 1, par4);
}
if (!var16 && !var19) {
renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.aoLightValueScratchXZPN;
renderBlocks.aoBrightnessXYZPNN = renderBlocks.aoBrightnessXZPN;
} else {
renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.blockAccess.getBlock(par2 + 1, par3 - 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZPNN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 + 1, par3 - 1, par4);
}
if (!var16 && !var18) {
renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.aoLightValueScratchXZPN;
renderBlocks.aoBrightnessXYZPPN = renderBlocks.aoBrightnessXZPN;
} else {
renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.blockAccess.getBlock(par2 + 1, par3 + 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZPPN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 + 1, par3 + 1, par4);
}
if (renderBlocks.renderMinZ <= 0.0D) {
++par4;
}
var20 = var14;
if (renderBlocks.renderMinZ <= 0.0D || !renderBlocks.blockAccess.getBlock(par2, par3, par4 - 1).isOpaqueCube()) {
var20 = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3, par4 - 1);
}
var21 = renderBlocks.blockAccess.getBlock(par2, par3, par4 - 1).getAmbientOcclusionLightValue();
var9 = (renderBlocks.aoLightValueScratchXZNN + renderBlocks.aoLightValueScratchXYZNPN + var21 + renderBlocks.aoLightValueScratchYZPN) / 4.0F;
var10 = (var21 + renderBlocks.aoLightValueScratchYZPN + renderBlocks.aoLightValueScratchXZPN + renderBlocks.aoLightValueScratchXYZPPN) / 4.0F;
var11 = (renderBlocks.aoLightValueScratchYZNN + var21 + renderBlocks.aoLightValueScratchXYZPNN + renderBlocks.aoLightValueScratchXZPN) / 4.0F;
var12 = (renderBlocks.aoLightValueScratchXYZNNN + renderBlocks.aoLightValueScratchXZNN + renderBlocks.aoLightValueScratchYZNN + var21) / 4.0F;
// BEGIN - GlitchLights
// Calculate the basic corner brightnesses
renderBlocks.brightnessTopLeft = ((renderBlocks.aoBrightnessXYZNPN & 15728880) + (renderBlocks.aoBrightnessXZNN & 15728880) + (renderBlocks.aoBrightnessYZPN & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessBottomLeft = ((renderBlocks.aoBrightnessXYZPPN & 15728880) + (renderBlocks.aoBrightnessYZPN & 15728880) + (renderBlocks.aoBrightnessXZPN & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessBottomRight = ((renderBlocks.aoBrightnessXYZPNN & 15728880) + (renderBlocks.aoBrightnessYZNN & 15728880) + (renderBlocks.aoBrightnessXZPN & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessTopRight = ((renderBlocks.aoBrightnessXYZNNN & 15728880) + (renderBlocks.aoBrightnessXZNN & 15728880) + (renderBlocks.aoBrightnessYZNN & 15728880) + (var20 & 15728880)) >> 2;
// Calculate a basic corner color: x+ z+
renderBlocks.colorRedTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZNPN >> 4) & 240) + ((renderBlocks.aoBrightnessXZNN >> 4) & 240) + ((renderBlocks.aoBrightnessYZPN >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZNPN >> 8) & 240) + ((renderBlocks.aoBrightnessXZNN >> 8) & 240) + ((renderBlocks.aoBrightnessYZPN >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZNPN >> 12) & 240) + ((renderBlocks.aoBrightnessXZNN >> 12) & 240) + ((renderBlocks.aoBrightnessYZPN >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x+ z-
renderBlocks.colorRedBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZPPN >> 4) & 240) + ((renderBlocks.aoBrightnessYZPN >> 4) & 240) + ((renderBlocks.aoBrightnessXZPN >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZPPN >> 8) & 240) + ((renderBlocks.aoBrightnessYZPN >> 8) & 240) + ((renderBlocks.aoBrightnessXZPN >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZPPN >> 12) & 240) + ((renderBlocks.aoBrightnessYZPN >> 12) & 240) + ((renderBlocks.aoBrightnessXZPN >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x- z-
renderBlocks.colorRedBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZPNN >> 4) & 240) + ((renderBlocks.aoBrightnessYZNN >> 4) & 240) + ((renderBlocks.aoBrightnessXZPN >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZPNN >> 8) & 240) + ((renderBlocks.aoBrightnessYZNN >> 8) & 240) + ((renderBlocks.aoBrightnessXZPN >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZPNN >> 12) & 240) + ((renderBlocks.aoBrightnessYZNN >> 12) & 240) + ((renderBlocks.aoBrightnessXZPN >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x- z+
renderBlocks.colorRedTopRight = ((float) ((((renderBlocks.aoBrightnessXYZNNN >> 4) & 240) + ((renderBlocks.aoBrightnessXZNN >> 4) & 240) + ((renderBlocks.aoBrightnessYZNN >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenTopRight = ((float) ((((renderBlocks.aoBrightnessXYZNNN >> 8) & 240) + ((renderBlocks.aoBrightnessXZNN >> 8) & 240) + ((renderBlocks.aoBrightnessYZNN >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueTopRight = ((float) ((((renderBlocks.aoBrightnessXYZNNN >> 12) & 240) + ((renderBlocks.aoBrightnessXZNN >> 12) & 240) + ((renderBlocks.aoBrightnessYZNN >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// If colors are applied to any corners
if ((renderBlocks.colorRedTopLeft + renderBlocks.colorGreenTopLeft + renderBlocks.colorBlueTopLeft + renderBlocks.colorRedBottomLeft + renderBlocks.colorGreenBottomLeft + renderBlocks.colorBlueBottomLeft + renderBlocks.colorRedBottomRight + renderBlocks.colorGreenBottomRight + renderBlocks.colorBlueBottomRight + renderBlocks.colorRedTopRight + renderBlocks.colorGreenTopRight + renderBlocks.colorBlueTopRight) > 0f) {
// Calculate a rough brightness modifier for each corner color
float brightnessTopLeft = (1f - ((renderBlocks.colorRedTopLeft + renderBlocks.colorGreenTopLeft + renderBlocks.colorBlueTopLeft) / 3f)) * (((float) (240 - (renderBlocks.brightnessTopLeft & 240))) / 240f);
float brightnessBottomLeft = (1f - ((renderBlocks.colorRedBottomLeft + renderBlocks.colorGreenBottomLeft + renderBlocks.colorBlueBottomLeft) / 3f)) * (((float) (240 - (renderBlocks.brightnessBottomLeft & 240))) / 240f);
float brightnessBottomRight = (1f - ((renderBlocks.colorRedBottomRight + renderBlocks.colorGreenBottomRight + renderBlocks.colorBlueBottomRight) / 3f)) * (((float) (240 - (renderBlocks.brightnessBottomRight & 240))) / 240f);
float brightnessTopRight = (1f - ((renderBlocks.colorRedTopRight + renderBlocks.colorGreenTopRight + renderBlocks.colorBlueTopRight) / 3f)) * (((float) (240 - (renderBlocks.brightnessTopRight & 240))) / 240f);
// Finalize the corner color: x+ z+
renderBlocks.colorRedTopLeft = Math.min(1f, renderBlocks.colorRedTopLeft + brightnessTopLeft);
renderBlocks.colorGreenTopLeft = Math.min(1f, renderBlocks.colorGreenTopLeft + brightnessTopLeft);
renderBlocks.colorBlueTopLeft = Math.min(1f, renderBlocks.colorBlueTopLeft + brightnessTopLeft);
// Finalize the corner color: x+ z-
renderBlocks.colorRedBottomLeft = Math.min(1f, renderBlocks.colorRedBottomLeft + brightnessBottomLeft);
renderBlocks.colorGreenBottomLeft = Math.min(1f, renderBlocks.colorGreenBottomLeft + brightnessBottomLeft);
renderBlocks.colorBlueBottomLeft = Math.min(1f, renderBlocks.colorBlueBottomLeft + brightnessBottomLeft);
// Finalize the corner color: x- z-
renderBlocks.colorRedBottomRight = Math.min(1f, renderBlocks.colorRedBottomRight + brightnessBottomRight);
renderBlocks.colorGreenBottomRight = Math.min(1f, renderBlocks.colorGreenBottomRight + brightnessBottomRight);
renderBlocks.colorBlueBottomRight = Math.min(1f, renderBlocks.colorBlueBottomRight + brightnessBottomRight);
// Finalize the corner color: x- z+
renderBlocks.colorRedTopRight = Math.min(1f, renderBlocks.colorRedTopRight + brightnessTopRight);
renderBlocks.colorGreenTopRight = Math.min(1f, renderBlocks.colorGreenTopRight + brightnessTopRight);
renderBlocks.colorBlueTopRight = Math.min(1f, renderBlocks.colorBlueTopRight + brightnessTopRight);
}
// If no colors are applied to any of the corners
else {
// Reset the corners to white
renderBlocks.colorRedTopLeft = renderBlocks.colorGreenTopLeft = renderBlocks.colorBlueTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorGreenBottomRight = renderBlocks.colorBlueBottomRight = renderBlocks.colorRedTopRight = renderBlocks.colorGreenTopRight = renderBlocks.colorBlueTopRight = 1f;
}
// If the block color is not being overridden
if (var13) {
renderBlocks.colorRedTopLeft *= par5;
renderBlocks.colorGreenTopLeft *= par6;
renderBlocks.colorBlueTopLeft *= par7;
renderBlocks.colorRedBottomLeft *= par5;
renderBlocks.colorGreenBottomLeft *= par6;
renderBlocks.colorBlueBottomLeft *= par7;
renderBlocks.colorRedBottomRight *= par5;
renderBlocks.colorGreenBottomRight *= par6;
renderBlocks.colorBlueBottomRight *= par7;
renderBlocks.colorRedTopRight *= par5;
renderBlocks.colorGreenTopRight *= par6;
renderBlocks.colorBlueTopRight *= par7;
}
// Apply shadows next to walls and highlights next to edges
renderBlocks.colorRedTopLeft *= var9 * 0.8f;
renderBlocks.colorGreenTopLeft *= var9 * 0.8f;
renderBlocks.colorBlueTopLeft *= var9 * 0.8f;
renderBlocks.colorRedBottomLeft *= var10 * 0.8f;
renderBlocks.colorGreenBottomLeft *= var10 * 0.8f;
renderBlocks.colorBlueBottomLeft *= var10 * 0.8f;
renderBlocks.colorRedBottomRight *= var11 * 0.8f;
renderBlocks.colorGreenBottomRight *= var11 * 0.8f;
renderBlocks.colorBlueBottomRight *= var11 * 0.8f;
renderBlocks.colorRedTopRight *= var12 * 0.8f;
renderBlocks.colorGreenTopRight *= var12 * 0.8f;
renderBlocks.colorBlueTopRight *= var12 * 0.8f;
// END - GlitchLights
var22 = renderBlocks.getBlockIcon(par1Block, renderBlocks.blockAccess, par2, par3, par4, 2);
renderBlocks.renderFaceZNeg(par1Block, (double) par2, (double) par3, (double) par4, var22);
if (RenderBlocks.fancyGrass && var22.getIconName().equals("grass_side") && !renderBlocks.hasOverrideBlockTexture()) {
renderBlocks.colorRedTopLeft *= par5;
renderBlocks.colorRedBottomLeft *= par5;
renderBlocks.colorRedBottomRight *= par5;
renderBlocks.colorRedTopRight *= par5;
renderBlocks.colorGreenTopLeft *= par6;
renderBlocks.colorGreenBottomLeft *= par6;
renderBlocks.colorGreenBottomRight *= par6;
renderBlocks.colorGreenTopRight *= par6;
renderBlocks.colorBlueTopLeft *= par7;
renderBlocks.colorBlueBottomLeft *= par7;
renderBlocks.colorBlueBottomRight *= par7;
renderBlocks.colorBlueTopRight *= par7;
renderBlocks.renderFaceZNeg(par1Block, (double) par2, (double) par3, (double) par4, BlockGrass.getIconSideOverlay());
}
var8 = true;
}
//ZZZ+1
if (renderBlocks.renderAllFaces || par1Block.shouldSideBeRendered(renderBlocks.blockAccess, par2, par3, par4 + 1, 3)) {
if (renderBlocks.renderMaxZ >= 1.0D) {
++par4;
}
renderBlocks.aoLightValueScratchXZNP = renderBlocks.blockAccess.getBlock(par2 - 1, par3, par4).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchXZPP = renderBlocks.blockAccess.getBlock(par2 + 1, par3, par4).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchYZNP = renderBlocks.blockAccess.getBlock(par2, par3 - 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchYZPP = renderBlocks.blockAccess.getBlock(par2, par3 + 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXZNP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 - 1, par3, par4);
renderBlocks.aoBrightnessXZPP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 + 1, par3, par4);
renderBlocks.aoBrightnessYZNP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 - 1, par4);
renderBlocks.aoBrightnessYZPP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 + 1, par4);
var16 = renderBlocks.blockAccess.getBlock(par2 + 1, par3, par4 + 1).getCanBlockGrass();
var17 = renderBlocks.blockAccess.getBlock(par2 - 1, par3, par4 + 1).getCanBlockGrass();
var18 = renderBlocks.blockAccess.getBlock(par2, par3 + 1, par4 + 1).getCanBlockGrass();
var19 = renderBlocks.blockAccess.getBlock(par2, par3 - 1, par4 + 1).getCanBlockGrass();
if (!var17 && !var19) {
renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.aoLightValueScratchXZNP;
renderBlocks.aoBrightnessXYZNNP = renderBlocks.aoBrightnessXZNP;
} else {
renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.blockAccess.getBlock(par2 - 1, par3 - 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZNNP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 - 1, par3 - 1, par4);
}
if (!var17 && !var18) {
renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.aoLightValueScratchXZNP;
renderBlocks.aoBrightnessXYZNPP = renderBlocks.aoBrightnessXZNP;
} else {
renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.blockAccess.getBlock(par2 - 1, par3 + 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZNPP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 - 1, par3 + 1, par4);
}
if (!var16 && !var19) {
renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.aoLightValueScratchXZPP;
renderBlocks.aoBrightnessXYZPNP = renderBlocks.aoBrightnessXZPP;
} else {
renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.blockAccess.getBlock(par2 + 1, par3 - 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZPNP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 + 1, par3 - 1, par4);
}
if (!var16 && !var18) {
renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.aoLightValueScratchXZPP;
renderBlocks.aoBrightnessXYZPPP = renderBlocks.aoBrightnessXZPP;
} else {
renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.blockAccess.getBlock(par2 + 1, par3 + 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZPPP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 + 1, par3 + 1, par4);
}
if (renderBlocks.renderMaxZ >= 1.0D) {
--par4;
}
var20 = var14;
if (renderBlocks.renderMaxZ >= 1.0D || !renderBlocks.blockAccess.getBlock(par2, par3, par4 + 1).isOpaqueCube()) {
var20 = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3, par4 + 1);
}
var21 = renderBlocks.blockAccess.getBlock(par2, par3, par4 + 1).getAmbientOcclusionLightValue();
var9 = (renderBlocks.aoLightValueScratchXZNP + renderBlocks.aoLightValueScratchXYZNPP + var21 + renderBlocks.aoLightValueScratchYZPP) / 4.0F;
var12 = (var21 + renderBlocks.aoLightValueScratchYZPP + renderBlocks.aoLightValueScratchXZPP + renderBlocks.aoLightValueScratchXYZPPP) / 4.0F;
var11 = (renderBlocks.aoLightValueScratchYZNP + var21 + renderBlocks.aoLightValueScratchXYZPNP + renderBlocks.aoLightValueScratchXZPP) / 4.0F;
var10 = (renderBlocks.aoLightValueScratchXYZNNP + renderBlocks.aoLightValueScratchXZNP + renderBlocks.aoLightValueScratchYZNP + var21) / 4.0F;
// BEGIN - GlitchLights
// Calculate the basic corner brightnesses
renderBlocks.brightnessTopLeft = ((renderBlocks.aoBrightnessXYZNPP & 15728880) + (renderBlocks.aoBrightnessXZNP & 15728880) + (renderBlocks.aoBrightnessYZPP & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessBottomLeft = ((renderBlocks.aoBrightnessXYZNNP & 15728880) + (renderBlocks.aoBrightnessYZNP & 15728880) + (renderBlocks.aoBrightnessXZNP & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessBottomRight = ((renderBlocks.aoBrightnessXYZPNP & 15728880) + (renderBlocks.aoBrightnessYZNP & 15728880) + (renderBlocks.aoBrightnessXZPP & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessTopRight = ((renderBlocks.aoBrightnessXYZPPP & 15728880) + (renderBlocks.aoBrightnessXZPP & 15728880) + (renderBlocks.aoBrightnessYZPP & 15728880) + (var20 & 15728880)) >> 2;
// Calculate a basic corner color: x+ z+
renderBlocks.colorRedTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZNPP >> 4) & 240) + ((renderBlocks.aoBrightnessXZNP >> 4) & 240) + ((renderBlocks.aoBrightnessYZPP >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZNPP >> 8) & 240) + ((renderBlocks.aoBrightnessXZNP >> 8) & 240) + ((renderBlocks.aoBrightnessYZPP >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZNPP >> 12) & 240) + ((renderBlocks.aoBrightnessXZNP >> 12) & 240) + ((renderBlocks.aoBrightnessYZPP >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x+ z-
renderBlocks.colorRedBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZNNP >> 4) & 240) + ((renderBlocks.aoBrightnessYZNP >> 4) & 240) + ((renderBlocks.aoBrightnessXZNP >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZNNP >> 8) & 240) + ((renderBlocks.aoBrightnessYZNP >> 8) & 240) + ((renderBlocks.aoBrightnessXZNP >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZNNP >> 12) & 240) + ((renderBlocks.aoBrightnessYZNP >> 12) & 240) + ((renderBlocks.aoBrightnessXZNP >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x- z-
renderBlocks.colorRedBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZPNP >> 4) & 240) + ((renderBlocks.aoBrightnessYZNP >> 4) & 240) + ((renderBlocks.aoBrightnessXZPP >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZPNP >> 8) & 240) + ((renderBlocks.aoBrightnessYZNP >> 8) & 240) + ((renderBlocks.aoBrightnessXZPP >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZPNP >> 12) & 240) + ((renderBlocks.aoBrightnessYZNP >> 12) & 240) + ((renderBlocks.aoBrightnessXZPP >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x- z+
renderBlocks.colorRedTopRight = ((float) ((((renderBlocks.aoBrightnessXYZPPP >> 4) & 240) + ((renderBlocks.aoBrightnessXZPP >> 4) & 240) + ((renderBlocks.aoBrightnessYZPP >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenTopRight = ((float) ((((renderBlocks.aoBrightnessXYZPPP >> 8) & 240) + ((renderBlocks.aoBrightnessXZPP >> 8) & 240) + ((renderBlocks.aoBrightnessYZPP >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueTopRight = ((float) ((((renderBlocks.aoBrightnessXYZPPP >> 12) & 240) + ((renderBlocks.aoBrightnessXZPP >> 12) & 240) + ((renderBlocks.aoBrightnessYZPP >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// If colors are applied to any corners
if ((renderBlocks.colorRedTopLeft + renderBlocks.colorGreenTopLeft + renderBlocks.colorBlueTopLeft + renderBlocks.colorRedBottomLeft + renderBlocks.colorGreenBottomLeft + renderBlocks.colorBlueBottomLeft + renderBlocks.colorRedBottomRight + renderBlocks.colorGreenBottomRight + renderBlocks.colorBlueBottomRight + renderBlocks.colorRedTopRight + renderBlocks.colorGreenTopRight + renderBlocks.colorBlueTopRight) > 0f) {
// Calculate a rough brightness modifier for each corner color
float brightnessTopLeft = (1f - ((renderBlocks.colorRedTopLeft + renderBlocks.colorGreenTopLeft + renderBlocks.colorBlueTopLeft) / 3f)) * (((float) (240 - (renderBlocks.brightnessTopLeft & 240))) / 240f);
float brightnessBottomLeft = (1f - ((renderBlocks.colorRedBottomLeft + renderBlocks.colorGreenBottomLeft + renderBlocks.colorBlueBottomLeft) / 3f)) * (((float) (240 - (renderBlocks.brightnessBottomLeft & 240))) / 240f);
float brightnessBottomRight = (1f - ((renderBlocks.colorRedBottomRight + renderBlocks.colorGreenBottomRight + renderBlocks.colorBlueBottomRight) / 3f)) * (((float) (240 - (renderBlocks.brightnessBottomRight & 240))) / 240f);
float brightnessTopRight = (1f - ((renderBlocks.colorRedTopRight + renderBlocks.colorGreenTopRight + renderBlocks.colorBlueTopRight) / 3f)) * (((float) (240 - (renderBlocks.brightnessTopRight & 240))) / 240f);
// Finalize the corner color: x+ z+
renderBlocks.colorRedTopLeft = Math.min(1f, renderBlocks.colorRedTopLeft + brightnessTopLeft);
renderBlocks.colorGreenTopLeft = Math.min(1f, renderBlocks.colorGreenTopLeft + brightnessTopLeft);
renderBlocks.colorBlueTopLeft = Math.min(1f, renderBlocks.colorBlueTopLeft + brightnessTopLeft);
// Finalize the corner color: x+ z-
renderBlocks.colorRedBottomLeft = Math.min(1f, renderBlocks.colorRedBottomLeft + brightnessBottomLeft);
renderBlocks.colorGreenBottomLeft = Math.min(1f, renderBlocks.colorGreenBottomLeft + brightnessBottomLeft);
renderBlocks.colorBlueBottomLeft = Math.min(1f, renderBlocks.colorBlueBottomLeft + brightnessBottomLeft);
// Finalize the corner color: x- z-
renderBlocks.colorRedBottomRight = Math.min(1f, renderBlocks.colorRedBottomRight + brightnessBottomRight);
renderBlocks.colorGreenBottomRight = Math.min(1f, renderBlocks.colorGreenBottomRight + brightnessBottomRight);
renderBlocks.colorBlueBottomRight = Math.min(1f, renderBlocks.colorBlueBottomRight + brightnessBottomRight);
// Finalize the corner color: x- z+
renderBlocks.colorRedTopRight = Math.min(1f, renderBlocks.colorRedTopRight + brightnessTopRight);
renderBlocks.colorGreenTopRight = Math.min(1f, renderBlocks.colorGreenTopRight + brightnessTopRight);
renderBlocks.colorBlueTopRight = Math.min(1f, renderBlocks.colorBlueTopRight + brightnessTopRight);
}
// If no colors are applied to any of the corners
else {
// Reset the corners to white
renderBlocks.colorRedTopLeft = renderBlocks.colorGreenTopLeft = renderBlocks.colorBlueTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorGreenBottomRight = renderBlocks.colorBlueBottomRight = renderBlocks.colorRedTopRight = renderBlocks.colorGreenTopRight = renderBlocks.colorBlueTopRight = 1f;
}
// If the block color is not being overridden
if (var13) {
renderBlocks.colorRedTopLeft *= par5;
renderBlocks.colorGreenTopLeft *= par6;
renderBlocks.colorBlueTopLeft *= par7;
renderBlocks.colorRedBottomLeft *= par5;
renderBlocks.colorGreenBottomLeft *= par6;
renderBlocks.colorBlueBottomLeft *= par7;
renderBlocks.colorRedBottomRight *= par5;
renderBlocks.colorGreenBottomRight *= par6;
renderBlocks.colorBlueBottomRight *= par7;
renderBlocks.colorRedTopRight *= par5;
renderBlocks.colorGreenTopRight *= par6;
renderBlocks.colorBlueTopRight *= par7;
}
// Apply shadows next to walls and highlights next to edges
renderBlocks.colorRedTopLeft *= var9 * 0.8f;
renderBlocks.colorGreenTopLeft *= var9 * 0.8f;
renderBlocks.colorBlueTopLeft *= var9 * 0.8f;
renderBlocks.colorRedBottomLeft *= var10 * 0.8f;
renderBlocks.colorGreenBottomLeft *= var10 * 0.8f;
renderBlocks.colorBlueBottomLeft *= var10 * 0.8f;
renderBlocks.colorRedBottomRight *= var11 * 0.8f;
renderBlocks.colorGreenBottomRight *= var11 * 0.8f;
renderBlocks.colorBlueBottomRight *= var11 * 0.8f;
renderBlocks.colorRedTopRight *= var12 * 0.8f;
renderBlocks.colorGreenTopRight *= var12 * 0.8f;
renderBlocks.colorBlueTopRight *= var12 * 0.8f;
// END - GlitchLights
var22 = renderBlocks.getBlockIcon(par1Block, renderBlocks.blockAccess, par2, par3, par4, 3);
renderBlocks.renderFaceZPos(par1Block, (double) par2, (double) par3, (double) par4, renderBlocks.getBlockIcon(par1Block, renderBlocks.blockAccess, par2, par3, par4, 3));
if (RenderBlocks.fancyGrass && var22.getIconName().equals("grass_side") && !renderBlocks.hasOverrideBlockTexture()) {
renderBlocks.colorRedTopLeft *= par5;
renderBlocks.colorRedBottomLeft *= par5;
renderBlocks.colorRedBottomRight *= par5;
renderBlocks.colorRedTopRight *= par5;
renderBlocks.colorGreenTopLeft *= par6;
renderBlocks.colorGreenBottomLeft *= par6;
renderBlocks.colorGreenBottomRight *= par6;
renderBlocks.colorGreenTopRight *= par6;
renderBlocks.colorBlueTopLeft *= par7;
renderBlocks.colorBlueBottomLeft *= par7;
renderBlocks.colorBlueBottomRight *= par7;
renderBlocks.colorBlueTopRight *= par7;
renderBlocks.renderFaceZPos(par1Block, (double) par2, (double) par3, (double) par4, BlockGrass.getIconSideOverlay());
}
var8 = true;
}
if (renderBlocks.renderAllFaces || par1Block.shouldSideBeRendered(renderBlocks.blockAccess, par2 - 1, par3, par4, 4)) {
if (renderBlocks.renderMinX <= 0.0D) {
--par2;
}
renderBlocks.aoLightValueScratchXYNN = renderBlocks.blockAccess.getBlock(par2, par3 - 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchXZNN = renderBlocks.blockAccess.getBlock(par2, par3, par4 - 1).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchXZNP = renderBlocks.blockAccess.getBlock(par2, par3, par4 + 1).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchXYNP = renderBlocks.blockAccess.getBlock(par2, par3 + 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYNN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 - 1, par4);
renderBlocks.aoBrightnessXZNN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3, par4 - 1);
renderBlocks.aoBrightnessXZNP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3, par4 + 1);
renderBlocks.aoBrightnessXYNP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 + 1, par4);
var16 = renderBlocks.blockAccess.getBlock(par2 - 1, par3 + 1, par4).getCanBlockGrass();
var17 = renderBlocks.blockAccess.getBlock(par2 - 1, par3 - 1, par4).getCanBlockGrass();
var18 = renderBlocks.blockAccess.getBlock(par2 - 1, par3, par4 - 1).getCanBlockGrass();
var19 = renderBlocks.blockAccess.getBlock(par2 - 1, par3, par4 + 1).getCanBlockGrass();
if (!var18 && !var17) {
renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.aoLightValueScratchXZNN;
renderBlocks.aoBrightnessXYZNNN = renderBlocks.aoBrightnessXZNN;
} else {
renderBlocks.aoLightValueScratchXYZNNN = renderBlocks.blockAccess.getBlock(par2, par3 - 1, par4 - 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZNNN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 - 1, par4 - 1);
}
if (!var19 && !var17) {
renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.aoLightValueScratchXZNP;
renderBlocks.aoBrightnessXYZNNP = renderBlocks.aoBrightnessXZNP;
} else {
renderBlocks.aoLightValueScratchXYZNNP = renderBlocks.blockAccess.getBlock(par2, par3 - 1, par4 + 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZNNP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 - 1, par4 + 1);
}
if (!var18 && !var16) {
renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.aoLightValueScratchXZNN;
renderBlocks.aoBrightnessXYZNPN = renderBlocks.aoBrightnessXZNN;
} else {
renderBlocks.aoLightValueScratchXYZNPN = renderBlocks.blockAccess.getBlock(par2, par3 + 1, par4 - 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZNPN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 + 1, par4 - 1);
}
if (!var19 && !var16) {
renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.aoLightValueScratchXZNP;
renderBlocks.aoBrightnessXYZNPP = renderBlocks.aoBrightnessXZNP;
} else {
renderBlocks.aoLightValueScratchXYZNPP = renderBlocks.blockAccess.getBlock(par2, par3 + 1, par4 + 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZNPP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 + 1, par4 + 1);
}
if (renderBlocks.renderMinX <= 0.0D) {
++par2;
}
var20 = var14;
if (renderBlocks.renderMinX <= 0.0D || !renderBlocks.blockAccess.getBlock(par2 - 1, par3, par4).isOpaqueCube()) {
var20 = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 - 1, par3, par4);
}
var21 = renderBlocks.blockAccess.getBlock(par2 - 1, par3, par4).getAmbientOcclusionLightValue();
var12 = (renderBlocks.aoLightValueScratchXYNN + renderBlocks.aoLightValueScratchXYZNNP + var21 + renderBlocks.aoLightValueScratchXZNP) / 4.0F;
var9 = (var21 + renderBlocks.aoLightValueScratchXZNP + renderBlocks.aoLightValueScratchXYNP + renderBlocks.aoLightValueScratchXYZNPP) / 4.0F;
var10 = (renderBlocks.aoLightValueScratchXZNN + var21 + renderBlocks.aoLightValueScratchXYZNPN + renderBlocks.aoLightValueScratchXYNP) / 4.0F;
var11 = (renderBlocks.aoLightValueScratchXYZNNN + renderBlocks.aoLightValueScratchXYNN + renderBlocks.aoLightValueScratchXZNN + var21) / 4.0F;
// BEGIN - GlitchLights
// Calculate the basic corner brightnesses
renderBlocks.brightnessTopLeft = ((renderBlocks.aoBrightnessXYZNPP & 15728880) + (renderBlocks.aoBrightnessXZNP & 15728880) + (renderBlocks.aoBrightnessXYNP & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessBottomLeft = ((renderBlocks.aoBrightnessXYZNPN & 15728880) + (renderBlocks.aoBrightnessXZNN & 15728880) + (renderBlocks.aoBrightnessXYNP & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessBottomRight = ((renderBlocks.aoBrightnessXYZNNN & 15728880) + (renderBlocks.aoBrightnessXYNN & 15728880) + (renderBlocks.aoBrightnessXZNN & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessTopRight = ((renderBlocks.aoBrightnessXYZNNP & 15728880) + (renderBlocks.aoBrightnessXYNN & 15728880) + (renderBlocks.aoBrightnessXZNP & 15728880) + (var20 & 15728880)) >> 2;
// Calculate a basic corner color: x+ z+
renderBlocks.colorRedTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZNPP >> 4) & 240) + ((renderBlocks.aoBrightnessXZNP >> 4) & 240) + ((renderBlocks.aoBrightnessXYNP >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZNPP >> 8) & 240) + ((renderBlocks.aoBrightnessXZNP >> 8) & 240) + ((renderBlocks.aoBrightnessXYNP >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZNPP >> 12) & 240) + ((renderBlocks.aoBrightnessXZNP >> 12) & 240) + ((renderBlocks.aoBrightnessXYNP >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x+ z-
renderBlocks.colorRedBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZNPN >> 4) & 240) + ((renderBlocks.aoBrightnessXZNN >> 4) & 240) + ((renderBlocks.aoBrightnessXYNP >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZNPN >> 8) & 240) + ((renderBlocks.aoBrightnessXZNN >> 8) & 240) + ((renderBlocks.aoBrightnessXYNP >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZNPN >> 12) & 240) + ((renderBlocks.aoBrightnessXZNN >> 12) & 240) + ((renderBlocks.aoBrightnessXYNP >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x- z-
renderBlocks.colorRedBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZNNN >> 4) & 240) + ((renderBlocks.aoBrightnessXYNN >> 4) & 240) + ((renderBlocks.aoBrightnessXZNN >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZNNN >> 8) & 240) + ((renderBlocks.aoBrightnessXYNN >> 8) & 240) + ((renderBlocks.aoBrightnessXZNN >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZNNN >> 12) & 240) + ((renderBlocks.aoBrightnessXYNN >> 12) & 240) + ((renderBlocks.aoBrightnessXZNN >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x- z+
renderBlocks.colorRedTopRight = ((float) ((((renderBlocks.aoBrightnessXYZNNP >> 4) & 240) + ((renderBlocks.aoBrightnessXYNN >> 4) & 240) + ((renderBlocks.aoBrightnessXZNP >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenTopRight = ((float) ((((renderBlocks.aoBrightnessXYZNNP >> 8) & 240) + ((renderBlocks.aoBrightnessXYNN >> 8) & 240) + ((renderBlocks.aoBrightnessXZNP >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueTopRight = ((float) ((((renderBlocks.aoBrightnessXYZNNP >> 12) & 240) + ((renderBlocks.aoBrightnessXYNN >> 12) & 240) + ((renderBlocks.aoBrightnessXZNP >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// If colors are applied to any corners
if ((renderBlocks.colorRedTopLeft + renderBlocks.colorGreenTopLeft + renderBlocks.colorBlueTopLeft + renderBlocks.colorRedBottomLeft + renderBlocks.colorGreenBottomLeft + renderBlocks.colorBlueBottomLeft + renderBlocks.colorRedBottomRight + renderBlocks.colorGreenBottomRight + renderBlocks.colorBlueBottomRight + renderBlocks.colorRedTopRight + renderBlocks.colorGreenTopRight + renderBlocks.colorBlueTopRight) > 0f) {
// Calculate a rough brightness modifier for each corner color
float brightnessTopLeft = (1f - ((renderBlocks.colorRedTopLeft + renderBlocks.colorGreenTopLeft + renderBlocks.colorBlueTopLeft) / 3f)) * (((float) (240 - (renderBlocks.brightnessTopLeft & 240))) / 240f);
float brightnessBottomLeft = (1f - ((renderBlocks.colorRedBottomLeft + renderBlocks.colorGreenBottomLeft + renderBlocks.colorBlueBottomLeft) / 3f)) * (((float) (240 - (renderBlocks.brightnessBottomLeft & 240))) / 240f);
float brightnessBottomRight = (1f - ((renderBlocks.colorRedBottomRight + renderBlocks.colorGreenBottomRight + renderBlocks.colorBlueBottomRight) / 3f)) * (((float) (240 - (renderBlocks.brightnessBottomRight & 240))) / 240f);
float brightnessTopRight = (1f - ((renderBlocks.colorRedTopRight + renderBlocks.colorGreenTopRight + renderBlocks.colorBlueTopRight) / 3f)) * (((float) (240 - (renderBlocks.brightnessTopRight & 240))) / 240f);
// Finalize the corner color: x+ z+
renderBlocks.colorRedTopLeft = Math.min(1f, renderBlocks.colorRedTopLeft + brightnessTopLeft);
renderBlocks.colorGreenTopLeft = Math.min(1f, renderBlocks.colorGreenTopLeft + brightnessTopLeft);
renderBlocks.colorBlueTopLeft = Math.min(1f, renderBlocks.colorBlueTopLeft + brightnessTopLeft);
// Finalize the corner color: x+ z-
renderBlocks.colorRedBottomLeft = Math.min(1f, renderBlocks.colorRedBottomLeft + brightnessBottomLeft);
renderBlocks.colorGreenBottomLeft = Math.min(1f, renderBlocks.colorGreenBottomLeft + brightnessBottomLeft);
renderBlocks.colorBlueBottomLeft = Math.min(1f, renderBlocks.colorBlueBottomLeft + brightnessBottomLeft);
// Finalize the corner color: x- z-
renderBlocks.colorRedBottomRight = Math.min(1f, renderBlocks.colorRedBottomRight + brightnessBottomRight);
renderBlocks.colorGreenBottomRight = Math.min(1f, renderBlocks.colorGreenBottomRight + brightnessBottomRight);
renderBlocks.colorBlueBottomRight = Math.min(1f, renderBlocks.colorBlueBottomRight + brightnessBottomRight);
// Finalize the corner color: x- z+
renderBlocks.colorRedTopRight = Math.min(1f, renderBlocks.colorRedTopRight + brightnessTopRight);
renderBlocks.colorGreenTopRight = Math.min(1f, renderBlocks.colorGreenTopRight + brightnessTopRight);
renderBlocks.colorBlueTopRight = Math.min(1f, renderBlocks.colorBlueTopRight + brightnessTopRight);
}
// If no colors are applied to any of the corners
else {
// Reset the corners to white
renderBlocks.colorRedTopLeft = renderBlocks.colorGreenTopLeft = renderBlocks.colorBlueTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorGreenBottomRight = renderBlocks.colorBlueBottomRight = renderBlocks.colorRedTopRight = renderBlocks.colorGreenTopRight = renderBlocks.colorBlueTopRight = 1f;
}
// If the block color is not being overridden
if (var13) {
renderBlocks.colorRedTopLeft *= par5;
renderBlocks.colorGreenTopLeft *= par6;
renderBlocks.colorBlueTopLeft *= par7;
renderBlocks.colorRedBottomLeft *= par5;
renderBlocks.colorGreenBottomLeft *= par6;
renderBlocks.colorBlueBottomLeft *= par7;
renderBlocks.colorRedBottomRight *= par5;
renderBlocks.colorGreenBottomRight *= par6;
renderBlocks.colorBlueBottomRight *= par7;
renderBlocks.colorRedTopRight *= par5;
renderBlocks.colorGreenTopRight *= par6;
renderBlocks.colorBlueTopRight *= par7;
}
// Apply shadows next to walls and highlights next to edges
renderBlocks.colorRedTopLeft *= var9 * 0.6f;
renderBlocks.colorGreenTopLeft *= var9 * 0.6f;
renderBlocks.colorBlueTopLeft *= var9 * 0.6f;
renderBlocks.colorRedBottomLeft *= var10 * 0.6f;
renderBlocks.colorGreenBottomLeft *= var10 * 0.6f;
renderBlocks.colorBlueBottomLeft *= var10 * 0.6f;
renderBlocks.colorRedBottomRight *= var11 * 0.6f;
renderBlocks.colorGreenBottomRight *= var11 * 0.6f;
renderBlocks.colorBlueBottomRight *= var11 * 0.6f;
renderBlocks.colorRedTopRight *= var12 * 0.6f;
renderBlocks.colorGreenTopRight *= var12 * 0.6f;
renderBlocks.colorBlueTopRight *= var12 * 0.6f;
// END - GlitchLights
var22 = renderBlocks.getBlockIcon(par1Block, renderBlocks.blockAccess, par2, par3, par4, 4);
renderBlocks.renderFaceXNeg(par1Block, (double) par2, (double) par3, (double) par4, var22);
if (RenderBlocks.fancyGrass && var22.getIconName().equals("grass_side") && !renderBlocks.hasOverrideBlockTexture()) {
renderBlocks.colorRedTopLeft *= par5;
renderBlocks.colorRedBottomLeft *= par5;
renderBlocks.colorRedBottomRight *= par5;
renderBlocks.colorRedTopRight *= par5;
renderBlocks.colorGreenTopLeft *= par6;
renderBlocks.colorGreenBottomLeft *= par6;
renderBlocks.colorGreenBottomRight *= par6;
renderBlocks.colorGreenTopRight *= par6;
renderBlocks.colorBlueTopLeft *= par7;
renderBlocks.colorBlueBottomLeft *= par7;
renderBlocks.colorBlueBottomRight *= par7;
renderBlocks.colorBlueTopRight *= par7;
renderBlocks.renderFaceXNeg(par1Block, (double) par2, (double) par3, (double) par4, BlockGrass.getIconSideOverlay());
}
var8 = true;
}
//XXX+1
if (renderBlocks.renderAllFaces || par1Block.shouldSideBeRendered(renderBlocks.blockAccess, par2 + 1, par3, par4, 5)) {
if (renderBlocks.renderMaxX >= 1.0D) {
++par2;
}
renderBlocks.aoLightValueScratchXYPN = renderBlocks.blockAccess.getBlock(par2, par3 - 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchXZPN = renderBlocks.blockAccess.getBlock(par2, par3, par4 - 1).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchXZPP = renderBlocks.blockAccess.getBlock(par2, par3, par4 + 1).getAmbientOcclusionLightValue();
renderBlocks.aoLightValueScratchXYPP = renderBlocks.blockAccess.getBlock(par2, par3 + 1, par4).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYPN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 - 1, par4);
renderBlocks.aoBrightnessXZPN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3, par4 - 1);
renderBlocks.aoBrightnessXZPP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3, par4 + 1);
renderBlocks.aoBrightnessXYPP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 + 1, par4);
var16 = renderBlocks.blockAccess.getBlock(par2 + 1, par3 + 1, par4).getCanBlockGrass();
var17 = renderBlocks.blockAccess.getBlock(par2 + 1, par3 - 1, par4).getCanBlockGrass();
var18 = renderBlocks.blockAccess.getBlock(par2 + 1, par3, par4 + 1).getCanBlockGrass();
var19 = renderBlocks.blockAccess.getBlock(par2 + 1, par3, par4 - 1).getCanBlockGrass();
if (!var17 && !var19) {
renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.aoLightValueScratchXZPN;
renderBlocks.aoBrightnessXYZPNN = renderBlocks.aoBrightnessXZPN;
} else {
renderBlocks.aoLightValueScratchXYZPNN = renderBlocks.blockAccess.getBlock(par2, par3 - 1, par4 - 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZPNN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 - 1, par4 - 1);
}
if (!var17 && !var18) {
renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.aoLightValueScratchXZPP;
renderBlocks.aoBrightnessXYZPNP = renderBlocks.aoBrightnessXZPP;
} else {
renderBlocks.aoLightValueScratchXYZPNP = renderBlocks.blockAccess.getBlock(par2, par3 - 1, par4 + 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZPNP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 - 1, par4 + 1);
}
if (!var16 && !var19) {
renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.aoLightValueScratchXZPN;
renderBlocks.aoBrightnessXYZPPN = renderBlocks.aoBrightnessXZPN;
} else {
renderBlocks.aoLightValueScratchXYZPPN = renderBlocks.blockAccess.getBlock(par2, par3 + 1, par4 - 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZPPN = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 + 1, par4 - 1);
}
if (!var16 && !var18) {
renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.aoLightValueScratchXZPP;
renderBlocks.aoBrightnessXYZPPP = renderBlocks.aoBrightnessXZPP;
} else {
renderBlocks.aoLightValueScratchXYZPPP = renderBlocks.blockAccess.getBlock(par2, par3 + 1, par4 + 1).getAmbientOcclusionLightValue();
renderBlocks.aoBrightnessXYZPPP = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2, par3 + 1, par4 + 1);
}
if (renderBlocks.renderMaxX >= 1.0D) {
--par2;
}
var20 = var14;
if (renderBlocks.renderMaxX >= 1.0D || !renderBlocks.blockAccess.getBlock(par2 + 1, par3, par4).isOpaqueCube()) {
var20 = CLBlockHelper.getMixedBrightnessForBlockWithColor(renderBlocks.blockAccess, par2 + 1, par3, par4);
}
var21 = renderBlocks.blockAccess.getBlock(par2 + 1, par3, par4).getAmbientOcclusionLightValue();
var9 = (renderBlocks.aoLightValueScratchXYPN + renderBlocks.aoLightValueScratchXYZPNP + var21 + renderBlocks.aoLightValueScratchXZPP) / 4.0F;
var10 = (renderBlocks.aoLightValueScratchXYZPNN + renderBlocks.aoLightValueScratchXYPN + renderBlocks.aoLightValueScratchXZPN + var21) / 4.0F;
var11 = (renderBlocks.aoLightValueScratchXZPN + var21 + renderBlocks.aoLightValueScratchXYZPPN + renderBlocks.aoLightValueScratchXYPP) / 4.0F;
var12 = (var21 + renderBlocks.aoLightValueScratchXZPP + renderBlocks.aoLightValueScratchXYPP + renderBlocks.aoLightValueScratchXYZPPP) / 4.0F;
// BEGIN - GlitchLights
// Calculate the basic corner brightnesses
renderBlocks.brightnessTopLeft = ((renderBlocks.aoBrightnessXYZPNP & 15728880) + (renderBlocks.aoBrightnessXYPN & 15728880) + (renderBlocks.aoBrightnessXZPP & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessBottomLeft = ((renderBlocks.aoBrightnessXYZPNN & 15728880) + (renderBlocks.aoBrightnessXYPN & 15728880) + (renderBlocks.aoBrightnessXZPN & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessBottomRight = ((renderBlocks.aoBrightnessXYZPPN & 15728880) + (renderBlocks.aoBrightnessXZPN & 15728880) + (renderBlocks.aoBrightnessXYPP & 15728880) + (var20 & 15728880)) >> 2;
renderBlocks.brightnessTopRight = ((renderBlocks.aoBrightnessXYZPPP & 15728880) + (renderBlocks.aoBrightnessXZPP & 15728880) + (renderBlocks.aoBrightnessXYPP & 15728880) + (var20 & 15728880)) >> 2;
// Calculate a basic corner color: x+ z+
renderBlocks.colorRedTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZPNP >> 4) & 240) + ((renderBlocks.aoBrightnessXYPN >> 4) & 240) + ((renderBlocks.aoBrightnessXZPP >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZPNP >> 8) & 240) + ((renderBlocks.aoBrightnessXYPN >> 8) & 240) + ((renderBlocks.aoBrightnessXZPP >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueTopLeft = ((float) ((((renderBlocks.aoBrightnessXYZPNP >> 12) & 240) + ((renderBlocks.aoBrightnessXYPN >> 12) & 240) + ((renderBlocks.aoBrightnessXZPP >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x+ z-
renderBlocks.colorRedBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZPNN >> 4) & 240) + ((renderBlocks.aoBrightnessXYPN >> 4) & 240) + ((renderBlocks.aoBrightnessXZPN >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZPNN >> 8) & 240) + ((renderBlocks.aoBrightnessXYPN >> 8) & 240) + ((renderBlocks.aoBrightnessXZPN >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueBottomLeft = ((float) ((((renderBlocks.aoBrightnessXYZPNN >> 12) & 240) + ((renderBlocks.aoBrightnessXYPN >> 12) & 240) + ((renderBlocks.aoBrightnessXZPN >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x- z-
renderBlocks.colorRedBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZPPN >> 4) & 240) + ((renderBlocks.aoBrightnessXZPN >> 4) & 240) + ((renderBlocks.aoBrightnessXYPP >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZPPN >> 8) & 240) + ((renderBlocks.aoBrightnessXZPN >> 8) & 240) + ((renderBlocks.aoBrightnessXYPP >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueBottomRight = ((float) ((((renderBlocks.aoBrightnessXYZPPN >> 12) & 240) + ((renderBlocks.aoBrightnessXZPN >> 12) & 240) + ((renderBlocks.aoBrightnessXYPP >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// Calculate a basic corner color: x- z+
renderBlocks.colorRedTopRight = ((float) ((((renderBlocks.aoBrightnessXYZPPP >> 4) & 240) + ((renderBlocks.aoBrightnessXZPP >> 4) & 240) + ((renderBlocks.aoBrightnessXYPP >> 4) & 240) + ((var20 >> 4) & 240)) >> 2) / 240f);
renderBlocks.colorGreenTopRight = ((float) ((((renderBlocks.aoBrightnessXYZPPP >> 8) & 240) + ((renderBlocks.aoBrightnessXZPP >> 8) & 240) + ((renderBlocks.aoBrightnessXYPP >> 8) & 240) + ((var20 >> 8) & 240)) >> 2) / 240f);
renderBlocks.colorBlueTopRight = ((float) ((((renderBlocks.aoBrightnessXYZPPP >> 12) & 240) + ((renderBlocks.aoBrightnessXZPP >> 12) & 240) + ((renderBlocks.aoBrightnessXYPP >> 12) & 240) + ((var20 >> 12) & 240)) >> 2) / 240f);
// If colors are applied to any corners
if ((renderBlocks.colorRedTopLeft + renderBlocks.colorGreenTopLeft + renderBlocks.colorBlueTopLeft + renderBlocks.colorRedBottomLeft + renderBlocks.colorGreenBottomLeft + renderBlocks.colorBlueBottomLeft + renderBlocks.colorRedBottomRight + renderBlocks.colorGreenBottomRight + renderBlocks.colorBlueBottomRight + renderBlocks.colorRedTopRight + renderBlocks.colorGreenTopRight + renderBlocks.colorBlueTopRight) > 0f) {
// Calculate a rough brightness modifier for each corner color
float brightnessTopLeft = (1f - ((renderBlocks.colorRedTopLeft + renderBlocks.colorGreenTopLeft + renderBlocks.colorBlueTopLeft) / 3f)) * (((float) (240 - (renderBlocks.brightnessTopLeft & 240))) / 240f);
float brightnessBottomLeft = (1f - ((renderBlocks.colorRedBottomLeft + renderBlocks.colorGreenBottomLeft + renderBlocks.colorBlueBottomLeft) / 3f)) * (((float) (240 - (renderBlocks.brightnessBottomLeft & 240))) / 240f);
float brightnessBottomRight = (1f - ((renderBlocks.colorRedBottomRight + renderBlocks.colorGreenBottomRight + renderBlocks.colorBlueBottomRight) / 3f)) * (((float) (240 - (renderBlocks.brightnessBottomRight & 240))) / 240f);
float brightnessTopRight = (1f - ((renderBlocks.colorRedTopRight + renderBlocks.colorGreenTopRight + renderBlocks.colorBlueTopRight) / 3f)) * (((float) (240 - (renderBlocks.brightnessTopRight & 240))) / 240f);
// Finalize the corner color: x+ z+
renderBlocks.colorRedTopLeft = Math.min(1f, renderBlocks.colorRedTopLeft + brightnessTopLeft);
renderBlocks.colorGreenTopLeft = Math.min(1f, renderBlocks.colorGreenTopLeft + brightnessTopLeft);
renderBlocks.colorBlueTopLeft = Math.min(1f, renderBlocks.colorBlueTopLeft + brightnessTopLeft);
// Finalize the corner color: x+ z-
renderBlocks.colorRedBottomLeft = Math.min(1f, renderBlocks.colorRedBottomLeft + brightnessBottomLeft);
renderBlocks.colorGreenBottomLeft = Math.min(1f, renderBlocks.colorGreenBottomLeft + brightnessBottomLeft);
renderBlocks.colorBlueBottomLeft = Math.min(1f, renderBlocks.colorBlueBottomLeft + brightnessBottomLeft);
// Finalize the corner color: x- z-
renderBlocks.colorRedBottomRight = Math.min(1f, renderBlocks.colorRedBottomRight + brightnessBottomRight);
renderBlocks.colorGreenBottomRight = Math.min(1f, renderBlocks.colorGreenBottomRight + brightnessBottomRight);
renderBlocks.colorBlueBottomRight = Math.min(1f, renderBlocks.colorBlueBottomRight + brightnessBottomRight);
// Finalize the corner color: x- z+
renderBlocks.colorRedTopRight = Math.min(1f, renderBlocks.colorRedTopRight + brightnessTopRight);
renderBlocks.colorGreenTopRight = Math.min(1f, renderBlocks.colorGreenTopRight + brightnessTopRight);
renderBlocks.colorBlueTopRight = Math.min(1f, renderBlocks.colorBlueTopRight + brightnessTopRight);
}
// If no colors are applied to any of the corners
else {
// Reset the corners to white
renderBlocks.colorRedTopLeft = renderBlocks.colorGreenTopLeft = renderBlocks.colorBlueTopLeft = renderBlocks.colorRedBottomLeft = renderBlocks.colorGreenBottomLeft = renderBlocks.colorBlueBottomLeft = renderBlocks.colorRedBottomRight = renderBlocks.colorGreenBottomRight = renderBlocks.colorBlueBottomRight = renderBlocks.colorRedTopRight = renderBlocks.colorGreenTopRight = renderBlocks.colorBlueTopRight = 1f;
}
// If the block color is not being overridden
if (var13) {
renderBlocks.colorRedTopLeft *= par5;
renderBlocks.colorGreenTopLeft *= par6;
renderBlocks.colorBlueTopLeft *= par7;
renderBlocks.colorRedBottomLeft *= par5;
renderBlocks.colorGreenBottomLeft *= par6;
renderBlocks.colorBlueBottomLeft *= par7;
renderBlocks.colorRedBottomRight *= par5;
renderBlocks.colorGreenBottomRight *= par6;
renderBlocks.colorBlueBottomRight *= par7;
renderBlocks.colorRedTopRight *= par5;
renderBlocks.colorGreenTopRight *= par6;
renderBlocks.colorBlueTopRight *= par7;
}
// Apply shadows next to walls and highlights next to edges
renderBlocks.colorRedTopLeft *= var9 * 0.6f;
renderBlocks.colorGreenTopLeft *= var9 * 0.6f;
renderBlocks.colorBlueTopLeft *= var9 * 0.6f;
renderBlocks.colorRedBottomLeft *= var10 * 0.6f;
renderBlocks.colorGreenBottomLeft *= var10 * 0.6f;
renderBlocks.colorBlueBottomLeft *= var10 * 0.6f;
renderBlocks.colorRedBottomRight *= var11 * 0.6f;
renderBlocks.colorGreenBottomRight *= var11 * 0.6f;
renderBlocks.colorBlueBottomRight *= var11 * 0.6f;
renderBlocks.colorRedTopRight *= var12 * 0.6f;
renderBlocks.colorGreenTopRight *= var12 * 0.6f;
renderBlocks.colorBlueTopRight *= var12 * 0.6f;
// END - GlitchLights
var22 = renderBlocks.getBlockIcon(par1Block, renderBlocks.blockAccess, par2, par3, par4, 5);
renderBlocks.renderFaceXPos(par1Block, (double) par2, (double) par3, (double) par4, var22);
if (RenderBlocks.fancyGrass && var22.getIconName().equals("grass_side") && !renderBlocks.hasOverrideBlockTexture()) {
renderBlocks.colorRedTopLeft *= par5;
renderBlocks.colorRedBottomLeft *= par5;
renderBlocks.colorRedBottomRight *= par5;
renderBlocks.colorRedTopRight *= par5;
renderBlocks.colorGreenTopLeft *= par6;
renderBlocks.colorGreenBottomLeft *= par6;
renderBlocks.colorGreenBottomRight *= par6;
renderBlocks.colorGreenTopRight *= par6;
renderBlocks.colorBlueTopLeft *= par7;
renderBlocks.colorBlueBottomLeft *= par7;
renderBlocks.colorBlueBottomRight *= par7;
renderBlocks.colorBlueTopRight *= par7;
renderBlocks.renderFaceXPos(par1Block, (double) par2, (double) par3, (double) par4, BlockGrass.getIconSideOverlay());
}
var8 = true;
}
renderBlocks.enableAO = false;
return var8;
}
/**
* Renders a standard cube block at the given coordinates, with a given color ratio. Args: block, x, y, z, r, g, b
* <p/>
* Accepts and tints blocks according to their colored light value
* CptSpaceToaster
* <p/>
* 03-05-2014 heaton84 - Ported to helper method, refactored to match 1.7.2 architecture
*/
public static boolean renderStandardBlockWithColorMultiplier(RenderBlocks instance, Block par1Block, int par2X, int par3Y, int par4Z, float par5R, float par6G, float par7B) {
instance.enableAO = false;
Tessellator tessellator = Tessellator.instance;
boolean flag = false;
float f3 = 0.5F;
float f4 = 1.0F;
float f5 = 0.8F;
float f6 = 0.6F;
float f7 = f4 * par5R;
float f8 = f4 * par6G;
float f9 = f4 * par7B;
float f10 = f3;
float f11 = f5;
float f12 = f6;
float f13 = f3;
float f14 = f5;
float f15 = f6;
float f16 = f3;
float f17 = f5;
float f18 = f6;
IIcon blockIcon;
if (par1Block != Blocks.grass) {
f10 = f3 * par5R;
f11 = f5 * par5R;
f12 = f6 * par5R;
f13 = f3 * par6G;
f14 = f5 * par6G;
f15 = f6 * par6G;
f16 = f3 * par7B;
f17 = f5 * par7B;
f18 = f6 * par7B;
}
int l = CLBlockHelper.getMixedBrightnessForBlockWithColor(instance.blockAccess, par2X, par3Y, par4Z);
if (instance.renderAllFaces || par1Block.shouldSideBeRendered(instance.blockAccess, par2X, par3Y - 1, par4Z, 0)) {
int i = instance.renderMinY > 0.0D ? l : CLBlockHelper.getMixedBrightnessForBlockWithColor(instance.blockAccess, par2X, par3Y - 1, par4Z);
float rc = 1;
float gc = 1;
float bc = 1;
float lc;
if ((i & 1048320) > 0) {
lc = 1f - (i & 240) / 240f;
rc = (i & 3840) / 3840f;
gc = (i & 61440) / 61440f;
bc = (i & 983040) / 983040f;
rc = (rc + lc > 1) ? 1 : rc + lc;
gc = (gc + lc > 1) ? 1 : gc + lc;
bc = (bc + lc > 1) ? 1 : bc + lc;
}
tessellator.setBrightness(i);
tessellator.setColorOpaque_F(f10 * rc, f13 * gc, f16 * bc);
instance.renderFaceYNeg(par1Block, (double) par2X, (double) par3Y, (double) par4Z, instance.getBlockIcon(par1Block, instance.blockAccess, par2X, par3Y, par4Z, 0));
flag = true;
}
if (instance.renderAllFaces || par1Block.shouldSideBeRendered(instance.blockAccess, par2X, par3Y + 1, par4Z, 1)) {
int i = instance.renderMaxY < 1.0D ? l : CLBlockHelper.getMixedBrightnessForBlockWithColor(instance.blockAccess, par2X, par3Y + 1, par4Z);
float rc = 1;
float gc = 1;
float bc = 1;
float lc;
if ((i & 1048320) > 0) {
lc = 1f - (i & 240) / 240f;
rc = (i & 3840) / 3840f;
gc = (i & 61440) / 61440f;
bc = (i & 983040) / 983040f;
rc = (rc + lc > 1) ? 1 : rc + lc;
gc = (gc + lc > 1) ? 1 : gc + lc;
bc = (bc + lc > 1) ? 1 : bc + lc;
}
tessellator.setBrightness(i);
tessellator.setColorOpaque_F(f7 * rc, f8 * gc, f9 * bc);
instance.renderFaceYPos(par1Block, (double) par2X, (double) par3Y, (double) par4Z, instance.getBlockIcon(par1Block, instance.blockAccess, par2X, par3Y, par4Z, 1));
flag = true;
}
if (instance.renderAllFaces || par1Block.shouldSideBeRendered(instance.blockAccess, par2X, par3Y, par4Z - 1, 2)) {
int i = instance.renderMinZ > 0.0D ? l : CLBlockHelper.getMixedBrightnessForBlockWithColor(instance.blockAccess, par2X, par3Y, par4Z - 1);
float rc = 1;
float gc = 1;
float bc = 1;
float lc;
if ((i & 1048320) > 0) {
lc = 1f - (i & 240) / 240f;
rc = (i & 3840) / 3840f;
gc = (i & 61440) / 61440f;
bc = (i & 983040) / 983040f;
rc = (rc + lc > 1) ? 1 : rc + lc;
gc = (gc + lc > 1) ? 1 : gc + lc;
bc = (bc + lc > 1) ? 1 : bc + lc;
}
tessellator.setBrightness(i);
tessellator.setColorOpaque_F(f11 * rc, f14 * gc, f17 * bc);
blockIcon = instance.getBlockIcon(par1Block, instance.blockAccess, par2X, par3Y, par4Z, 2);
instance.renderFaceZNeg(par1Block, (double) par2X, (double) par3Y, (double) par4Z, blockIcon);
if (RenderBlocks.fancyGrass && blockIcon.getIconName().equals("grass_side") && !instance.hasOverrideBlockTexture()) {
tessellator.setColorOpaque_F(f11 * par5R * rc, f14 * par6G * gc, f17 * par7B * bc);
instance.renderFaceZNeg(par1Block, (double) par2X, (double) par3Y, (double) par4Z, BlockGrass.getIconSideOverlay());
}
flag = true;
}
if (instance.renderAllFaces || par1Block.shouldSideBeRendered(instance.blockAccess, par2X, par3Y, par4Z + 1, 3)) {
int i = instance.renderMaxZ < 1.0D ? l : CLBlockHelper.getMixedBrightnessForBlockWithColor(instance.blockAccess, par2X, par3Y, par4Z + 1);
float rc = 1;
float gc = 1;
float bc = 1;
float lc;
if ((i & 1048320) > 0) {
lc = 1f - (i & 240) / 240f;
rc = (i & 3840) / 3840f;
gc = (i & 61440) / 61440f;
bc = (i & 983040) / 983040f;
rc = (rc + lc > 1) ? 1 : rc + lc;
gc = (gc + lc > 1) ? 1 : gc + lc;
bc = (bc + lc > 1) ? 1 : bc + lc;
}
tessellator.setBrightness(i);
tessellator.setColorOpaque_F(f11 * rc, f14 * gc, f17 * bc);
blockIcon = instance.getBlockIcon(par1Block, instance.blockAccess, par2X, par3Y, par4Z, 3);
instance.renderFaceZPos(par1Block, (double) par2X, (double) par3Y, (double) par4Z, blockIcon);
if (RenderBlocks.fancyGrass && blockIcon.getIconName().equals("grass_side") && !instance.hasOverrideBlockTexture()) {
tessellator.setColorOpaque_F(f11 * par5R * rc, f14 * par6G * gc, f17 * par7B * bc);
instance.renderFaceZPos(par1Block, (double) par2X, (double) par3Y, (double) par4Z, BlockGrass.getIconSideOverlay());
}
flag = true;
}
if (instance.renderAllFaces || par1Block.shouldSideBeRendered(instance.blockAccess, par2X - 1, par3Y, par4Z, 4)) {
int i = instance.renderMinX > 0.0D ? l : CLBlockHelper.getMixedBrightnessForBlockWithColor(instance.blockAccess, par2X - 1, par3Y, par4Z);
float rc = 1;
float gc = 1;
float bc = 1;
float lc;
if ((i & 1048320) > 0) {
lc = 1f - (i & 240) / 240f;
rc = (i & 3840) / 3840f;
gc = (i & 61440) / 61440f;
bc = (i & 983040) / 983040f;
rc = (rc + lc > 1) ? 1 : rc + lc;
gc = (gc + lc > 1) ? 1 : gc + lc;
bc = (bc + lc > 1) ? 1 : bc + lc;
}
tessellator.setBrightness(i);
tessellator.setColorOpaque_F(f12 * rc, f15 * gc, f18 * bc);
blockIcon = instance.getBlockIcon(par1Block, instance.blockAccess, par2X, par3Y, par4Z, 4);
instance.renderFaceXNeg(par1Block, (double) par2X, (double) par3Y, (double) par4Z, blockIcon);
if (RenderBlocks.fancyGrass && blockIcon.getIconName().equals("grass_side") && !instance.hasOverrideBlockTexture()) {
tessellator.setColorOpaque_F(f12 * par5R * rc, f15 * par6G * gc, f18 * par7B * bc);
instance.renderFaceXNeg(par1Block, (double) par2X, (double) par3Y, (double) par4Z, BlockGrass.getIconSideOverlay());
}
flag = true;
}
if (instance.renderAllFaces || par1Block.shouldSideBeRendered(instance.blockAccess, par2X + 1, par3Y, par4Z, 5)) {
int i = instance.renderMaxX < 1.0D ? l : CLBlockHelper.getMixedBrightnessForBlockWithColor(instance.blockAccess, par2X + 1, par3Y, par4Z);
float rc = 1;
float gc = 1;
float bc = 1;
float lc;
if ((i & 1048320) > 0) {
lc = 1f - (i & 240) / 240f;
rc = (i & 3840) / 3840f;
gc = (i & 61440) / 61440f;
bc = (i & 983040) / 983040f;
rc = (rc + lc > 1) ? 1 : rc + lc;
gc = (gc + lc > 1) ? 1 : gc + lc;
bc = (bc + lc > 1) ? 1 : bc + lc;
}
tessellator.setBrightness(i);
tessellator.setColorOpaque_F(f12 * rc, f15 * gc, f18 * bc);
blockIcon = instance.getBlockIcon(par1Block, instance.blockAccess, par2X, par3Y, par4Z, 5);
instance.renderFaceXPos(par1Block, (double) par2X, (double) par3Y, (double) par4Z, blockIcon);
if (RenderBlocks.fancyGrass && blockIcon.getIconName().equals("grass_side") && !instance.hasOverrideBlockTexture()) {
tessellator.setColorOpaque_F(f12 * par5R * rc, f15 * par6G * gc, f18 * par7B * bc);
instance.renderFaceXPos(par1Block, (double) par2X, (double) par3Y, (double) par4Z, BlockGrass.getIconSideOverlay());
}
flag = true;
}
return flag;
}
}