package eu.thog92.isbrh.render; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.WorldRenderer; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.init.Blocks; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.world.World; /** * A simple class that add quads rendering (based on 1.7 RenderBlocks) */ public class SimpleBlockRender { public double renderMinX, renderMaxX, renderMinY, renderMaxY, renderMinZ, renderMaxZ; public int uvRotateEast, uvRotateWest, uvRotateSouth, uvRotateNorth, uvRotateTop, uvRotateBottom; ; public WorldRenderer worldRenderer; public boolean renderFromInside, flipTexture; /** * RGB colors by side */ public float colorRedTopLeft, colorGreenTopLeft, colorBlueTopLeft, colorRedBottomLeft, colorGreenBottomLeft, colorBlueBottomLeft, colorRedTopRight, colorGreenTopRight, colorBlueTopRight, colorRedBottomRight, colorGreenBottomRight, colorBlueBottomRight; /** * Brightness by side */ public int brightnessTopLeft, brightnessBottomLeft, brightnessBottomRight, brightnessTopRight; public boolean enableAO; public boolean renderAllFaces; private Minecraft minecraft; private World world; public SimpleBlockRender() { this.renderMaxX = 1.0; this.renderMaxY = 1.0; this.renderMaxZ = 1.0; this.minecraft = Minecraft.getMinecraft(); } public SimpleBlockRender(WorldRenderer renderer) { this(); this.worldRenderer = renderer; } public void setRenderFromInside(boolean value) { this.renderFromInside = value; } public void setRenderBounds(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) { this.renderMinX = minX; this.renderMaxX = maxX; this.renderMinY = minY; this.renderMaxY = maxY; this.renderMinZ = minZ; this.renderMaxZ = maxZ; } /** * Renders the given texture to the bottom face of the block. Args: block, * x, y, z, texture */ public void renderFaceYNeg(double x, double y, double z, TextureAtlasSprite texture) { double d3 = (double) texture.getInterpolatedU(this.renderMinX * 16.0D); double d4 = (double) texture.getInterpolatedU(this.renderMaxX * 16.0D); double d5 = (double) texture.getInterpolatedV(this.renderMinZ * 16.0D); double d6 = (double) texture.getInterpolatedV(this.renderMaxZ * 16.0D); if (this.renderMinX < 0.0D || this.renderMaxX > 1.0D) { d3 = (double) texture.getMinU(); d4 = (double) texture.getMaxU(); } if (this.renderMinZ < 0.0D || this.renderMaxZ > 1.0D) { d5 = (double) texture.getMinV(); d6 = (double) texture.getMaxV(); } double d7 = d4; double d8 = d3; double d9 = d5; double d10 = d6; if (this.uvRotateBottom == 2) { d3 = (double) texture.getInterpolatedU(this.renderMinZ * 16.0D); d5 = (double) texture .getInterpolatedV(16.0D - this.renderMaxX * 16.0D); d4 = (double) texture.getInterpolatedU(this.renderMaxZ * 16.0D); d6 = (double) texture .getInterpolatedV(16.0D - this.renderMinX * 16.0D); d9 = d5; d10 = d6; d7 = d3; d8 = d4; d5 = d6; d6 = d9; } else if (this.uvRotateBottom == 1) { d3 = (double) texture .getInterpolatedU(16.0D - this.renderMaxZ * 16.0D); d5 = (double) texture.getInterpolatedV(this.renderMinX * 16.0D); d4 = (double) texture .getInterpolatedU(16.0D - this.renderMinZ * 16.0D); d6 = (double) texture.getInterpolatedV(this.renderMaxX * 16.0D); d7 = d4; d8 = d3; d3 = d4; d4 = d8; d9 = d6; d10 = d5; } else if (this.uvRotateBottom == 3) { d3 = (double) texture .getInterpolatedU(16.0D - this.renderMinX * 16.0D); d4 = (double) texture .getInterpolatedU(16.0D - this.renderMaxX * 16.0D); d5 = (double) texture .getInterpolatedV(16.0D - this.renderMinZ * 16.0D); d6 = (double) texture .getInterpolatedV(16.0D - this.renderMaxZ * 16.0D); d7 = d4; d8 = d3; d9 = d5; d10 = d6; } double d11 = x + this.renderMinX; double d12 = x + this.renderMaxX; double d13 = y + this.renderMinY; double d14 = z + this.renderMinZ; double d15 = z + this.renderMaxZ; if (this.renderFromInside) { d11 = x + this.renderMaxX; d12 = x + this.renderMinX; } if (this.enableAO) { worldRenderer.setColorOpaque_F(this.colorRedTopLeft, this.colorGreenTopLeft, this.colorBlueTopLeft); worldRenderer.setBrightness(this.brightnessTopLeft); worldRenderer.addVertexWithUV(d12, d13, d15, d4, d6); worldRenderer.setColorOpaque_F(this.colorRedBottomLeft, this.colorGreenBottomLeft, this.colorBlueBottomLeft); worldRenderer.setBrightness(this.brightnessBottomLeft); worldRenderer.addVertexWithUV(d12, d13, d14, d7, d9); worldRenderer.setColorOpaque_F(this.colorRedBottomRight, this.colorGreenBottomRight, this.colorBlueBottomRight); worldRenderer.setBrightness(this.brightnessBottomRight); worldRenderer.addVertexWithUV(d11, d13, d14, d3, d5); worldRenderer.setColorOpaque_F(this.colorRedTopRight, this.colorGreenTopRight, this.colorBlueTopRight); worldRenderer.setBrightness(this.brightnessTopRight); worldRenderer.addVertexWithUV(d11, d13, d15, d8, d10); } else { worldRenderer.addVertexWithUV(d12, d13, d15, d4, d6); worldRenderer.addVertexWithUV(d12, d13, d14, d7, d9); worldRenderer.addVertexWithUV(d11, d13, d14, d3, d5); worldRenderer.addVertexWithUV(d11, d13, d15, d8, d10); } } /** * Renders the given texture to the top face of the block. Args: x, y, z, * texture */ public void renderFaceYPos(double x, double y, double z, TextureAtlasSprite texture) { double d3 = (double) texture.getInterpolatedU(this.renderMinX * 16.0D); double d4 = (double) texture.getInterpolatedU(this.renderMaxX * 16.0D); double d5 = (double) texture.getInterpolatedV(this.renderMinZ * 16.0D); double d6 = (double) texture.getInterpolatedV(this.renderMaxZ * 16.0D); if (this.renderMinX < 0.0D || this.renderMaxX > 1.0D) { d3 = (double) texture.getMinU(); d4 = (double) texture.getMaxU(); } if (this.renderMinZ < 0.0D || this.renderMaxZ > 1.0D) { d5 = (double) texture.getMinV(); d6 = (double) texture.getMaxV(); } double d7 = d4; double d8 = d3; double d9 = d5; double d10 = d6; if (this.uvRotateTop == 1) { d3 = (double) texture.getInterpolatedU(this.renderMinZ * 16.0D); d5 = (double) texture .getInterpolatedV(16.0D - this.renderMaxX * 16.0D); d4 = (double) texture.getInterpolatedU(this.renderMaxZ * 16.0D); d6 = (double) texture .getInterpolatedV(16.0D - this.renderMinX * 16.0D); d9 = d5; d10 = d6; d7 = d3; d8 = d4; d5 = d6; d6 = d9; } else if (this.uvRotateTop == 2) { d3 = (double) texture .getInterpolatedU(16.0D - this.renderMaxZ * 16.0D); d5 = (double) texture.getInterpolatedV(this.renderMinX * 16.0D); d4 = (double) texture .getInterpolatedU(16.0D - this.renderMinZ * 16.0D); d6 = (double) texture.getInterpolatedV(this.renderMaxX * 16.0D); d7 = d4; d8 = d3; d3 = d4; d4 = d8; d9 = d6; d10 = d5; } else if (this.uvRotateTop == 3) { d3 = (double) texture .getInterpolatedU(16.0D - this.renderMinX * 16.0D); d4 = (double) texture .getInterpolatedU(16.0D - this.renderMaxX * 16.0D); d5 = (double) texture .getInterpolatedV(16.0D - this.renderMinZ * 16.0D); d6 = (double) texture .getInterpolatedV(16.0D - this.renderMaxZ * 16.0D); d7 = d4; d8 = d3; d9 = d5; d10 = d6; } double d11 = x + this.renderMinX; double d12 = x + this.renderMaxX; double d13 = y + this.renderMaxY; double d14 = z + this.renderMinZ; double d15 = z + this.renderMaxZ; if (this.renderFromInside) { d11 = x + this.renderMaxX; d12 = x + this.renderMinX; } if (this.enableAO) { worldRenderer.setColorOpaque_F(this.colorRedTopLeft, this.colorGreenTopLeft, this.colorBlueTopLeft); worldRenderer.setBrightness(this.brightnessTopLeft); worldRenderer.addVertexWithUV(d11, d13, d15, d8, d10); worldRenderer.setColorOpaque_F(this.colorRedBottomLeft, this.colorGreenBottomLeft, this.colorBlueBottomLeft); worldRenderer.setBrightness(this.brightnessBottomLeft); worldRenderer.addVertexWithUV(d11, d13, d14, d3, d5); worldRenderer.setColorOpaque_F(this.colorRedBottomRight, this.colorGreenBottomRight, this.colorBlueBottomRight); worldRenderer.setBrightness(this.brightnessBottomRight); worldRenderer.addVertexWithUV(d12, d13, d14, d7, d9); worldRenderer.setColorOpaque_F(this.colorRedTopRight, this.colorGreenTopRight, this.colorBlueTopRight); worldRenderer.setBrightness(this.brightnessTopRight); worldRenderer.addVertexWithUV(d12, d13, d15, d4, d6); } else { worldRenderer.addVertexWithUV(d11, d13, d15, d8, d10); worldRenderer.addVertexWithUV(d11, d13, d14, d3, d5); worldRenderer.addVertexWithUV(d12, d13, d14, d7, d9); worldRenderer.addVertexWithUV(d12, d13, d15, d4, d6); } } /** * Renders the given texture to the north (z-negative) face of the block. * Args: x, y, z, texture */ public void renderFaceZNeg(double x, double y, double z, TextureAtlasSprite texture) { double d3 = (double) texture.getInterpolatedU(this.renderMinX * 16.0D); double d4 = (double) texture.getInterpolatedU(this.renderMaxX * 16.0D); double d5 = (double) texture .getInterpolatedV(16.0D - this.renderMaxY * 16.0D); double d6 = (double) texture .getInterpolatedV(16.0D - this.renderMinY * 16.0D); double d7; if (this.flipTexture) { d7 = d3; d3 = d4; d4 = d7; } if (this.renderMinX < 0.0D || this.renderMaxX > 1.0D) { d3 = (double) texture.getMinU(); d4 = (double) texture.getMaxU(); } if (this.renderMinY < 0.0D || this.renderMaxY > 1.0D) { d5 = (double) texture.getMinV(); d6 = (double) texture.getMaxV(); } d7 = d4; double d8 = d3; double d9 = d5; double d10 = d6; if (this.uvRotateEast == 2) { d3 = (double) texture.getInterpolatedU(this.renderMinY * 16.0D); d4 = (double) texture.getInterpolatedU(this.renderMaxY * 16.0D); d5 = (double) texture .getInterpolatedV(16.0D - this.renderMinX * 16.0D); d6 = (double) texture .getInterpolatedV(16.0D - this.renderMaxX * 16.0D); d9 = d5; d10 = d6; d7 = d3; d8 = d4; d5 = d6; d6 = d9; } else if (this.uvRotateEast == 1) { d3 = (double) texture .getInterpolatedU(16.0D - this.renderMaxY * 16.0D); d4 = (double) texture .getInterpolatedU(16.0D - this.renderMinY * 16.0D); d5 = (double) texture.getInterpolatedV(this.renderMaxX * 16.0D); d6 = (double) texture.getInterpolatedV(this.renderMinX * 16.0D); d7 = d4; d8 = d3; d3 = d4; d4 = d8; d9 = d6; d10 = d5; } else if (this.uvRotateEast == 3) { d3 = (double) texture .getInterpolatedU(16.0D - this.renderMinX * 16.0D); d4 = (double) texture .getInterpolatedU(16.0D - this.renderMaxX * 16.0D); d5 = (double) texture.getInterpolatedV(this.renderMaxY * 16.0D); d6 = (double) texture.getInterpolatedV(this.renderMinY * 16.0D); d7 = d4; d8 = d3; d9 = d5; d10 = d6; } double d11 = x + this.renderMinX; double d12 = x + this.renderMaxX; double d13 = y + this.renderMinY; double d14 = y + this.renderMaxY; double d15 = z + this.renderMinZ; if (this.renderFromInside) { d11 = x + this.renderMaxX; d12 = x + this.renderMinX; } if (this.enableAO) { worldRenderer.setColorOpaque_F(this.colorRedTopLeft, this.colorGreenTopLeft, this.colorBlueTopLeft); worldRenderer.setBrightness(this.brightnessTopLeft); worldRenderer.addVertexWithUV(d11, d14, d15, d7, d9); worldRenderer.setColorOpaque_F(this.colorRedBottomLeft, this.colorGreenBottomLeft, this.colorBlueBottomLeft); worldRenderer.setBrightness(this.brightnessBottomLeft); worldRenderer.addVertexWithUV(d12, d14, d15, d3, d5); worldRenderer.setColorOpaque_F(this.colorRedBottomRight, this.colorGreenBottomRight, this.colorBlueBottomRight); worldRenderer.setBrightness(this.brightnessBottomRight); worldRenderer.addVertexWithUV(d12, d13, d15, d8, d10); worldRenderer.setColorOpaque_F(this.colorRedTopRight, this.colorGreenTopRight, this.colorBlueTopRight); worldRenderer.setBrightness(this.brightnessTopRight); worldRenderer.addVertexWithUV(d11, d13, d15, d4, d6); } else { worldRenderer.addVertexWithUV(d11, d14, d15, d7, d9); worldRenderer.addVertexWithUV(d12, d14, d15, d3, d5); worldRenderer.addVertexWithUV(d12, d13, d15, d8, d10); worldRenderer.addVertexWithUV(d11, d13, d15, d4, d6); } } /** * Renders the given texture to the south (z-positive) face of the block. * Args: x, y, z, texture */ public void renderFaceZPos(double x, double y, double z, TextureAtlasSprite texture) { double d3 = (double) texture.getInterpolatedU(this.renderMinX * 16.0D); double d4 = (double) texture.getInterpolatedU(this.renderMaxX * 16.0D); double d5 = (double) texture .getInterpolatedV(16.0D - this.renderMaxY * 16.0D); double d6 = (double) texture .getInterpolatedV(16.0D - this.renderMinY * 16.0D); double d7; if (this.flipTexture) { d7 = d3; d3 = d4; d4 = d7; } if (this.renderMinX < 0.0D || this.renderMaxX > 1.0D) { d3 = (double) texture.getMinU(); d4 = (double) texture.getMaxU(); } if (this.renderMinY < 0.0D || this.renderMaxY > 1.0D) { d5 = (double) texture.getMinV(); d6 = (double) texture.getMaxV(); } d7 = d4; double d8 = d3; double d9 = d5; double d10 = d6; if (this.uvRotateWest == 1) { d3 = (double) texture.getInterpolatedU(this.renderMinY * 16.0D); d6 = (double) texture .getInterpolatedV(16.0D - this.renderMinX * 16.0D); d4 = (double) texture.getInterpolatedU(this.renderMaxY * 16.0D); d5 = (double) texture .getInterpolatedV(16.0D - this.renderMaxX * 16.0D); d9 = d5; d10 = d6; d7 = d3; d8 = d4; d5 = d6; d6 = d9; } else if (this.uvRotateWest == 2) { d3 = (double) texture .getInterpolatedU(16.0D - this.renderMaxY * 16.0D); d5 = (double) texture.getInterpolatedV(this.renderMinX * 16.0D); d4 = (double) texture .getInterpolatedU(16.0D - this.renderMinY * 16.0D); d6 = (double) texture.getInterpolatedV(this.renderMaxX * 16.0D); d7 = d4; d8 = d3; d3 = d4; d4 = d8; d9 = d6; d10 = d5; } else if (this.uvRotateWest == 3) { d3 = (double) texture .getInterpolatedU(16.0D - this.renderMinX * 16.0D); d4 = (double) texture .getInterpolatedU(16.0D - this.renderMaxX * 16.0D); d5 = (double) texture.getInterpolatedV(this.renderMaxY * 16.0D); d6 = (double) texture.getInterpolatedV(this.renderMinY * 16.0D); d7 = d4; d8 = d3; d9 = d5; d10 = d6; } double d11 = x + this.renderMinX; double d12 = x + this.renderMaxX; double d13 = y + this.renderMinY; double d14 = y + this.renderMaxY; double d15 = z + this.renderMaxZ; if (this.renderFromInside) { d11 = x + this.renderMaxX; d12 = x + this.renderMinX; } if (this.enableAO) { worldRenderer.setColorOpaque_F(this.colorRedTopLeft, this.colorGreenTopLeft, this.colorBlueTopLeft); worldRenderer.setBrightness(this.brightnessTopLeft); worldRenderer.addVertexWithUV(d11, d14, d15, d3, d5); worldRenderer.setColorOpaque_F(this.colorRedBottomLeft, this.colorGreenBottomLeft, this.colorBlueBottomLeft); worldRenderer.setBrightness(this.brightnessBottomLeft); worldRenderer.addVertexWithUV(d11, d13, d15, d8, d10); worldRenderer.setColorOpaque_F(this.colorRedBottomRight, this.colorGreenBottomRight, this.colorBlueBottomRight); worldRenderer.setBrightness(this.brightnessBottomRight); worldRenderer.addVertexWithUV(d12, d13, d15, d4, d6); worldRenderer.setColorOpaque_F(this.colorRedTopRight, this.colorGreenTopRight, this.colorBlueTopRight); worldRenderer.setBrightness(this.brightnessTopRight); worldRenderer.addVertexWithUV(d12, d14, d15, d7, d9); } else { worldRenderer.addVertexWithUV(d11, d14, d15, d3, d5); worldRenderer.addVertexWithUV(d11, d13, d15, d8, d10); worldRenderer.addVertexWithUV(d12, d13, d15, d4, d6); worldRenderer.addVertexWithUV(d12, d14, d15, d7, d9); } } /** * Renders the given texture to the west (x-negative) face of the block. * Args: x, y, z, texture */ public void renderFaceXNeg(double x, double y, double z, TextureAtlasSprite texture) { double d3 = (double) texture.getInterpolatedU(this.renderMinZ * 16.0D); double d4 = (double) texture.getInterpolatedU(this.renderMaxZ * 16.0D); double d5 = (double) texture .getInterpolatedV(16.0D - this.renderMaxY * 16.0D); double d6 = (double) texture .getInterpolatedV(16.0D - this.renderMinY * 16.0D); double d7; if (this.flipTexture) { d7 = d3; d3 = d4; d4 = d7; } if (this.renderMinZ < 0.0D || this.renderMaxZ > 1.0D) { d3 = (double) texture.getMinU(); d4 = (double) texture.getMaxU(); } if (this.renderMinY < 0.0D || this.renderMaxY > 1.0D) { d5 = (double) texture.getMinV(); d6 = (double) texture.getMaxV(); } d7 = d4; double d8 = d3; double d9 = d5; double d10 = d6; if (this.uvRotateNorth == 1) { d3 = (double) texture.getInterpolatedU(this.renderMinY * 16.0D); d5 = (double) texture .getInterpolatedV(16.0D - this.renderMaxZ * 16.0D); d4 = (double) texture.getInterpolatedU(this.renderMaxY * 16.0D); d6 = (double) texture .getInterpolatedV(16.0D - this.renderMinZ * 16.0D); d9 = d5; d10 = d6; d7 = d3; d8 = d4; d5 = d6; d6 = d9; } else if (this.uvRotateNorth == 2) { d3 = (double) texture .getInterpolatedU(16.0D - this.renderMaxY * 16.0D); d5 = (double) texture.getInterpolatedV(this.renderMinZ * 16.0D); d4 = (double) texture .getInterpolatedU(16.0D - this.renderMinY * 16.0D); d6 = (double) texture.getInterpolatedV(this.renderMaxZ * 16.0D); d7 = d4; d8 = d3; d3 = d4; d4 = d8; d9 = d6; d10 = d5; } else if (this.uvRotateNorth == 3) { d3 = (double) texture .getInterpolatedU(16.0D - this.renderMinZ * 16.0D); d4 = (double) texture .getInterpolatedU(16.0D - this.renderMaxZ * 16.0D); d5 = (double) texture.getInterpolatedV(this.renderMaxY * 16.0D); d6 = (double) texture.getInterpolatedV(this.renderMinY * 16.0D); d7 = d4; d8 = d3; d9 = d5; d10 = d6; } double d11 = x + this.renderMinX; double d12 = y + this.renderMinY; double d13 = y + this.renderMaxY; double d14 = z + this.renderMinZ; double d15 = z + this.renderMaxZ; if (this.renderFromInside) { d14 = z + this.renderMaxZ; d15 = z + this.renderMinZ; } if (this.enableAO) { worldRenderer.setColorOpaque_F(this.colorRedTopLeft, this.colorGreenTopLeft, this.colorBlueTopLeft); worldRenderer.setBrightness(this.brightnessTopLeft); worldRenderer.addVertexWithUV(d11, d13, d15, d7, d9); worldRenderer.setColorOpaque_F(this.colorRedBottomLeft, this.colorGreenBottomLeft, this.colorBlueBottomLeft); worldRenderer.setBrightness(this.brightnessBottomLeft); worldRenderer.addVertexWithUV(d11, d13, d14, d3, d5); worldRenderer.setColorOpaque_F(this.colorRedBottomRight, this.colorGreenBottomRight, this.colorBlueBottomRight); worldRenderer.setBrightness(this.brightnessBottomRight); worldRenderer.addVertexWithUV(d11, d12, d14, d8, d10); worldRenderer.setColorOpaque_F(this.colorRedTopRight, this.colorGreenTopRight, this.colorBlueTopRight); worldRenderer.setBrightness(this.brightnessTopRight); worldRenderer.addVertexWithUV(d11, d12, d15, d4, d6); } else { worldRenderer.addVertexWithUV(d11, d13, d15, d7, d9); worldRenderer.addVertexWithUV(d11, d13, d14, d3, d5); worldRenderer.addVertexWithUV(d11, d12, d14, d8, d10); worldRenderer.addVertexWithUV(d11, d12, d15, d4, d6); } } /** * Renders the given texture to the east (x-positive) face of the block. * Args: x, y, z, texture */ public void renderFaceXPos(double x, double y, double z, TextureAtlasSprite texture) { double d3 = (double) texture.getInterpolatedU(this.renderMinZ * 16.0D); double d4 = (double) texture.getInterpolatedU(this.renderMaxZ * 16.0D); double d5 = (double) texture .getInterpolatedV(16.0D - this.renderMaxY * 16.0D); double d6 = (double) texture .getInterpolatedV(16.0D - this.renderMinY * 16.0D); double d7; if (this.flipTexture) { d7 = d3; d3 = d4; d4 = d7; } if (this.renderMinZ < 0.0D || this.renderMaxZ > 1.0D) { d3 = (double) texture.getMinU(); d4 = (double) texture.getMaxU(); } if (this.renderMinY < 0.0D || this.renderMaxY > 1.0D) { d5 = (double) texture.getMinV(); d6 = (double) texture.getMaxV(); } d7 = d4; double d8 = d3; double d9 = d5; double d10 = d6; if (this.uvRotateSouth == 2) { d3 = (double) texture.getInterpolatedU(this.renderMinY * 16.0D); d5 = (double) texture .getInterpolatedV(16.0D - this.renderMinZ * 16.0D); d4 = (double) texture.getInterpolatedU(this.renderMaxY * 16.0D); d6 = (double) texture .getInterpolatedV(16.0D - this.renderMaxZ * 16.0D); d9 = d5; d10 = d6; d7 = d3; d8 = d4; d5 = d6; d6 = d9; } else if (this.uvRotateSouth == 1) { d3 = (double) texture .getInterpolatedU(16.0D - this.renderMaxY * 16.0D); d5 = (double) texture.getInterpolatedV(this.renderMaxZ * 16.0D); d4 = (double) texture .getInterpolatedU(16.0D - this.renderMinY * 16.0D); d6 = (double) texture.getInterpolatedV(this.renderMinZ * 16.0D); d7 = d4; d8 = d3; d3 = d4; d4 = d8; d9 = d6; d10 = d5; } else if (this.uvRotateSouth == 3) { d3 = (double) texture .getInterpolatedU(16.0D - this.renderMinZ * 16.0D); d4 = (double) texture .getInterpolatedU(16.0D - this.renderMaxZ * 16.0D); d5 = (double) texture.getInterpolatedV(this.renderMaxY * 16.0D); d6 = (double) texture.getInterpolatedV(this.renderMinY * 16.0D); d7 = d4; d8 = d3; d9 = d5; d10 = d6; } double d11 = x + this.renderMaxX; double d12 = y + this.renderMinY; double d13 = y + this.renderMaxY; double d14 = z + this.renderMinZ; double d15 = z + this.renderMaxZ; if (this.renderFromInside) { d14 = z + this.renderMaxZ; d15 = z + this.renderMinZ; } if (this.enableAO) { worldRenderer.setColorOpaque_F(this.colorRedTopLeft, this.colorGreenTopLeft, this.colorBlueTopLeft); worldRenderer.setBrightness(this.brightnessTopLeft); worldRenderer.addVertexWithUV(d11, d12, d15, d8, d10); worldRenderer.setColorOpaque_F(this.colorRedBottomLeft, this.colorGreenBottomLeft, this.colorBlueBottomLeft); worldRenderer.setBrightness(this.brightnessBottomLeft); worldRenderer.addVertexWithUV(d11, d12, d14, d4, d6); worldRenderer.setColorOpaque_F(this.colorRedBottomRight, this.colorGreenBottomRight, this.colorBlueBottomRight); worldRenderer.setBrightness(this.brightnessBottomRight); worldRenderer.addVertexWithUV(d11, d13, d14, d7, d9); worldRenderer.setColorOpaque_F(this.colorRedTopRight, this.colorGreenTopRight, this.colorBlueTopRight); worldRenderer.setBrightness(this.brightnessTopRight); worldRenderer.addVertexWithUV(d11, d13, d15, d3, d5); } else { worldRenderer.addVertexWithUV(d11, d12, d15, d8, d10); worldRenderer.addVertexWithUV(d11, d12, d14, d4, d6); worldRenderer.addVertexWithUV(d11, d13, d14, d7, d9); worldRenderer.addVertexWithUV(d11, d13, d15, d3, d5); } } public boolean renderInventoryStandardBlock( ITextureHandler textureManager, Tessellator tessellator) { IBlockState state = Blocks.air.getDefaultState(); if(textureManager instanceof Block) state = ((Block)textureManager).getDefaultState(); return this.renderInventoryStandardBlock(textureManager, state, tessellator); } public boolean renderInventoryStandardBlock( ITextureHandler textureManager, IBlockState state, Tessellator tessellator) { this.renderFromInside = true; // Inside Render worldRenderer.startDrawingQuads(); worldRenderer.setNormal(0.0F, -1F, 0.0F); this.renderFaceYNeg(0.0D, 0.0D, 0.0D, textureManager.getSidedTexture(state, EnumFacing.DOWN)); worldRenderer.setNormal(0.0F, 1.0F, 0.0F); this.renderFaceYPos(0.0D, 0.0D, 0.0D, textureManager.getSidedTexture(state, EnumFacing.UP)); worldRenderer.setNormal(0.0F, 0.0F, -1F); this.renderFaceZNeg(0.0D, 0.0D, 0.0D, textureManager.getSidedTexture(state, EnumFacing.NORTH)); worldRenderer.setNormal(0.0F, 0.0F, 1.0F); this.renderFaceZPos(0.0D, 0.0D, 0.0D, textureManager.getSidedTexture(state, EnumFacing.SOUTH)); worldRenderer.setNormal(-1F, 0.0F, 0.0F); this.renderFaceXNeg(0.0D, 0.0D, 0.0D, textureManager.getSidedTexture(state, EnumFacing.WEST)); worldRenderer.setNormal(1.0F, 0.0F, 0.0F); this.renderFaceXPos(0.0D, 0.0D, 0.0D, textureManager.getSidedTexture(state, EnumFacing.EAST)); tessellator.draw(); this.renderFromInside = false; // Normal Render worldRenderer.startDrawingQuads(); worldRenderer.setNormal(0.0F, -1F, 0.0F); this.renderFaceYNeg(0.0D, 0.0D, 0.0D, textureManager.getSidedTexture(state, EnumFacing.DOWN)); worldRenderer.setNormal(0.0F, 1.0F, 0.0F); this.renderFaceYPos(0.0D, 0.0D, 0.0D, textureManager.getSidedTexture(state, EnumFacing.UP)); worldRenderer.setNormal(0.0F, 0.0F, -1F); this.renderFaceZNeg(0.0D, 0.0D, 0.0D, textureManager.getSidedTexture(state, EnumFacing.NORTH)); worldRenderer.setNormal(0.0F, 0.0F, 1.0F); this.renderFaceZPos(0.0D, 0.0D, 0.0D, textureManager.getSidedTexture(state, EnumFacing.SOUTH)); worldRenderer.setNormal(-1F, 0.0F, 0.0F); this.renderFaceXNeg(0.0D, 0.0D, 0.0D, textureManager.getSidedTexture(state, EnumFacing.WEST)); worldRenderer.setNormal(1.0F, 0.0F, 0.0F); this.renderFaceXPos(0.0D, 0.0D, 0.0D, textureManager.getSidedTexture(state, EnumFacing.EAST)); tessellator.draw(); return true; } /** * Renders a standard cube block at the given coordinates. * Args: textureManager, pos */ public boolean renderStandardBlock(ITextureHandler textureManager, BlockPos pos) { if (world == null) world = minecraft.theWorld; Block block = this.world.getBlockState(pos).getBlock(); int l = this.world.getBlockState(pos).getBlock() .colorMultiplier(this.world, pos); float f = (float) (l >> 16 & 255) / 255.0F; float f1 = (float) (l >> 8 & 255) / 255.0F; float f2 = (float) (l & 255) / 255.0F; if (EntityRenderer.anaglyphEnable) { float f3 = (f * 30.0F + f1 * 59.0F + f2 * 11.0F) / 100.0F; float f4 = (f * 30.0F + f1 * 70.0F) / 100.0F; float f5 = (f * 30.0F + f2 * 70.0F) / 100.0F; f = f3; f1 = f4; f2 = f5; } this.renderFromInside = true; boolean inside = this.renderStandardBlockWithColorMultiplier(block, textureManager, pos, f, f1, f2); this.renderFromInside = false; return inside && this.renderStandardBlockWithColorMultiplier(block, textureManager, pos, f, f1, f2); } /** * Renders a standard cube block at the given coordinates, with a given * color ratio. Args: block, textureManager, pos, r, g, b */ public boolean renderStandardBlockWithColorMultiplier(Block block, ITextureHandler textureManager, BlockPos pos, float r, float g, float b) { if (world == null) world = minecraft.theWorld; this.enableAO = false; boolean flag = false; float f3 = 0.5F; float f4 = 1.0F; float f5 = 0.8F; float f6 = 0.6F; float f7 = f4 * r; float f8 = f4 * g; float f9 = f4 * b; 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 (block != Blocks.grass) { f10 = f3 * r; f11 = f5 * r; f12 = f6 * r; f13 = f3 * g; f14 = f5 * g; f15 = f6 * g; f16 = f3 * b; f17 = f5 * b; f18 = f6 * b; } int l = block.getMixedBrightnessForBlock(world, pos); IBlockState state = world.getBlockState(pos); if (this.renderAllFaces || block.shouldSideBeRendered(world, pos.down(), EnumFacing.DOWN)) { worldRenderer.setBrightness(this.renderMinY > 0.0D ? l : block .getMixedBrightnessForBlock(world, pos.down())); worldRenderer.setColorOpaque_F(f10, f13, f16); this.renderFaceYNeg(pos.getX(), pos.getY(), pos.getZ(), textureManager.getSidedTexture(state, EnumFacing.DOWN)); flag = true; } if (this.renderAllFaces || block.shouldSideBeRendered(world, pos.up(), EnumFacing.UP)) { worldRenderer.setBrightness(this.renderMaxY < 1.0D ? l : block .getMixedBrightnessForBlock(world, pos.up())); worldRenderer.setColorOpaque_F(f7, f8, f9); this.renderFaceYPos(pos.getX(), pos.getY(), pos.getZ(), textureManager.getSidedTexture(state, EnumFacing.UP)); flag = true; } if (this.renderAllFaces || block.shouldSideBeRendered(world, pos.north(), EnumFacing.NORTH)) { worldRenderer.setBrightness(this.renderMinZ > 0.0D ? l : block .getMixedBrightnessForBlock(world, pos.north())); worldRenderer.setColorOpaque_F(f11, f14, f17); this.renderFaceZNeg(pos.getX(), pos.getY(), pos.getZ(), textureManager.getSidedTexture(state, EnumFacing.NORTH)); flag = true; } if (this.renderAllFaces || block.shouldSideBeRendered(world, pos.south(), EnumFacing.SOUTH)) { worldRenderer.setBrightness(this.renderMaxZ < 1.0D ? l : block .getMixedBrightnessForBlock(world, pos.south())); worldRenderer.setColorOpaque_F(f11, f14, f17); this.renderFaceZPos(pos.getX(), pos.getY(), pos.getZ(), textureManager.getSidedTexture(state, EnumFacing.SOUTH)); flag = true; } if (this.renderAllFaces || block.shouldSideBeRendered(world, pos.west(), EnumFacing.WEST)) { worldRenderer.setBrightness(this.renderMinX > 0.0D ? l : block .getMixedBrightnessForBlock(world, pos.west())); worldRenderer.setColorOpaque_F(f12, f15, f18); ; this.renderFaceXNeg(pos.getX(), pos.getY(), pos.getZ(), textureManager.getSidedTexture(state, EnumFacing.WEST)); flag = true; } if (this.renderAllFaces || block.shouldSideBeRendered(world, pos.east(), EnumFacing.EAST)) { worldRenderer.setBrightness(this.renderMaxX < 1.0D ? l : block .getMixedBrightnessForBlock(world, pos.east())); worldRenderer.setColorOpaque_F(f12, f15, f18); this.renderFaceXPos(pos.getX(), pos.getY(), pos.getZ(), textureManager.getSidedTexture(state, EnumFacing.EAST)); flag = true; } return flag; } }