Search in sources :

Example 1 with Icon

use of net.minecraft.util.Icon in project MineFactoryReloaded by powercrystals.

the class RenderBlocksInverted method renderStandardBlockWithColorMultiplier.

/**
	 * Renders a standard cube block at the given coordinates, with a given
	 * color ratio. Args: block, x, y, z, r, g, b
	 */
public boolean renderStandardBlockWithColorMultiplier(RenderBlocks renderer, Block par1Block, int par2, int par3, int par4, float par5, float par6, float par7) {
    renderer.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 * par5;
    float f8 = f4 * par6;
    float f9 = f4 * par7;
    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;
    if (par1Block != Block.grass) {
        f10 = f3 * par5;
        f11 = f5 * par5;
        f12 = f6 * par5;
        f13 = f3 * par6;
        f14 = f5 * par6;
        f15 = f6 * par6;
        f16 = f3 * par7;
        f17 = f5 * par7;
        f18 = f6 * par7;
    }
    int l = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3, par4);
    if (renderer.renderAllFaces || par1Block.shouldSideBeRendered(renderer.blockAccess, par2, par3 - 1, par4, 0)) {
        tessellator.setBrightness(renderer.renderMinY > 0.0D ? l : par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 - 1, par4));
        tessellator.setColorOpaque_F(f10, f13, f16);
        this.renderBottomFace(renderer, par1Block, par2, par3, par4, renderer.getBlockIcon(par1Block, renderer.blockAccess, par2, par3, par4, 0));
        flag = true;
    }
    if (renderer.renderAllFaces || par1Block.shouldSideBeRendered(renderer.blockAccess, par2, par3 + 1, par4, 1)) {
        tessellator.setBrightness(renderer.renderMaxY < 1.0D ? l : par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 + 1, par4));
        tessellator.setColorOpaque_F(f7, f8, f9);
        this.renderTopFace(renderer, par1Block, par2, par3, par4, renderer.getBlockIcon(par1Block, renderer.blockAccess, par2, par3, par4, 1));
        flag = true;
    }
    Icon icon;
    if (renderer.renderAllFaces || par1Block.shouldSideBeRendered(renderer.blockAccess, par2, par3, par4 - 1, 2)) {
        tessellator.setBrightness(renderer.renderMinZ > 0.0D ? l : par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3, par4 - 1));
        tessellator.setColorOpaque_F(f11, f14, f17);
        icon = renderer.getBlockIcon(par1Block, renderer.blockAccess, par2, par3, par4, 2);
        this.renderEastFace(renderer, par1Block, par2, par3, par4, icon);
        if (RenderBlocks.fancyGrass && icon.getIconName().equals("grass_side") && !renderer.hasOverrideBlockTexture()) {
            tessellator.setColorOpaque_F(f11 * par5, f14 * par6, f17 * par7);
            this.renderEastFace(renderer, par1Block, par2, par3, par4, BlockGrass.getIconSideOverlay());
        }
        flag = true;
    }
    if (renderer.renderAllFaces || par1Block.shouldSideBeRendered(renderer.blockAccess, par2, par3, par4 + 1, 3)) {
        tessellator.setBrightness(renderer.renderMaxZ < 1.0D ? l : par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3, par4 + 1));
        tessellator.setColorOpaque_F(f11, f14, f17);
        icon = renderer.getBlockIcon(par1Block, renderer.blockAccess, par2, par3, par4, 3);
        this.renderWestFace(renderer, par1Block, par2, par3, par4, icon);
        if (RenderBlocks.fancyGrass && icon.getIconName().equals("grass_side") && !renderer.hasOverrideBlockTexture()) {
            tessellator.setColorOpaque_F(f11 * par5, f14 * par6, f17 * par7);
            this.renderWestFace(renderer, par1Block, par2, par3, par4, BlockGrass.getIconSideOverlay());
        }
        flag = true;
    }
    if (renderer.renderAllFaces || par1Block.shouldSideBeRendered(renderer.blockAccess, par2 - 1, par3, par4, 4)) {
        tessellator.setBrightness(renderer.renderMinX > 0.0D ? l : par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 - 1, par3, par4));
        tessellator.setColorOpaque_F(f12, f15, f18);
        icon = renderer.getBlockIcon(par1Block, renderer.blockAccess, par2, par3, par4, 4);
        this.renderNorthFace(renderer, par1Block, par2, par3, par4, icon);
        if (RenderBlocks.fancyGrass && icon.getIconName().equals("grass_side") && !renderer.hasOverrideBlockTexture()) {
            tessellator.setColorOpaque_F(f12 * par5, f15 * par6, f18 * par7);
            this.renderNorthFace(renderer, par1Block, par2, par3, par4, BlockGrass.getIconSideOverlay());
        }
        flag = true;
    }
    if (renderer.renderAllFaces || par1Block.shouldSideBeRendered(renderer.blockAccess, par2 + 1, par3, par4, 5)) {
        tessellator.setBrightness(renderer.renderMaxX < 1.0D ? l : par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 + 1, par3, par4));
        tessellator.setColorOpaque_F(f12, f15, f18);
        icon = renderer.getBlockIcon(par1Block, renderer.blockAccess, par2, par3, par4, 5);
        this.renderSouthFace(renderer, par1Block, par2, par3, par4, icon);
        if (RenderBlocks.fancyGrass && icon.getIconName().equals("grass_side") && !renderer.hasOverrideBlockTexture()) {
            tessellator.setColorOpaque_F(f12 * par5, f15 * par6, f18 * par7);
            this.renderSouthFace(renderer, par1Block, par2, par3, par4, BlockGrass.getIconSideOverlay());
        }
        flag = true;
    }
    return flag;
}
Also used : Tessellator(net.minecraft.client.renderer.Tessellator) Icon(net.minecraft.util.Icon)

Example 2 with Icon

use of net.minecraft.util.Icon in project MineFactoryReloaded by powercrystals.

the class FactoryGlassPaneRenderer method renderInventoryBlock.

@Override
public void renderInventoryBlock(Block tile, int metadata, int modelID, RenderBlocks renderer) {
    BlockFactoryGlassPane block = (BlockFactoryGlassPane) tile;
    Tessellator tessellator = Tessellator.instance;
    int color = block.getRenderColor(metadata);
    float red = (color >> 16 & 255) / 255.0F;
    float green = (color >> 8 & 255) / 255.0F;
    float blue = (color & 255) / 255.0F;
    if (EntityRenderer.anaglyphEnable) {
        float anaglyphRed = (red * 30.0F + green * 59.0F + blue * 11.0F) / 100.0F;
        float anaglyphGreen = (red * 30.0F + green * 70.0F) / 100.0F;
        float anaglyphBlue = (red * 30.0F + blue * 70.0F) / 100.0F;
        red = anaglyphRed;
        green = anaglyphGreen;
        blue = anaglyphBlue;
    }
    Icon iconGlass, iconStreaks, iconSide, iconOverlay;
    iconGlass = block.getIcon(0, metadata);
    iconStreaks = block.getIcon(0, 16 | metadata);
    iconSide = block.getSideTextureIndex();
    iconOverlay = block.getBlockOverlayTexture();
    double minXGlass = iconGlass.getMinU();
    double maxXGlass = iconGlass.getMaxU();
    double minYGlass = iconGlass.getMinV();
    double maxYGlass = iconGlass.getMaxV();
    double minXStreaks = iconStreaks.getMinU();
    double maxXStreaks = iconStreaks.getMaxU();
    double minYStreaks = iconStreaks.getMinV();
    double maxYStreaks = iconStreaks.getMaxV();
    double minXSide = iconSide.getInterpolatedU(7.0D);
    double maxXSide = iconSide.getInterpolatedU(9.0D);
    double minYSide = iconSide.getMinV();
    double maxYSide = iconSide.getMaxV();
    double minXOverlay = iconOverlay.getMinU();
    double maxXOverlay = iconOverlay.getMaxU();
    double minYOverlay = iconOverlay.getMinV();
    double maxYOverlay = iconOverlay.getMaxV();
    double offset = 0.001D;
    double xMin = 0, xMax = 1;
    double yMin = 0, yMax = 1;
    double zMid = 0.5;
    double negSideXOffset = zMid - 0.0625D;
    double posSideXOffset = zMid + 0.0625D;
    GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
    tessellator.startDrawingQuads();
    tessellator.setColorOpaque_F(red, green, blue);
    tessellator.addVertexWithUV(xMin, yMax, zMid, minXGlass, minYGlass);
    tessellator.addVertexWithUV(xMin, yMin, zMid, minXGlass, maxYGlass);
    tessellator.addVertexWithUV(xMax, yMin, zMid, maxXGlass, maxYGlass);
    tessellator.addVertexWithUV(xMax, yMax, zMid, maxXGlass, minYGlass);
    tessellator.setColorOpaque_F(1, 1, 1);
    tessellator.addVertexWithUV(xMin, yMax, zMid, minXStreaks, minYStreaks);
    tessellator.addVertexWithUV(xMin, yMin, zMid, minXStreaks, maxYStreaks);
    tessellator.addVertexWithUV(xMax, yMin, zMid, maxXStreaks, maxYStreaks);
    tessellator.addVertexWithUV(xMax, yMax, zMid, maxXStreaks, minYStreaks);
    tessellator.addVertexWithUV(xMin, yMax, zMid, minXOverlay, minYOverlay);
    tessellator.addVertexWithUV(xMin, yMin, zMid, minXOverlay, maxYOverlay);
    tessellator.addVertexWithUV(xMax, yMin, zMid, maxXOverlay, maxYOverlay);
    tessellator.addVertexWithUV(xMax, yMax, zMid, maxXOverlay, minYOverlay);
    tessellator.draw();
    tessellator.startDrawingQuads();
    tessellator.setColorOpaque_F(1, 1, 1);
    tessellator.addVertexWithUV(xMin, yMax, negSideXOffset, minXSide, minYSide);
    tessellator.addVertexWithUV(xMin, yMin, negSideXOffset, minXSide, maxYSide);
    tessellator.addVertexWithUV(xMin, yMin, posSideXOffset, maxXSide, maxYSide);
    tessellator.addVertexWithUV(xMin, yMax, posSideXOffset, maxXSide, minYSide);
    tessellator.draw();
    tessellator.startDrawingQuads();
    tessellator.setColorOpaque_F(1, 1, 1);
    tessellator.addVertexWithUV(xMax, yMax, negSideXOffset, minXSide, minYSide);
    tessellator.addVertexWithUV(xMax, yMin, negSideXOffset, minXSide, maxYSide);
    tessellator.addVertexWithUV(xMax, yMin, posSideXOffset, maxXSide, maxYSide);
    tessellator.addVertexWithUV(xMax, yMax, posSideXOffset, maxXSide, minYSide);
    tessellator.draw();
    tessellator.startDrawingQuads();
    tessellator.setColorOpaque_F(1, 1, 1);
    tessellator.addVertexWithUV(xMin, yMax + offset, posSideXOffset, maxXSide, maxYSide);
    tessellator.addVertexWithUV(xMax, yMax + offset, posSideXOffset, maxXSide, minYSide);
    tessellator.addVertexWithUV(xMax, yMax + offset, negSideXOffset, minXSide, minYSide);
    tessellator.addVertexWithUV(xMin, yMax + offset, negSideXOffset, minXSide, maxYSide);
    tessellator.draw();
    tessellator.startDrawingQuads();
    tessellator.setColorOpaque_F(1, 1, 1);
    tessellator.addVertexWithUV(xMin, yMin - offset, posSideXOffset, maxXSide, maxYSide);
    tessellator.addVertexWithUV(xMax, yMin - offset, posSideXOffset, maxXSide, minYSide);
    tessellator.addVertexWithUV(xMax, yMin - offset, negSideXOffset, minXSide, minYSide);
    tessellator.addVertexWithUV(xMin, yMin - offset, negSideXOffset, minXSide, maxYSide);
    tessellator.draw();
    GL11.glTranslatef(0.5F, 0.5F, 0.5F);
}
Also used : Tessellator(net.minecraft.client.renderer.Tessellator) BlockFactoryGlassPane(powercrystals.minefactoryreloaded.block.BlockFactoryGlassPane) Icon(net.minecraft.util.Icon)

Example 3 with Icon

use of net.minecraft.util.Icon in project MineFactoryReloaded by powercrystals.

the class FactoryGlassPaneRenderer method renderWorldBlock.

@Override
public boolean renderWorldBlock(IBlockAccess blockAccess, int x, int y, int z, Block tile, int modelId, RenderBlocks renderer) {
    BlockFactoryGlassPane block = (BlockFactoryGlassPane) tile;
    int worldHeight = blockAccess.getHeight();
    int metadata = blockAccess.getBlockMetadata(x, y, z);
    Tessellator tessellator = Tessellator.instance;
    tessellator.setBrightness(tile.getMixedBrightnessForBlock(blockAccess, x, y, z));
    int color = block.getRenderColor(metadata);
    float red = (color >> 16 & 255) / 255.0F;
    float green = (color >> 8 & 255) / 255.0F;
    float blue = (color & 255) / 255.0F;
    if (EntityRenderer.anaglyphEnable) {
        float anaglyphRed = (red * 30.0F + green * 59.0F + blue * 11.0F) / 100.0F;
        float anaglyphGreen = (red * 30.0F + green * 70.0F) / 100.0F;
        float anaglyphBlue = (red * 30.0F + blue * 70.0F) / 100.0F;
        red = anaglyphRed;
        green = anaglyphGreen;
        blue = anaglyphBlue;
    }
    Icon iconGlass, iconStreaks, iconSide, iconOverlaySouth, iconOverlayWest;
    if (renderer.hasOverrideBlockTexture()) {
        iconGlass = iconStreaks = iconSide = iconOverlaySouth = iconOverlayWest = renderer.overrideBlockTexture;
    } else {
        iconGlass = block.getIcon(0, metadata);
        iconStreaks = block.getIcon(0, 16 | metadata);
        iconSide = block.getSideTextureIndex();
        iconOverlaySouth = block.getBlockOverlayTexture(blockAccess, x, y, z, 2);
        iconOverlayWest = block.getBlockOverlayTexture(blockAccess, x, y, z, 5);
    }
    double minXGlass = iconGlass.getMinU();
    double midXGlass = iconGlass.getInterpolatedU(8.0D);
    double maxXGlass = iconGlass.getMaxU();
    double minYGlass = iconGlass.getMinV();
    double maxYGlass = iconGlass.getMaxV();
    double minXStreaks = iconStreaks.getMinU();
    double midXStreaks = iconStreaks.getInterpolatedU(8.0D);
    double maxXStreaks = iconStreaks.getMaxU();
    double minYStreaks = iconStreaks.getMinV();
    double maxYStreaks = iconStreaks.getMaxV();
    double minXSide = iconSide.getInterpolatedU(7.0D);
    double maxXSide = iconSide.getInterpolatedU(9.0D);
    double minYSide = iconSide.getMinV();
    double midYSide = iconSide.getInterpolatedV(8.0D);
    double maxYSide = iconSide.getMaxV();
    double minXSouth = iconOverlaySouth.getMinU();
    double midXSouth = iconOverlaySouth.getInterpolatedU(8.0D);
    double maxXSouth = iconOverlaySouth.getMaxU();
    double minYSouth = iconOverlaySouth.getMinV();
    double maxYSouth = iconOverlaySouth.getMaxV();
    double minXWest = iconOverlayWest.getMinU();
    double midXWest = iconOverlayWest.getInterpolatedU(8.0D);
    double maxXWest = iconOverlayWest.getMaxU();
    double minYWest = iconOverlayWest.getMinV();
    double maxYWest = iconOverlayWest.getMaxV();
    double xMin = x;
    double xMid = x + 0.5D;
    double xMax = x + 1;
    double zMin = z;
    double zMid = z + 0.5D;
    double zMax = z + 1;
    double yMin = y;
    double yMax = y + 1;
    double vertSideZOffset = 0.001D;
    double vertSideXOffset = 0.002D;
    double negSideZOffset = xMid - 0.0625D;
    double posSideZOffset = xMid + 0.0625D;
    double negSideXOffset = zMid - 0.0625D;
    double posSideXOffset = zMid + 0.0625D;
    boolean connectedNegZ = block.canThisFactoryPaneConnectToThisBlockID(blockAccess.getBlockId(x, y, z - 1));
    boolean connectedPosZ = block.canThisFactoryPaneConnectToThisBlockID(blockAccess.getBlockId(x, y, z + 1));
    boolean connectedNegX = block.canThisFactoryPaneConnectToThisBlockID(blockAccess.getBlockId(x - 1, y, z));
    boolean connectedPosX = block.canThisFactoryPaneConnectToThisBlockID(blockAccess.getBlockId(x + 1, y, z));
    boolean renderTop = y >= worldHeight || block.shouldSideBeRendered(blockAccess, x, y + 1, z, 1);
    boolean renderBottom = y <= 0 || block.shouldSideBeRendered(blockAccess, x, y - 1, z, 0);
    if ((!connectedNegX || !connectedPosX) && (connectedNegX || connectedPosX || connectedNegZ || connectedPosZ)) {
        if (connectedNegX && !connectedPosX) {
            tessellator.setColorOpaque_F(red, green, blue);
            tessellator.addVertexWithUV(xMin, yMax, zMid, minXGlass, minYGlass);
            tessellator.addVertexWithUV(xMin, yMin, zMid, minXGlass, maxYGlass);
            tessellator.addVertexWithUV(xMid, yMin, zMid, midXGlass, maxYGlass);
            tessellator.addVertexWithUV(xMid, yMax, zMid, midXGlass, minYGlass);
            tessellator.setColorOpaque_F(1, 1, 1);
            tessellator.addVertexWithUV(xMin, yMax, zMid, minXStreaks, minYStreaks);
            tessellator.addVertexWithUV(xMin, yMin, zMid, minXStreaks, maxYStreaks);
            tessellator.addVertexWithUV(xMid, yMin, zMid, midXStreaks, maxYStreaks);
            tessellator.addVertexWithUV(xMid, yMax, zMid, midXStreaks, minYStreaks);
            tessellator.addVertexWithUV(xMin, yMax, zMid, minXSouth, minYSouth);
            tessellator.addVertexWithUV(xMin, yMin, zMid, minXSouth, maxYSouth);
            tessellator.addVertexWithUV(xMid, yMin, zMid, midXSouth, maxYSouth);
            tessellator.addVertexWithUV(xMid, yMax, zMid, midXSouth, minYSouth);
            if (!connectedPosZ && !connectedNegZ) {
                tessellator.addVertexWithUV(xMid, yMax, posSideXOffset, minXSide, minYSide);
                tessellator.addVertexWithUV(xMid, yMin, posSideXOffset, minXSide, maxYSide);
                tessellator.addVertexWithUV(xMid, yMin, negSideXOffset, maxXSide, maxYSide);
                tessellator.addVertexWithUV(xMid, yMax, negSideXOffset, maxXSide, minYSide);
            }
            if (renderTop) {
                tessellator.addVertexWithUV(xMin, yMax + vertSideXOffset, posSideXOffset, maxXSide, midYSide);
                tessellator.addVertexWithUV(xMid, yMax + vertSideXOffset, posSideXOffset, maxXSide, maxYSide);
                tessellator.addVertexWithUV(xMid, yMax + vertSideXOffset, negSideXOffset, minXSide, maxYSide);
                tessellator.addVertexWithUV(xMin, yMax + vertSideXOffset, negSideXOffset, minXSide, midYSide);
            }
            if (renderBottom) {
                tessellator.addVertexWithUV(xMin, yMin - vertSideXOffset, posSideXOffset, maxXSide, midYSide);
                tessellator.addVertexWithUV(xMid, yMin - vertSideXOffset, posSideXOffset, maxXSide, maxYSide);
                tessellator.addVertexWithUV(xMid, yMin - vertSideXOffset, negSideXOffset, minXSide, maxYSide);
                tessellator.addVertexWithUV(xMin, yMin - vertSideXOffset, negSideXOffset, minXSide, midYSide);
            }
        } else if (!connectedNegX && connectedPosX) {
            tessellator.setColorOpaque_F(red, green, blue);
            tessellator.addVertexWithUV(xMid, yMax, zMid, midXGlass, minYGlass);
            tessellator.addVertexWithUV(xMid, yMin, zMid, midXGlass, maxYGlass);
            tessellator.addVertexWithUV(xMax, yMin, zMid, maxXGlass, maxYGlass);
            tessellator.addVertexWithUV(xMax, yMax, zMid, maxXGlass, minYGlass);
            tessellator.setColorOpaque_F(1, 1, 1);
            tessellator.addVertexWithUV(xMid, yMax, zMid, midXStreaks, minYStreaks);
            tessellator.addVertexWithUV(xMid, yMin, zMid, midXStreaks, maxYStreaks);
            tessellator.addVertexWithUV(xMax, yMin, zMid, maxXStreaks, maxYStreaks);
            tessellator.addVertexWithUV(xMax, yMax, zMid, maxXStreaks, minYStreaks);
            tessellator.addVertexWithUV(xMid, yMax, zMid, midXSouth, minYSouth);
            tessellator.addVertexWithUV(xMid, yMin, zMid, midXSouth, maxYSouth);
            tessellator.addVertexWithUV(xMax, yMin, zMid, maxXSouth, maxYSouth);
            tessellator.addVertexWithUV(xMax, yMax, zMid, maxXSouth, minYSouth);
            if (!connectedPosZ && !connectedNegZ) {
                tessellator.addVertexWithUV(xMid, yMax, negSideXOffset, minXSide, minYSide);
                tessellator.addVertexWithUV(xMid, yMin, negSideXOffset, minXSide, maxYSide);
                tessellator.addVertexWithUV(xMid, yMin, posSideXOffset, maxXSide, maxYSide);
                tessellator.addVertexWithUV(xMid, yMax, posSideXOffset, maxXSide, minYSide);
            }
            if (renderTop) {
                tessellator.addVertexWithUV(xMid, yMax + vertSideXOffset, posSideXOffset, maxXSide, minYSide);
                tessellator.addVertexWithUV(xMax, yMax + vertSideXOffset, posSideXOffset, maxXSide, midYSide);
                tessellator.addVertexWithUV(xMax, yMax + vertSideXOffset, negSideXOffset, minXSide, midYSide);
                tessellator.addVertexWithUV(xMid, yMax + vertSideXOffset, negSideXOffset, minXSide, minYSide);
            }
            if (renderBottom) {
                tessellator.addVertexWithUV(xMid, yMin - vertSideXOffset, posSideXOffset, maxXSide, minYSide);
                tessellator.addVertexWithUV(xMax, yMin - vertSideXOffset, posSideXOffset, maxXSide, midYSide);
                tessellator.addVertexWithUV(xMax, yMin - vertSideXOffset, negSideXOffset, minXSide, midYSide);
                tessellator.addVertexWithUV(xMid, yMin - vertSideXOffset, negSideXOffset, minXSide, minYSide);
            }
        }
    } else {
        tessellator.setColorOpaque_F(red, green, blue);
        tessellator.addVertexWithUV(xMin, yMax, zMid, minXGlass, minYGlass);
        tessellator.addVertexWithUV(xMin, yMin, zMid, minXGlass, maxYGlass);
        tessellator.addVertexWithUV(xMax, yMin, zMid, maxXGlass, maxYGlass);
        tessellator.addVertexWithUV(xMax, yMax, zMid, maxXGlass, minYGlass);
        tessellator.setColorOpaque_F(1, 1, 1);
        tessellator.addVertexWithUV(xMin, yMax, zMid, minXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMin, yMin, zMid, minXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMax, yMin, zMid, maxXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMax, yMax, zMid, maxXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMin, yMax, zMid, minXSouth, minYSouth);
        tessellator.addVertexWithUV(xMin, yMin, zMid, minXSouth, maxYSouth);
        tessellator.addVertexWithUV(xMax, yMin, zMid, maxXSouth, maxYSouth);
        tessellator.addVertexWithUV(xMax, yMax, zMid, maxXSouth, minYSouth);
        if (!connectedPosX && !connectedNegX) {
            tessellator.addVertexWithUV(xMin, yMax, negSideXOffset, minXSide, minYSide);
            tessellator.addVertexWithUV(xMin, yMin, negSideXOffset, minXSide, maxYSide);
            tessellator.addVertexWithUV(xMin, yMin, posSideXOffset, maxXSide, maxYSide);
            tessellator.addVertexWithUV(xMin, yMax, posSideXOffset, maxXSide, minYSide);
            tessellator.addVertexWithUV(xMax, yMax, negSideXOffset, minXSide, minYSide);
            tessellator.addVertexWithUV(xMax, yMin, negSideXOffset, minXSide, maxYSide);
            tessellator.addVertexWithUV(xMax, yMin, posSideXOffset, maxXSide, maxYSide);
            tessellator.addVertexWithUV(xMax, yMax, posSideXOffset, maxXSide, minYSide);
        }
        if (renderTop) {
            tessellator.addVertexWithUV(xMin, yMax + vertSideXOffset, posSideXOffset, maxXSide, maxYSide);
            tessellator.addVertexWithUV(xMax, yMax + vertSideXOffset, posSideXOffset, maxXSide, minYSide);
            tessellator.addVertexWithUV(xMax, yMax + vertSideXOffset, negSideXOffset, minXSide, minYSide);
            tessellator.addVertexWithUV(xMin, yMax + vertSideXOffset, negSideXOffset, minXSide, maxYSide);
        }
        if (renderBottom) {
            tessellator.addVertexWithUV(xMin, yMin - vertSideXOffset, posSideXOffset, maxXSide, maxYSide);
            tessellator.addVertexWithUV(xMax, yMin - vertSideXOffset, posSideXOffset, maxXSide, minYSide);
            tessellator.addVertexWithUV(xMax, yMin - vertSideXOffset, negSideXOffset, minXSide, minYSide);
            tessellator.addVertexWithUV(xMin, yMin - vertSideXOffset, negSideXOffset, minXSide, maxYSide);
        }
    }
    if ((!connectedNegZ || !connectedPosZ) && (connectedNegX || connectedPosX || connectedNegZ || connectedPosZ)) {
        if (connectedNegZ && !connectedPosZ) {
            tessellator.setColorOpaque_F(red, green, blue);
            tessellator.addVertexWithUV(xMid, yMax, zMin, minXGlass, minYGlass);
            tessellator.addVertexWithUV(xMid, yMin, zMin, minXGlass, maxYGlass);
            tessellator.addVertexWithUV(xMid, yMin, zMid, midXGlass, maxYGlass);
            tessellator.addVertexWithUV(xMid, yMax, zMid, midXGlass, minYGlass);
            tessellator.setColorOpaque_F(1, 1, 1);
            tessellator.addVertexWithUV(xMid, yMax, zMin, minXStreaks, minYStreaks);
            tessellator.addVertexWithUV(xMid, yMin, zMin, minXStreaks, maxYStreaks);
            tessellator.addVertexWithUV(xMid, yMin, zMid, midXStreaks, maxYStreaks);
            tessellator.addVertexWithUV(xMid, yMax, zMid, midXStreaks, minYStreaks);
            tessellator.addVertexWithUV(xMid, yMax, zMin, minXWest, minYWest);
            tessellator.addVertexWithUV(xMid, yMin, zMin, minXWest, maxYWest);
            tessellator.addVertexWithUV(xMid, yMin, zMid, midXWest, maxYWest);
            tessellator.addVertexWithUV(xMid, yMax, zMid, midXWest, minYWest);
            if (!connectedPosX && !connectedNegX) {
                tessellator.addVertexWithUV(negSideZOffset, yMax, zMid, minXSide, minYSide);
                tessellator.addVertexWithUV(negSideZOffset, yMin, zMid, minXSide, maxYSide);
                tessellator.addVertexWithUV(posSideZOffset, yMin, zMid, maxXSide, maxYSide);
                tessellator.addVertexWithUV(posSideZOffset, yMax, zMid, maxXSide, minYSide);
            }
            if (renderTop) {
                tessellator.addVertexWithUV(negSideZOffset, yMax + vertSideZOffset, zMin, maxXSide, minYSide);
                tessellator.addVertexWithUV(negSideZOffset, yMax + vertSideZOffset, zMid, maxXSide, midYSide);
                tessellator.addVertexWithUV(posSideZOffset, yMax + vertSideZOffset, zMid, minXSide, midYSide);
                tessellator.addVertexWithUV(posSideZOffset, yMax + vertSideZOffset, zMin, minXSide, minYSide);
            }
            if (renderBottom) {
                tessellator.addVertexWithUV(negSideZOffset, yMin - vertSideZOffset, zMin, maxXSide, minYSide);
                tessellator.addVertexWithUV(negSideZOffset, yMin - vertSideZOffset, zMid, maxXSide, midYSide);
                tessellator.addVertexWithUV(posSideZOffset, yMin - vertSideZOffset, zMid, minXSide, midYSide);
                tessellator.addVertexWithUV(posSideZOffset, yMin - vertSideZOffset, zMin, minXSide, minYSide);
            }
        } else if (!connectedNegZ && connectedPosZ) {
            tessellator.setColorOpaque_F(red, green, blue);
            tessellator.addVertexWithUV(xMid, yMax, zMid, midXGlass, minYGlass);
            tessellator.addVertexWithUV(xMid, yMin, zMid, midXGlass, maxYGlass);
            tessellator.addVertexWithUV(xMid, yMin, zMax, maxXGlass, maxYGlass);
            tessellator.addVertexWithUV(xMid, yMax, zMax, maxXGlass, minYGlass);
            tessellator.setColorOpaque_F(1, 1, 1);
            tessellator.addVertexWithUV(xMid, yMax, zMid, midXStreaks, minYStreaks);
            tessellator.addVertexWithUV(xMid, yMin, zMid, midXStreaks, maxYStreaks);
            tessellator.addVertexWithUV(xMid, yMin, zMax, maxXStreaks, maxYStreaks);
            tessellator.addVertexWithUV(xMid, yMax, zMax, maxXStreaks, minYStreaks);
            tessellator.addVertexWithUV(xMid, yMax, zMid, midXWest, minYWest);
            tessellator.addVertexWithUV(xMid, yMin, zMid, midXWest, maxYWest);
            tessellator.addVertexWithUV(xMid, yMin, zMax, maxXWest, maxYWest);
            tessellator.addVertexWithUV(xMid, yMax, zMax, maxXWest, minYWest);
            if (!connectedPosX && !connectedNegX) {
                tessellator.addVertexWithUV(posSideZOffset, yMax, zMid, minXSide, minYSide);
                tessellator.addVertexWithUV(posSideZOffset, yMin, zMid, minXSide, maxYSide);
                tessellator.addVertexWithUV(negSideZOffset, yMin, zMid, maxXSide, maxYSide);
                tessellator.addVertexWithUV(negSideZOffset, yMax, zMid, maxXSide, minYSide);
            }
            if (renderTop) {
                tessellator.addVertexWithUV(negSideZOffset, yMax + vertSideZOffset, zMid, minXSide, midYSide);
                tessellator.addVertexWithUV(negSideZOffset, yMax + vertSideZOffset, zMax, minXSide, maxYSide);
                tessellator.addVertexWithUV(posSideZOffset, yMax + vertSideZOffset, zMax, maxXSide, maxYSide);
                tessellator.addVertexWithUV(posSideZOffset, yMax + vertSideZOffset, zMid, maxXSide, midYSide);
            }
            if (renderBottom) {
                tessellator.addVertexWithUV(negSideZOffset, yMin - vertSideZOffset, zMid, minXSide, midYSide);
                tessellator.addVertexWithUV(negSideZOffset, yMin - vertSideZOffset, zMax, minXSide, maxYSide);
                tessellator.addVertexWithUV(posSideZOffset, yMin - vertSideZOffset, zMax, maxXSide, maxYSide);
                tessellator.addVertexWithUV(posSideZOffset, yMin - vertSideZOffset, zMid, maxXSide, midYSide);
            }
        }
    } else {
        tessellator.setColorOpaque_F(red, green, blue);
        tessellator.addVertexWithUV(xMid, yMax, zMin, minXGlass, minYGlass);
        tessellator.addVertexWithUV(xMid, yMin, zMin, minXGlass, maxYGlass);
        tessellator.addVertexWithUV(xMid, yMin, zMax, maxXGlass, maxYGlass);
        tessellator.addVertexWithUV(xMid, yMax, zMax, maxXGlass, minYGlass);
        tessellator.setColorOpaque_F(1, 1, 1);
        tessellator.addVertexWithUV(xMid, yMax, zMin, minXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMid, yMin, zMin, minXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMid, yMin, zMax, maxXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMid, yMax, zMax, maxXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMid, yMax, zMin, minXWest, minYWest);
        tessellator.addVertexWithUV(xMid, yMin, zMin, minXWest, maxYWest);
        tessellator.addVertexWithUV(xMid, yMin, zMax, maxXWest, maxYWest);
        tessellator.addVertexWithUV(xMid, yMax, zMax, maxXWest, minYWest);
        if (!connectedPosZ && !connectedNegZ) {
            tessellator.addVertexWithUV(negSideZOffset, yMax, zMin, minXSide, minYSide);
            tessellator.addVertexWithUV(negSideZOffset, yMin, zMin, minXSide, maxYSide);
            tessellator.addVertexWithUV(posSideZOffset, yMin, zMin, maxXSide, maxYSide);
            tessellator.addVertexWithUV(posSideZOffset, yMax, zMin, maxXSide, minYSide);
            tessellator.addVertexWithUV(posSideZOffset, yMax, zMax, minXSide, minYSide);
            tessellator.addVertexWithUV(posSideZOffset, yMin, zMax, minXSide, maxYSide);
            tessellator.addVertexWithUV(negSideZOffset, yMin, zMax, maxXSide, maxYSide);
            tessellator.addVertexWithUV(negSideZOffset, yMax, zMax, maxXSide, minYSide);
        }
        if (renderTop) {
            tessellator.addVertexWithUV(posSideZOffset, yMax + vertSideZOffset, zMax, maxXSide, maxYSide);
            tessellator.addVertexWithUV(posSideZOffset, yMax + vertSideZOffset, zMin, maxXSide, minYSide);
            tessellator.addVertexWithUV(negSideZOffset, yMax + vertSideZOffset, zMin, minXSide, minYSide);
            tessellator.addVertexWithUV(negSideZOffset, yMax + vertSideZOffset, zMax, minXSide, maxYSide);
        }
        // TODO: fix slightly awkward rendering when pane on top/bottom doesn't connect on both sides
        if (renderBottom) {
            tessellator.addVertexWithUV(posSideZOffset, yMin - vertSideZOffset, zMax, maxXSide, maxYSide);
            tessellator.addVertexWithUV(posSideZOffset, yMin - vertSideZOffset, zMin, maxXSide, minYSide);
            tessellator.addVertexWithUV(negSideZOffset, yMin - vertSideZOffset, zMin, minXSide, minYSide);
            tessellator.addVertexWithUV(negSideZOffset, yMin - vertSideZOffset, zMax, minXSide, maxYSide);
        }
    }
    return true;
}
Also used : Tessellator(net.minecraft.client.renderer.Tessellator) BlockFactoryGlassPane(powercrystals.minefactoryreloaded.block.BlockFactoryGlassPane) Icon(net.minecraft.util.Icon)

Example 4 with Icon

use of net.minecraft.util.Icon in project MineFactoryReloaded by powercrystals.

the class FactoryGlassRenderer method renderWorldBlock.

@Override
public boolean renderWorldBlock(IBlockAccess blockAccess, int x, int y, int z, Block tile, int modelId, RenderBlocks renderer) {
    if (renderer.hasOverrideBlockTexture()) {
        // usually: block is being broken
        renderer.renderFaceYNeg(tile, x, y, z, null);
        renderer.renderFaceYPos(tile, x, y, z, null);
        renderer.renderFaceZNeg(tile, x, y, z, null);
        renderer.renderFaceZPos(tile, x, y, z, null);
        renderer.renderFaceXNeg(tile, x, y, z, null);
        renderer.renderFaceXPos(tile, x, y, z, null);
        return true;
    }
    BlockFactoryGlass block = (BlockFactoryGlass) tile;
    int worldHeight = blockAccess.getHeight();
    int metadata = blockAccess.getBlockMetadata(x, y, z);
    Tessellator tessellator = Tessellator.instance;
    tessellator.setBrightness(block.getMixedBrightnessForBlock(blockAccess, x, y, z));
    int color = block.getRenderColor(metadata);
    float red = (color >> 16 & 255) / 255.0F;
    float green = (color >> 8 & 255) / 255.0F;
    float blue = (color & 255) / 255.0F;
    if (EntityRenderer.anaglyphEnable) {
        float anaglyphRed = (red * 30.0F + green * 59.0F + blue * 11.0F) / 100.0F;
        float anaglyphGreen = (red * 30.0F + green * 70.0F) / 100.0F;
        float anaglyphBlue = (red * 30.0F + blue * 70.0F) / 100.0F;
        red = anaglyphRed;
        green = anaglyphGreen;
        blue = anaglyphBlue;
    }
    Icon iconGlass, iconStreaks, iconOverlayTop, iconOverlaySouth, iconOverlayWest;
    iconGlass = block.getIcon(0, metadata);
    iconStreaks = block.getIcon(0, 16 | metadata);
    iconOverlayTop = block.getBlockOverlayTexture(blockAccess, x, y, z, 1);
    iconOverlaySouth = block.getBlockOverlayTexture(blockAccess, x, y, z, 2);
    iconOverlayWest = block.getBlockOverlayTexture(blockAccess, x, y, z, 5);
    double minXGlass = iconGlass.getMinU();
    double maxXGlass = iconGlass.getMaxU();
    double minYGlass = iconGlass.getMinV();
    double maxYGlass = iconGlass.getMaxV();
    double minXStreaks = iconStreaks.getMinU();
    double maxXStreaks = iconStreaks.getMaxU();
    double minYStreaks = iconStreaks.getMinV();
    double maxYStreaks = iconStreaks.getMaxV();
    double minXSouth = iconOverlaySouth.getMinU();
    double maxXSouth = iconOverlaySouth.getMaxU();
    double minYSouth = iconOverlaySouth.getMinV();
    double maxYSouth = iconOverlaySouth.getMaxV();
    double minXWest = iconOverlayWest.getMinU();
    double maxXWest = iconOverlayWest.getMaxU();
    double minYWest = iconOverlayWest.getMinV();
    double maxYWest = iconOverlayWest.getMaxV();
    double minXTop = iconOverlayTop.getMinU();
    double maxXTop = iconOverlayTop.getMaxU();
    double minYTop = iconOverlayTop.getMinV();
    double maxYTop = iconOverlayTop.getMaxV();
    double xMin = x, xMax = x + 1;
    double yMin = y, yMax = y + 1;
    double zMin = z, zMax = z + 1;
    boolean renderAll = renderer.renderAllFaces;
    boolean[] renderSide = { renderAll || y <= 0 || block.shouldSideBeRendered(blockAccess, x, y - 1, z, 0), renderAll || y >= worldHeight || block.shouldSideBeRendered(blockAccess, x, y + 1, z, 1), renderAll || block.shouldSideBeRendered(blockAccess, x, y, z - 1, 2), renderAll || block.shouldSideBeRendered(blockAccess, x, y, z + 1, 3), renderAll || block.shouldSideBeRendered(blockAccess, x - 1, y, z, 4), renderAll || block.shouldSideBeRendered(blockAccess, x + 1, y, z, 5) };
    if (renderSide[1]) {
        // UP
        tessellator.setColorOpaque_F(red, green, blue);
        tessellator.addVertexWithUV(xMin, yMax, zMin, minXGlass, minYGlass);
        tessellator.addVertexWithUV(xMin, yMax, zMax, minXGlass, maxYGlass);
        tessellator.addVertexWithUV(xMax, yMax, zMax, maxXGlass, maxYGlass);
        tessellator.addVertexWithUV(xMax, yMax, zMin, maxXGlass, minYGlass);
        tessellator.setColorOpaque_F(1, 1, 1);
        tessellator.addVertexWithUV(xMin, yMax, zMin, minXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMin, yMax, zMax, minXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMax, yMax, zMax, maxXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMax, yMax, zMin, maxXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMin, yMax, zMin, minXTop, minYTop);
        tessellator.addVertexWithUV(xMin, yMax, zMax, minXTop, maxYTop);
        tessellator.addVertexWithUV(xMax, yMax, zMax, maxXTop, maxYTop);
        tessellator.addVertexWithUV(xMax, yMax, zMin, maxXTop, minYTop);
    }
    if (renderSide[0]) {
        // DOWN
        tessellator.setColorOpaque_F(red, green, blue);
        tessellator.addVertexWithUV(xMin, yMin, zMax, minXGlass, maxYGlass);
        tessellator.addVertexWithUV(xMin, yMin, zMin, minXGlass, minYGlass);
        tessellator.addVertexWithUV(xMax, yMin, zMin, maxXGlass, minYGlass);
        tessellator.addVertexWithUV(xMax, yMin, zMax, maxXGlass, maxYGlass);
        tessellator.setColorOpaque_F(1, 1, 1);
        tessellator.addVertexWithUV(xMin, yMin, zMax, minXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMin, yMin, zMin, minXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMax, yMin, zMin, maxXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMax, yMin, zMax, maxXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMin, yMin, zMax, minXTop, maxYTop);
        tessellator.addVertexWithUV(xMin, yMin, zMin, minXTop, minYTop);
        tessellator.addVertexWithUV(xMax, yMin, zMin, maxXTop, minYTop);
        tessellator.addVertexWithUV(xMax, yMin, zMax, maxXTop, maxYTop);
    }
    if (renderSide[2]) {
        tessellator.setColorOpaque_F(red, green, blue);
        tessellator.addVertexWithUV(xMax, yMax, zMin, maxXGlass, minYGlass);
        tessellator.addVertexWithUV(xMax, yMin, zMin, maxXGlass, maxYGlass);
        tessellator.addVertexWithUV(xMin, yMin, zMin, minXGlass, maxYGlass);
        tessellator.addVertexWithUV(xMin, yMax, zMin, minXGlass, minYGlass);
        tessellator.setColorOpaque_F(1, 1, 1);
        tessellator.addVertexWithUV(xMax, yMax, zMin, maxXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMax, yMin, zMin, maxXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMin, yMin, zMin, minXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMin, yMax, zMin, minXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMax, yMax, zMin, maxXSouth, minYSouth);
        tessellator.addVertexWithUV(xMax, yMin, zMin, maxXSouth, maxYSouth);
        tessellator.addVertexWithUV(xMin, yMin, zMin, minXSouth, maxYSouth);
        tessellator.addVertexWithUV(xMin, yMax, zMin, minXSouth, minYSouth);
    }
    if (renderSide[3]) {
        tessellator.setColorOpaque_F(red, green, blue);
        tessellator.addVertexWithUV(xMin, yMax, zMax, minXGlass, minYGlass);
        tessellator.addVertexWithUV(xMin, yMin, zMax, minXGlass, maxYGlass);
        tessellator.addVertexWithUV(xMax, yMin, zMax, maxXGlass, maxYGlass);
        tessellator.addVertexWithUV(xMax, yMax, zMax, maxXGlass, minYGlass);
        tessellator.setColorOpaque_F(1, 1, 1);
        tessellator.addVertexWithUV(xMin, yMax, zMax, minXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMin, yMin, zMax, minXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMax, yMin, zMax, maxXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMax, yMax, zMax, maxXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMin, yMax, zMax, minXSouth, minYSouth);
        tessellator.addVertexWithUV(xMin, yMin, zMax, minXSouth, maxYSouth);
        tessellator.addVertexWithUV(xMax, yMin, zMax, maxXSouth, maxYSouth);
        tessellator.addVertexWithUV(xMax, yMax, zMax, maxXSouth, minYSouth);
    }
    if (renderSide[4]) {
        tessellator.setColorOpaque_F(red, green, blue);
        tessellator.addVertexWithUV(xMin, yMin, zMax, maxXGlass, maxYGlass);
        tessellator.addVertexWithUV(xMin, yMax, zMax, maxXGlass, minYGlass);
        tessellator.addVertexWithUV(xMin, yMax, zMin, minXGlass, minYGlass);
        tessellator.addVertexWithUV(xMin, yMin, zMin, minXGlass, maxYGlass);
        tessellator.setColorOpaque_F(1, 1, 1);
        tessellator.addVertexWithUV(xMin, yMin, zMax, maxXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMin, yMax, zMax, maxXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMin, yMax, zMin, minXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMin, yMin, zMin, minXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMin, yMin, zMax, maxXWest, maxYWest);
        tessellator.addVertexWithUV(xMin, yMax, zMax, maxXWest, minYWest);
        tessellator.addVertexWithUV(xMin, yMax, zMin, minXWest, minYWest);
        tessellator.addVertexWithUV(xMin, yMin, zMin, minXWest, maxYWest);
    }
    if (renderSide[5]) {
        tessellator.setColorOpaque_F(red, green, blue);
        tessellator.addVertexWithUV(xMax, yMin, zMin, minXGlass, maxYGlass);
        tessellator.addVertexWithUV(xMax, yMax, zMin, minXGlass, minYGlass);
        tessellator.addVertexWithUV(xMax, yMax, zMax, maxXGlass, minYGlass);
        tessellator.addVertexWithUV(xMax, yMin, zMax, maxXGlass, maxYGlass);
        tessellator.setColorOpaque_F(1, 1, 1);
        tessellator.addVertexWithUV(xMax, yMin, zMin, minXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMax, yMax, zMin, minXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMax, yMax, zMax, maxXStreaks, minYStreaks);
        tessellator.addVertexWithUV(xMax, yMin, zMax, maxXStreaks, maxYStreaks);
        tessellator.addVertexWithUV(xMax, yMin, zMin, minXWest, maxYWest);
        tessellator.addVertexWithUV(xMax, yMax, zMin, minXWest, minYWest);
        tessellator.addVertexWithUV(xMax, yMax, zMax, maxXWest, minYWest);
        tessellator.addVertexWithUV(xMax, yMin, zMax, maxXWest, maxYWest);
    }
    return true;
}
Also used : Tessellator(net.minecraft.client.renderer.Tessellator) Icon(net.minecraft.util.Icon) BlockFactoryGlass(powercrystals.minefactoryreloaded.block.BlockFactoryGlass)

Example 5 with Icon

use of net.minecraft.util.Icon in project MineFactoryReloaded by powercrystals.

the class RenderBlocksInverted method renderStandardBlockWithAmbientOcclusion.

public boolean renderStandardBlockWithAmbientOcclusion(RenderBlocks renderer, Block par1Block, int par2, int par3, int par4, float par5, float par6, float par7) {
    renderer.enableAO = true;
    boolean flag = false;
    float f3 = 0.0F;
    float f4 = 0.0F;
    float f5 = 0.0F;
    float f6 = 0.0F;
    boolean flag1 = true;
    int l = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3, par4);
    Tessellator tessellator = Tessellator.instance;
    tessellator.setBrightness(983055);
    if (renderer.getBlockIcon(par1Block).getIconName().equals("grass_top")) {
        flag1 = false;
    } else if (renderer.hasOverrideBlockTexture()) {
        flag1 = false;
    }
    boolean flag2;
    boolean flag3;
    boolean flag4;
    boolean flag5;
    float f7;
    int i1;
    if (renderer.renderAllFaces || par1Block.shouldSideBeRendered(renderer.blockAccess, par2, par3 - 1, par4, 0)) {
        if (renderer.renderMinY <= 0.0D) {
            --par3;
        }
        renderer.aoBrightnessXYNN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 - 1, par3, par4);
        renderer.aoBrightnessYZNN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3, par4 - 1);
        renderer.aoBrightnessYZNP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3, par4 + 1);
        renderer.aoBrightnessXYPN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 + 1, par3, par4);
        renderer.aoLightValueScratchXYNN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 - 1, par3, par4);
        renderer.aoLightValueScratchYZNN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3, par4 - 1);
        renderer.aoLightValueScratchYZNP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3, par4 + 1);
        renderer.aoLightValueScratchXYPN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 + 1, par3, par4);
        flag3 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 + 1, par3 - 1, par4)];
        flag2 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 - 1, par3 - 1, par4)];
        flag5 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2, par3 - 1, par4 + 1)];
        flag4 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2, par3 - 1, par4 - 1)];
        if (!flag4 && !flag2) {
            renderer.aoLightValueScratchXYZNNN = renderer.aoLightValueScratchXYNN;
            renderer.aoBrightnessXYZNNN = renderer.aoBrightnessXYNN;
        } else {
            renderer.aoLightValueScratchXYZNNN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 - 1, par3, par4 - 1);
            renderer.aoBrightnessXYZNNN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 - 1, par3, par4 - 1);
        }
        if (!flag5 && !flag2) {
            renderer.aoLightValueScratchXYZNNP = renderer.aoLightValueScratchXYNN;
            renderer.aoBrightnessXYZNNP = renderer.aoBrightnessXYNN;
        } else {
            renderer.aoLightValueScratchXYZNNP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 - 1, par3, par4 + 1);
            renderer.aoBrightnessXYZNNP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 - 1, par3, par4 + 1);
        }
        if (!flag4 && !flag3) {
            renderer.aoLightValueScratchXYZPNN = renderer.aoLightValueScratchXYPN;
            renderer.aoBrightnessXYZPNN = renderer.aoBrightnessXYPN;
        } else {
            renderer.aoLightValueScratchXYZPNN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 + 1, par3, par4 - 1);
            renderer.aoBrightnessXYZPNN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 + 1, par3, par4 - 1);
        }
        if (!flag5 && !flag3) {
            renderer.aoLightValueScratchXYZPNP = renderer.aoLightValueScratchXYPN;
            renderer.aoBrightnessXYZPNP = renderer.aoBrightnessXYPN;
        } else {
            renderer.aoLightValueScratchXYZPNP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 + 1, par3, par4 + 1);
            renderer.aoBrightnessXYZPNP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 + 1, par3, par4 + 1);
        }
        if (renderer.renderMinY <= 0.0D) {
            ++par3;
        }
        i1 = l;
        if (renderer.renderMinY <= 0.0D || !renderer.blockAccess.isBlockOpaqueCube(par2, par3 - 1, par4)) {
            i1 = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 - 1, par4);
        }
        f7 = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 - 1, par4);
        f3 = (renderer.aoLightValueScratchXYZNNP + renderer.aoLightValueScratchXYNN + renderer.aoLightValueScratchYZNP + f7) / 4.0F;
        f6 = (renderer.aoLightValueScratchYZNP + f7 + renderer.aoLightValueScratchXYZPNP + renderer.aoLightValueScratchXYPN) / 4.0F;
        f5 = (f7 + renderer.aoLightValueScratchYZNN + renderer.aoLightValueScratchXYPN + renderer.aoLightValueScratchXYZPNN) / 4.0F;
        f4 = (renderer.aoLightValueScratchXYNN + renderer.aoLightValueScratchXYZNNN + f7 + renderer.aoLightValueScratchYZNN) / 4.0F;
        renderer.brightnessTopLeft = renderer.getAoBrightness(renderer.aoBrightnessXYZNNP, renderer.aoBrightnessXYNN, renderer.aoBrightnessYZNP, i1);
        renderer.brightnessTopRight = renderer.getAoBrightness(renderer.aoBrightnessYZNP, renderer.aoBrightnessXYZPNP, renderer.aoBrightnessXYPN, i1);
        renderer.brightnessBottomRight = renderer.getAoBrightness(renderer.aoBrightnessYZNN, renderer.aoBrightnessXYPN, renderer.aoBrightnessXYZPNN, i1);
        renderer.brightnessBottomLeft = renderer.getAoBrightness(renderer.aoBrightnessXYNN, renderer.aoBrightnessXYZNNN, renderer.aoBrightnessYZNN, i1);
        if (flag1) {
            renderer.colorRedTopLeft = renderer.colorRedBottomLeft = renderer.colorRedBottomRight = renderer.colorRedTopRight = par5 * 0.5F;
            renderer.colorGreenTopLeft = renderer.colorGreenBottomLeft = renderer.colorGreenBottomRight = renderer.colorGreenTopRight = par6 * 0.5F;
            renderer.colorBlueTopLeft = renderer.colorBlueBottomLeft = renderer.colorBlueBottomRight = renderer.colorBlueTopRight = par7 * 0.5F;
        } else {
            renderer.colorRedTopLeft = renderer.colorRedBottomLeft = renderer.colorRedBottomRight = renderer.colorRedTopRight = 0.5F;
            renderer.colorGreenTopLeft = renderer.colorGreenBottomLeft = renderer.colorGreenBottomRight = renderer.colorGreenTopRight = 0.5F;
            renderer.colorBlueTopLeft = renderer.colorBlueBottomLeft = renderer.colorBlueBottomRight = renderer.colorBlueTopRight = 0.5F;
        }
        renderer.colorRedTopLeft *= f3;
        renderer.colorGreenTopLeft *= f3;
        renderer.colorBlueTopLeft *= f3;
        renderer.colorRedBottomLeft *= f4;
        renderer.colorGreenBottomLeft *= f4;
        renderer.colorBlueBottomLeft *= f4;
        renderer.colorRedBottomRight *= f5;
        renderer.colorGreenBottomRight *= f5;
        renderer.colorBlueBottomRight *= f5;
        renderer.colorRedTopRight *= f6;
        renderer.colorGreenTopRight *= f6;
        renderer.colorBlueTopRight *= f6;
        this.renderBottomFace(renderer, par1Block, par2, par3, par4, renderer.getBlockIcon(par1Block, renderer.blockAccess, par2, par3, par4, 0));
        flag = true;
    }
    if (renderer.renderAllFaces || par1Block.shouldSideBeRendered(renderer.blockAccess, par2, par3 + 1, par4, 1)) {
        if (renderer.renderMaxY >= 1.0D) {
            ++par3;
        }
        renderer.aoBrightnessXYNP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 - 1, par3, par4);
        renderer.aoBrightnessXYPP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 + 1, par3, par4);
        renderer.aoBrightnessYZPN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3, par4 - 1);
        renderer.aoBrightnessYZPP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3, par4 + 1);
        renderer.aoLightValueScratchXYNP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 - 1, par3, par4);
        renderer.aoLightValueScratchXYPP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 + 1, par3, par4);
        renderer.aoLightValueScratchYZPN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3, par4 - 1);
        renderer.aoLightValueScratchYZPP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3, par4 + 1);
        flag3 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 + 1, par3 + 1, par4)];
        flag2 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 - 1, par3 + 1, par4)];
        flag5 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2, par3 + 1, par4 + 1)];
        flag4 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2, par3 + 1, par4 - 1)];
        if (!flag4 && !flag2) {
            renderer.aoLightValueScratchXYZNPN = renderer.aoLightValueScratchXYNP;
            renderer.aoBrightnessXYZNPN = renderer.aoBrightnessXYNP;
        } else {
            renderer.aoLightValueScratchXYZNPN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 - 1, par3, par4 - 1);
            renderer.aoBrightnessXYZNPN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 - 1, par3, par4 - 1);
        }
        if (!flag4 && !flag3) {
            renderer.aoLightValueScratchXYZPPN = renderer.aoLightValueScratchXYPP;
            renderer.aoBrightnessXYZPPN = renderer.aoBrightnessXYPP;
        } else {
            renderer.aoLightValueScratchXYZPPN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 + 1, par3, par4 - 1);
            renderer.aoBrightnessXYZPPN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 + 1, par3, par4 - 1);
        }
        if (!flag5 && !flag2) {
            renderer.aoLightValueScratchXYZNPP = renderer.aoLightValueScratchXYNP;
            renderer.aoBrightnessXYZNPP = renderer.aoBrightnessXYNP;
        } else {
            renderer.aoLightValueScratchXYZNPP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 - 1, par3, par4 + 1);
            renderer.aoBrightnessXYZNPP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 - 1, par3, par4 + 1);
        }
        if (!flag5 && !flag3) {
            renderer.aoLightValueScratchXYZPPP = renderer.aoLightValueScratchXYPP;
            renderer.aoBrightnessXYZPPP = renderer.aoBrightnessXYPP;
        } else {
            renderer.aoLightValueScratchXYZPPP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 + 1, par3, par4 + 1);
            renderer.aoBrightnessXYZPPP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 + 1, par3, par4 + 1);
        }
        if (renderer.renderMaxY >= 1.0D) {
            --par3;
        }
        i1 = l;
        if (renderer.renderMaxY >= 1.0D || !renderer.blockAccess.isBlockOpaqueCube(par2, par3 + 1, par4)) {
            i1 = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 + 1, par4);
        }
        f7 = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 + 1, par4);
        f6 = (renderer.aoLightValueScratchXYZNPP + renderer.aoLightValueScratchXYNP + renderer.aoLightValueScratchYZPP + f7) / 4.0F;
        f3 = (renderer.aoLightValueScratchYZPP + f7 + renderer.aoLightValueScratchXYZPPP + renderer.aoLightValueScratchXYPP) / 4.0F;
        f4 = (f7 + renderer.aoLightValueScratchYZPN + renderer.aoLightValueScratchXYPP + renderer.aoLightValueScratchXYZPPN) / 4.0F;
        f5 = (renderer.aoLightValueScratchXYNP + renderer.aoLightValueScratchXYZNPN + f7 + renderer.aoLightValueScratchYZPN) / 4.0F;
        renderer.brightnessTopRight = renderer.getAoBrightness(renderer.aoBrightnessXYZNPP, renderer.aoBrightnessXYNP, renderer.aoBrightnessYZPP, i1);
        renderer.brightnessTopLeft = renderer.getAoBrightness(renderer.aoBrightnessYZPP, renderer.aoBrightnessXYZPPP, renderer.aoBrightnessXYPP, i1);
        renderer.brightnessBottomLeft = renderer.getAoBrightness(renderer.aoBrightnessYZPN, renderer.aoBrightnessXYPP, renderer.aoBrightnessXYZPPN, i1);
        renderer.brightnessBottomRight = renderer.getAoBrightness(renderer.aoBrightnessXYNP, renderer.aoBrightnessXYZNPN, renderer.aoBrightnessYZPN, i1);
        renderer.colorRedTopLeft = renderer.colorRedBottomLeft = renderer.colorRedBottomRight = renderer.colorRedTopRight = par5;
        renderer.colorGreenTopLeft = renderer.colorGreenBottomLeft = renderer.colorGreenBottomRight = renderer.colorGreenTopRight = par6;
        renderer.colorBlueTopLeft = renderer.colorBlueBottomLeft = renderer.colorBlueBottomRight = renderer.colorBlueTopRight = par7;
        renderer.colorRedTopLeft *= f3;
        renderer.colorGreenTopLeft *= f3;
        renderer.colorBlueTopLeft *= f3;
        renderer.colorRedBottomLeft *= f4;
        renderer.colorGreenBottomLeft *= f4;
        renderer.colorBlueBottomLeft *= f4;
        renderer.colorRedBottomRight *= f5;
        renderer.colorGreenBottomRight *= f5;
        renderer.colorBlueBottomRight *= f5;
        renderer.colorRedTopRight *= f6;
        renderer.colorGreenTopRight *= f6;
        renderer.colorBlueTopRight *= f6;
        this.renderTopFace(renderer, par1Block, par2, par3, par4, renderer.getBlockIcon(par1Block, renderer.blockAccess, par2, par3, par4, 1));
        flag = true;
    }
    Icon icon;
    if (renderer.renderAllFaces || par1Block.shouldSideBeRendered(renderer.blockAccess, par2, par3, par4 - 1, 2)) {
        if (renderer.renderMinZ <= 0.0D) {
            --par4;
        }
        renderer.aoLightValueScratchXZNN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 - 1, par3, par4);
        renderer.aoLightValueScratchYZNN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 - 1, par4);
        renderer.aoLightValueScratchYZPN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 + 1, par4);
        renderer.aoLightValueScratchXZPN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 + 1, par3, par4);
        renderer.aoBrightnessXZNN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 - 1, par3, par4);
        renderer.aoBrightnessYZNN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 - 1, par4);
        renderer.aoBrightnessYZPN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 + 1, par4);
        renderer.aoBrightnessXZPN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 + 1, par3, par4);
        flag3 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 + 1, par3, par4 - 1)];
        flag2 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 - 1, par3, par4 - 1)];
        flag5 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2, par3 + 1, par4 - 1)];
        flag4 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2, par3 - 1, par4 - 1)];
        if (!flag2 && !flag4) {
            renderer.aoLightValueScratchXYZNNN = renderer.aoLightValueScratchXZNN;
            renderer.aoBrightnessXYZNNN = renderer.aoBrightnessXZNN;
        } else {
            renderer.aoLightValueScratchXYZNNN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 - 1, par3 - 1, par4);
            renderer.aoBrightnessXYZNNN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 - 1, par3 - 1, par4);
        }
        if (!flag2 && !flag5) {
            renderer.aoLightValueScratchXYZNPN = renderer.aoLightValueScratchXZNN;
            renderer.aoBrightnessXYZNPN = renderer.aoBrightnessXZNN;
        } else {
            renderer.aoLightValueScratchXYZNPN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 - 1, par3 + 1, par4);
            renderer.aoBrightnessXYZNPN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 - 1, par3 + 1, par4);
        }
        if (!flag3 && !flag4) {
            renderer.aoLightValueScratchXYZPNN = renderer.aoLightValueScratchXZPN;
            renderer.aoBrightnessXYZPNN = renderer.aoBrightnessXZPN;
        } else {
            renderer.aoLightValueScratchXYZPNN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 + 1, par3 - 1, par4);
            renderer.aoBrightnessXYZPNN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 + 1, par3 - 1, par4);
        }
        if (!flag3 && !flag5) {
            renderer.aoLightValueScratchXYZPPN = renderer.aoLightValueScratchXZPN;
            renderer.aoBrightnessXYZPPN = renderer.aoBrightnessXZPN;
        } else {
            renderer.aoLightValueScratchXYZPPN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 + 1, par3 + 1, par4);
            renderer.aoBrightnessXYZPPN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 + 1, par3 + 1, par4);
        }
        if (renderer.renderMinZ <= 0.0D) {
            ++par4;
        }
        i1 = l;
        if (renderer.renderMinZ <= 0.0D || !renderer.blockAccess.isBlockOpaqueCube(par2, par3, par4 - 1)) {
            i1 = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3, par4 - 1);
        }
        f7 = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3, par4 - 1);
        f3 = (renderer.aoLightValueScratchXZNN + renderer.aoLightValueScratchXYZNPN + f7 + renderer.aoLightValueScratchYZPN) / 4.0F;
        f4 = (f7 + renderer.aoLightValueScratchYZPN + renderer.aoLightValueScratchXZPN + renderer.aoLightValueScratchXYZPPN) / 4.0F;
        f5 = (renderer.aoLightValueScratchYZNN + f7 + renderer.aoLightValueScratchXYZPNN + renderer.aoLightValueScratchXZPN) / 4.0F;
        f6 = (renderer.aoLightValueScratchXYZNNN + renderer.aoLightValueScratchXZNN + renderer.aoLightValueScratchYZNN + f7) / 4.0F;
        renderer.brightnessTopLeft = renderer.getAoBrightness(renderer.aoBrightnessXZNN, renderer.aoBrightnessXYZNPN, renderer.aoBrightnessYZPN, i1);
        renderer.brightnessBottomLeft = renderer.getAoBrightness(renderer.aoBrightnessYZPN, renderer.aoBrightnessXZPN, renderer.aoBrightnessXYZPPN, i1);
        renderer.brightnessBottomRight = renderer.getAoBrightness(renderer.aoBrightnessYZNN, renderer.aoBrightnessXYZPNN, renderer.aoBrightnessXZPN, i1);
        renderer.brightnessTopRight = renderer.getAoBrightness(renderer.aoBrightnessXYZNNN, renderer.aoBrightnessXZNN, renderer.aoBrightnessYZNN, i1);
        if (flag1) {
            renderer.colorRedTopLeft = renderer.colorRedBottomLeft = renderer.colorRedBottomRight = renderer.colorRedTopRight = par5 * 0.8F;
            renderer.colorGreenTopLeft = renderer.colorGreenBottomLeft = renderer.colorGreenBottomRight = renderer.colorGreenTopRight = par6 * 0.8F;
            renderer.colorBlueTopLeft = renderer.colorBlueBottomLeft = renderer.colorBlueBottomRight = renderer.colorBlueTopRight = par7 * 0.8F;
        } else {
            renderer.colorRedTopLeft = renderer.colorRedBottomLeft = renderer.colorRedBottomRight = renderer.colorRedTopRight = 0.8F;
            renderer.colorGreenTopLeft = renderer.colorGreenBottomLeft = renderer.colorGreenBottomRight = renderer.colorGreenTopRight = 0.8F;
            renderer.colorBlueTopLeft = renderer.colorBlueBottomLeft = renderer.colorBlueBottomRight = renderer.colorBlueTopRight = 0.8F;
        }
        renderer.colorRedTopLeft *= f3;
        renderer.colorGreenTopLeft *= f3;
        renderer.colorBlueTopLeft *= f3;
        renderer.colorRedBottomLeft *= f4;
        renderer.colorGreenBottomLeft *= f4;
        renderer.colorBlueBottomLeft *= f4;
        renderer.colorRedBottomRight *= f5;
        renderer.colorGreenBottomRight *= f5;
        renderer.colorBlueBottomRight *= f5;
        renderer.colorRedTopRight *= f6;
        renderer.colorGreenTopRight *= f6;
        renderer.colorBlueTopRight *= f6;
        icon = renderer.getBlockIcon(par1Block, renderer.blockAccess, par2, par3, par4, 2);
        this.renderEastFace(renderer, par1Block, par2, par3, par4, icon);
        if (RenderBlocks.fancyGrass && icon.getIconName().equals("grass_side") && !renderer.hasOverrideBlockTexture()) {
            renderer.colorRedTopLeft *= par5;
            renderer.colorRedBottomLeft *= par5;
            renderer.colorRedBottomRight *= par5;
            renderer.colorRedTopRight *= par5;
            renderer.colorGreenTopLeft *= par6;
            renderer.colorGreenBottomLeft *= par6;
            renderer.colorGreenBottomRight *= par6;
            renderer.colorGreenTopRight *= par6;
            renderer.colorBlueTopLeft *= par7;
            renderer.colorBlueBottomLeft *= par7;
            renderer.colorBlueBottomRight *= par7;
            renderer.colorBlueTopRight *= par7;
            this.renderEastFace(renderer, par1Block, par2, par3, par4, BlockGrass.getIconSideOverlay());
        }
        flag = true;
    }
    if (renderer.renderAllFaces || par1Block.shouldSideBeRendered(renderer.blockAccess, par2, par3, par4 + 1, 3)) {
        if (renderer.renderMaxZ >= 1.0D) {
            ++par4;
        }
        renderer.aoLightValueScratchXZNP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 - 1, par3, par4);
        renderer.aoLightValueScratchXZPP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 + 1, par3, par4);
        renderer.aoLightValueScratchYZNP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 - 1, par4);
        renderer.aoLightValueScratchYZPP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 + 1, par4);
        renderer.aoBrightnessXZNP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 - 1, par3, par4);
        renderer.aoBrightnessXZPP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 + 1, par3, par4);
        renderer.aoBrightnessYZNP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 - 1, par4);
        renderer.aoBrightnessYZPP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 + 1, par4);
        flag3 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 + 1, par3, par4 + 1)];
        flag2 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 - 1, par3, par4 + 1)];
        flag5 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2, par3 + 1, par4 + 1)];
        flag4 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2, par3 - 1, par4 + 1)];
        if (!flag2 && !flag4) {
            renderer.aoLightValueScratchXYZNNP = renderer.aoLightValueScratchXZNP;
            renderer.aoBrightnessXYZNNP = renderer.aoBrightnessXZNP;
        } else {
            renderer.aoLightValueScratchXYZNNP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 - 1, par3 - 1, par4);
            renderer.aoBrightnessXYZNNP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 - 1, par3 - 1, par4);
        }
        if (!flag2 && !flag5) {
            renderer.aoLightValueScratchXYZNPP = renderer.aoLightValueScratchXZNP;
            renderer.aoBrightnessXYZNPP = renderer.aoBrightnessXZNP;
        } else {
            renderer.aoLightValueScratchXYZNPP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 - 1, par3 + 1, par4);
            renderer.aoBrightnessXYZNPP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 - 1, par3 + 1, par4);
        }
        if (!flag3 && !flag4) {
            renderer.aoLightValueScratchXYZPNP = renderer.aoLightValueScratchXZPP;
            renderer.aoBrightnessXYZPNP = renderer.aoBrightnessXZPP;
        } else {
            renderer.aoLightValueScratchXYZPNP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 + 1, par3 - 1, par4);
            renderer.aoBrightnessXYZPNP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 + 1, par3 - 1, par4);
        }
        if (!flag3 && !flag5) {
            renderer.aoLightValueScratchXYZPPP = renderer.aoLightValueScratchXZPP;
            renderer.aoBrightnessXYZPPP = renderer.aoBrightnessXZPP;
        } else {
            renderer.aoLightValueScratchXYZPPP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 + 1, par3 + 1, par4);
            renderer.aoBrightnessXYZPPP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 + 1, par3 + 1, par4);
        }
        if (renderer.renderMaxZ >= 1.0D) {
            --par4;
        }
        i1 = l;
        if (renderer.renderMaxZ >= 1.0D || !renderer.blockAccess.isBlockOpaqueCube(par2, par3, par4 + 1)) {
            i1 = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3, par4 + 1);
        }
        f7 = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3, par4 + 1);
        f3 = (renderer.aoLightValueScratchXZNP + renderer.aoLightValueScratchXYZNPP + f7 + renderer.aoLightValueScratchYZPP) / 4.0F;
        f6 = (f7 + renderer.aoLightValueScratchYZPP + renderer.aoLightValueScratchXZPP + renderer.aoLightValueScratchXYZPPP) / 4.0F;
        f5 = (renderer.aoLightValueScratchYZNP + f7 + renderer.aoLightValueScratchXYZPNP + renderer.aoLightValueScratchXZPP) / 4.0F;
        f4 = (renderer.aoLightValueScratchXYZNNP + renderer.aoLightValueScratchXZNP + renderer.aoLightValueScratchYZNP + f7) / 4.0F;
        renderer.brightnessTopLeft = renderer.getAoBrightness(renderer.aoBrightnessXZNP, renderer.aoBrightnessXYZNPP, renderer.aoBrightnessYZPP, i1);
        renderer.brightnessTopRight = renderer.getAoBrightness(renderer.aoBrightnessYZPP, renderer.aoBrightnessXZPP, renderer.aoBrightnessXYZPPP, i1);
        renderer.brightnessBottomRight = renderer.getAoBrightness(renderer.aoBrightnessYZNP, renderer.aoBrightnessXYZPNP, renderer.aoBrightnessXZPP, i1);
        renderer.brightnessBottomLeft = renderer.getAoBrightness(renderer.aoBrightnessXYZNNP, renderer.aoBrightnessXZNP, renderer.aoBrightnessYZNP, i1);
        if (flag1) {
            renderer.colorRedTopLeft = renderer.colorRedBottomLeft = renderer.colorRedBottomRight = renderer.colorRedTopRight = par5 * 0.8F;
            renderer.colorGreenTopLeft = renderer.colorGreenBottomLeft = renderer.colorGreenBottomRight = renderer.colorGreenTopRight = par6 * 0.8F;
            renderer.colorBlueTopLeft = renderer.colorBlueBottomLeft = renderer.colorBlueBottomRight = renderer.colorBlueTopRight = par7 * 0.8F;
        } else {
            renderer.colorRedTopLeft = renderer.colorRedBottomLeft = renderer.colorRedBottomRight = renderer.colorRedTopRight = 0.8F;
            renderer.colorGreenTopLeft = renderer.colorGreenBottomLeft = renderer.colorGreenBottomRight = renderer.colorGreenTopRight = 0.8F;
            renderer.colorBlueTopLeft = renderer.colorBlueBottomLeft = renderer.colorBlueBottomRight = renderer.colorBlueTopRight = 0.8F;
        }
        renderer.colorRedTopLeft *= f3;
        renderer.colorGreenTopLeft *= f3;
        renderer.colorBlueTopLeft *= f3;
        renderer.colorRedBottomLeft *= f4;
        renderer.colorGreenBottomLeft *= f4;
        renderer.colorBlueBottomLeft *= f4;
        renderer.colorRedBottomRight *= f5;
        renderer.colorGreenBottomRight *= f5;
        renderer.colorBlueBottomRight *= f5;
        renderer.colorRedTopRight *= f6;
        renderer.colorGreenTopRight *= f6;
        renderer.colorBlueTopRight *= f6;
        icon = renderer.getBlockIcon(par1Block, renderer.blockAccess, par2, par3, par4, 3);
        this.renderWestFace(renderer, par1Block, par2, par3, par4, renderer.getBlockIcon(par1Block, renderer.blockAccess, par2, par3, par4, 3));
        if (RenderBlocks.fancyGrass && icon.getIconName().equals("grass_side") && !renderer.hasOverrideBlockTexture()) {
            renderer.colorRedTopLeft *= par5;
            renderer.colorRedBottomLeft *= par5;
            renderer.colorRedBottomRight *= par5;
            renderer.colorRedTopRight *= par5;
            renderer.colorGreenTopLeft *= par6;
            renderer.colorGreenBottomLeft *= par6;
            renderer.colorGreenBottomRight *= par6;
            renderer.colorGreenTopRight *= par6;
            renderer.colorBlueTopLeft *= par7;
            renderer.colorBlueBottomLeft *= par7;
            renderer.colorBlueBottomRight *= par7;
            renderer.colorBlueTopRight *= par7;
            this.renderWestFace(renderer, par1Block, par2, par3, par4, BlockGrass.getIconSideOverlay());
        }
        flag = true;
    }
    if (renderer.renderAllFaces || par1Block.shouldSideBeRendered(renderer.blockAccess, par2 - 1, par3, par4, 4)) {
        if (renderer.renderMinX <= 0.0D) {
            --par2;
        }
        renderer.aoLightValueScratchXYNN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 - 1, par4);
        renderer.aoLightValueScratchXZNN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3, par4 - 1);
        renderer.aoLightValueScratchXZNP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3, par4 + 1);
        renderer.aoLightValueScratchXYNP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 + 1, par4);
        renderer.aoBrightnessXYNN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 - 1, par4);
        renderer.aoBrightnessXZNN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3, par4 - 1);
        renderer.aoBrightnessXZNP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3, par4 + 1);
        renderer.aoBrightnessXYNP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 + 1, par4);
        flag3 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 - 1, par3 + 1, par4)];
        flag2 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 - 1, par3 - 1, par4)];
        flag5 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 - 1, par3, par4 - 1)];
        flag4 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 - 1, par3, par4 + 1)];
        if (!flag5 && !flag2) {
            renderer.aoLightValueScratchXYZNNN = renderer.aoLightValueScratchXZNN;
            renderer.aoBrightnessXYZNNN = renderer.aoBrightnessXZNN;
        } else {
            renderer.aoLightValueScratchXYZNNN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 - 1, par4 - 1);
            renderer.aoBrightnessXYZNNN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 - 1, par4 - 1);
        }
        if (!flag4 && !flag2) {
            renderer.aoLightValueScratchXYZNNP = renderer.aoLightValueScratchXZNP;
            renderer.aoBrightnessXYZNNP = renderer.aoBrightnessXZNP;
        } else {
            renderer.aoLightValueScratchXYZNNP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 - 1, par4 + 1);
            renderer.aoBrightnessXYZNNP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 - 1, par4 + 1);
        }
        if (!flag5 && !flag3) {
            renderer.aoLightValueScratchXYZNPN = renderer.aoLightValueScratchXZNN;
            renderer.aoBrightnessXYZNPN = renderer.aoBrightnessXZNN;
        } else {
            renderer.aoLightValueScratchXYZNPN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 + 1, par4 - 1);
            renderer.aoBrightnessXYZNPN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 + 1, par4 - 1);
        }
        if (!flag4 && !flag3) {
            renderer.aoLightValueScratchXYZNPP = renderer.aoLightValueScratchXZNP;
            renderer.aoBrightnessXYZNPP = renderer.aoBrightnessXZNP;
        } else {
            renderer.aoLightValueScratchXYZNPP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 + 1, par4 + 1);
            renderer.aoBrightnessXYZNPP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 + 1, par4 + 1);
        }
        if (renderer.renderMinX <= 0.0D) {
            ++par2;
        }
        i1 = l;
        if (renderer.renderMinX <= 0.0D || !renderer.blockAccess.isBlockOpaqueCube(par2 - 1, par3, par4)) {
            i1 = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 - 1, par3, par4);
        }
        f7 = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 - 1, par3, par4);
        f6 = (renderer.aoLightValueScratchXYNN + renderer.aoLightValueScratchXYZNNP + f7 + renderer.aoLightValueScratchXZNP) / 4.0F;
        f3 = (f7 + renderer.aoLightValueScratchXZNP + renderer.aoLightValueScratchXYNP + renderer.aoLightValueScratchXYZNPP) / 4.0F;
        f4 = (renderer.aoLightValueScratchXZNN + f7 + renderer.aoLightValueScratchXYZNPN + renderer.aoLightValueScratchXYNP) / 4.0F;
        f5 = (renderer.aoLightValueScratchXYZNNN + renderer.aoLightValueScratchXYNN + renderer.aoLightValueScratchXZNN + f7) / 4.0F;
        renderer.brightnessTopRight = renderer.getAoBrightness(renderer.aoBrightnessXYNN, renderer.aoBrightnessXYZNNP, renderer.aoBrightnessXZNP, i1);
        renderer.brightnessTopLeft = renderer.getAoBrightness(renderer.aoBrightnessXZNP, renderer.aoBrightnessXYNP, renderer.aoBrightnessXYZNPP, i1);
        renderer.brightnessBottomLeft = renderer.getAoBrightness(renderer.aoBrightnessXZNN, renderer.aoBrightnessXYZNPN, renderer.aoBrightnessXYNP, i1);
        renderer.brightnessBottomRight = renderer.getAoBrightness(renderer.aoBrightnessXYZNNN, renderer.aoBrightnessXYNN, renderer.aoBrightnessXZNN, i1);
        if (flag1) {
            renderer.colorRedTopLeft = renderer.colorRedBottomLeft = renderer.colorRedBottomRight = renderer.colorRedTopRight = par5 * 0.6F;
            renderer.colorGreenTopLeft = renderer.colorGreenBottomLeft = renderer.colorGreenBottomRight = renderer.colorGreenTopRight = par6 * 0.6F;
            renderer.colorBlueTopLeft = renderer.colorBlueBottomLeft = renderer.colorBlueBottomRight = renderer.colorBlueTopRight = par7 * 0.6F;
        } else {
            renderer.colorRedTopLeft = renderer.colorRedBottomLeft = renderer.colorRedBottomRight = renderer.colorRedTopRight = 0.6F;
            renderer.colorGreenTopLeft = renderer.colorGreenBottomLeft = renderer.colorGreenBottomRight = renderer.colorGreenTopRight = 0.6F;
            renderer.colorBlueTopLeft = renderer.colorBlueBottomLeft = renderer.colorBlueBottomRight = renderer.colorBlueTopRight = 0.6F;
        }
        renderer.colorRedTopLeft *= f3;
        renderer.colorGreenTopLeft *= f3;
        renderer.colorBlueTopLeft *= f3;
        renderer.colorRedBottomLeft *= f4;
        renderer.colorGreenBottomLeft *= f4;
        renderer.colorBlueBottomLeft *= f4;
        renderer.colorRedBottomRight *= f5;
        renderer.colorGreenBottomRight *= f5;
        renderer.colorBlueBottomRight *= f5;
        renderer.colorRedTopRight *= f6;
        renderer.colorGreenTopRight *= f6;
        renderer.colorBlueTopRight *= f6;
        icon = renderer.getBlockIcon(par1Block, renderer.blockAccess, par2, par3, par4, 4);
        this.renderNorthFace(renderer, par1Block, par2, par3, par4, icon);
        if (RenderBlocks.fancyGrass && icon.getIconName().equals("grass_side") && !renderer.hasOverrideBlockTexture()) {
            renderer.colorRedTopLeft *= par5;
            renderer.colorRedBottomLeft *= par5;
            renderer.colorRedBottomRight *= par5;
            renderer.colorRedTopRight *= par5;
            renderer.colorGreenTopLeft *= par6;
            renderer.colorGreenBottomLeft *= par6;
            renderer.colorGreenBottomRight *= par6;
            renderer.colorGreenTopRight *= par6;
            renderer.colorBlueTopLeft *= par7;
            renderer.colorBlueBottomLeft *= par7;
            renderer.colorBlueBottomRight *= par7;
            renderer.colorBlueTopRight *= par7;
            this.renderNorthFace(renderer, par1Block, par2, par3, par4, BlockGrass.getIconSideOverlay());
        }
        flag = true;
    }
    if (renderer.renderAllFaces || par1Block.shouldSideBeRendered(renderer.blockAccess, par2 + 1, par3, par4, 5)) {
        if (renderer.renderMaxX >= 1.0D) {
            ++par2;
        }
        renderer.aoLightValueScratchXYPN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 - 1, par4);
        renderer.aoLightValueScratchXZPN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3, par4 - 1);
        renderer.aoLightValueScratchXZPP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3, par4 + 1);
        renderer.aoLightValueScratchXYPP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 + 1, par4);
        renderer.aoBrightnessXYPN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 - 1, par4);
        renderer.aoBrightnessXZPN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3, par4 - 1);
        renderer.aoBrightnessXZPP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3, par4 + 1);
        renderer.aoBrightnessXYPP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 + 1, par4);
        flag3 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 + 1, par3 + 1, par4)];
        flag2 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 + 1, par3 - 1, par4)];
        flag5 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 + 1, par3, par4 + 1)];
        flag4 = Block.canBlockGrass[renderer.blockAccess.getBlockId(par2 + 1, par3, par4 - 1)];
        if (!flag2 && !flag4) {
            renderer.aoLightValueScratchXYZPNN = renderer.aoLightValueScratchXZPN;
            renderer.aoBrightnessXYZPNN = renderer.aoBrightnessXZPN;
        } else {
            renderer.aoLightValueScratchXYZPNN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 - 1, par4 - 1);
            renderer.aoBrightnessXYZPNN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 - 1, par4 - 1);
        }
        if (!flag2 && !flag5) {
            renderer.aoLightValueScratchXYZPNP = renderer.aoLightValueScratchXZPP;
            renderer.aoBrightnessXYZPNP = renderer.aoBrightnessXZPP;
        } else {
            renderer.aoLightValueScratchXYZPNP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 - 1, par4 + 1);
            renderer.aoBrightnessXYZPNP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 - 1, par4 + 1);
        }
        if (!flag3 && !flag4) {
            renderer.aoLightValueScratchXYZPPN = renderer.aoLightValueScratchXZPN;
            renderer.aoBrightnessXYZPPN = renderer.aoBrightnessXZPN;
        } else {
            renderer.aoLightValueScratchXYZPPN = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 + 1, par4 - 1);
            renderer.aoBrightnessXYZPPN = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 + 1, par4 - 1);
        }
        if (!flag3 && !flag5) {
            renderer.aoLightValueScratchXYZPPP = renderer.aoLightValueScratchXZPP;
            renderer.aoBrightnessXYZPPP = renderer.aoBrightnessXZPP;
        } else {
            renderer.aoLightValueScratchXYZPPP = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2, par3 + 1, par4 + 1);
            renderer.aoBrightnessXYZPPP = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3 + 1, par4 + 1);
        }
        if (renderer.renderMaxX >= 1.0D) {
            --par2;
        }
        i1 = l;
        if (renderer.renderMaxX >= 1.0D || !renderer.blockAccess.isBlockOpaqueCube(par2 + 1, par3, par4)) {
            i1 = par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2 + 1, par3, par4);
        }
        f7 = par1Block.getAmbientOcclusionLightValue(renderer.blockAccess, par2 + 1, par3, par4);
        f3 = (renderer.aoLightValueScratchXYPN + renderer.aoLightValueScratchXYZPNP + f7 + renderer.aoLightValueScratchXZPP) / 4.0F;
        f4 = (renderer.aoLightValueScratchXYZPNN + renderer.aoLightValueScratchXYPN + renderer.aoLightValueScratchXZPN + f7) / 4.0F;
        f5 = (renderer.aoLightValueScratchXZPN + f7 + renderer.aoLightValueScratchXYZPPN + renderer.aoLightValueScratchXYPP) / 4.0F;
        f6 = (f7 + renderer.aoLightValueScratchXZPP + renderer.aoLightValueScratchXYPP + renderer.aoLightValueScratchXYZPPP) / 4.0F;
        renderer.brightnessTopLeft = renderer.getAoBrightness(renderer.aoBrightnessXYPN, renderer.aoBrightnessXYZPNP, renderer.aoBrightnessXZPP, i1);
        renderer.brightnessTopRight = renderer.getAoBrightness(renderer.aoBrightnessXZPP, renderer.aoBrightnessXYPP, renderer.aoBrightnessXYZPPP, i1);
        renderer.brightnessBottomRight = renderer.getAoBrightness(renderer.aoBrightnessXZPN, renderer.aoBrightnessXYZPPN, renderer.aoBrightnessXYPP, i1);
        renderer.brightnessBottomLeft = renderer.getAoBrightness(renderer.aoBrightnessXYZPNN, renderer.aoBrightnessXYPN, renderer.aoBrightnessXZPN, i1);
        if (flag1) {
            renderer.colorRedTopLeft = renderer.colorRedBottomLeft = renderer.colorRedBottomRight = renderer.colorRedTopRight = par5 * 0.6F;
            renderer.colorGreenTopLeft = renderer.colorGreenBottomLeft = renderer.colorGreenBottomRight = renderer.colorGreenTopRight = par6 * 0.6F;
            renderer.colorBlueTopLeft = renderer.colorBlueBottomLeft = renderer.colorBlueBottomRight = renderer.colorBlueTopRight = par7 * 0.6F;
        } else {
            renderer.colorRedTopLeft = renderer.colorRedBottomLeft = renderer.colorRedBottomRight = renderer.colorRedTopRight = 0.6F;
            renderer.colorGreenTopLeft = renderer.colorGreenBottomLeft = renderer.colorGreenBottomRight = renderer.colorGreenTopRight = 0.6F;
            renderer.colorBlueTopLeft = renderer.colorBlueBottomLeft = renderer.colorBlueBottomRight = renderer.colorBlueTopRight = 0.6F;
        }
        renderer.colorRedTopLeft *= f3;
        renderer.colorGreenTopLeft *= f3;
        renderer.colorBlueTopLeft *= f3;
        renderer.colorRedBottomLeft *= f4;
        renderer.colorGreenBottomLeft *= f4;
        renderer.colorBlueBottomLeft *= f4;
        renderer.colorRedBottomRight *= f5;
        renderer.colorGreenBottomRight *= f5;
        renderer.colorBlueBottomRight *= f5;
        renderer.colorRedTopRight *= f6;
        renderer.colorGreenTopRight *= f6;
        renderer.colorBlueTopRight *= f6;
        icon = renderer.getBlockIcon(par1Block, renderer.blockAccess, par2, par3, par4, 5);
        this.renderSouthFace(renderer, par1Block, par2, par3, par4, icon);
        if (RenderBlocks.fancyGrass && icon.getIconName().equals("grass_side") && !renderer.hasOverrideBlockTexture()) {
            renderer.colorRedTopLeft *= par5;
            renderer.colorRedBottomLeft *= par5;
            renderer.colorRedBottomRight *= par5;
            renderer.colorRedTopRight *= par5;
            renderer.colorGreenTopLeft *= par6;
            renderer.colorGreenBottomLeft *= par6;
            renderer.colorGreenBottomRight *= par6;
            renderer.colorGreenTopRight *= par6;
            renderer.colorBlueTopLeft *= par7;
            renderer.colorBlueBottomLeft *= par7;
            renderer.colorBlueBottomRight *= par7;
            renderer.colorBlueTopRight *= par7;
            this.renderSouthFace(renderer, par1Block, par2, par3, par4, BlockGrass.getIconSideOverlay());
        }
        flag = true;
    }
    renderer.enableAO = false;
    return flag;
}
Also used : Tessellator(net.minecraft.client.renderer.Tessellator) Icon(net.minecraft.util.Icon)

Aggregations

Icon (net.minecraft.util.Icon)9 Tessellator (net.minecraft.client.renderer.Tessellator)8 BlockFactoryGlass (powercrystals.minefactoryreloaded.block.BlockFactoryGlass)2 BlockFactoryGlassPane (powercrystals.minefactoryreloaded.block.BlockFactoryGlassPane)2 ItemStack (net.minecraft.item.ItemStack)1 LiquidStack (net.minecraftforge.liquids.LiquidStack)1