private void drawCrossedSquares( IBlockAccess blockAccess, double x, double y, double z, float size, Block block, int meta, RenderBlocks renderer) { Tessellator tessellator = Tessellator.instance; IIcon icon = renderer.getBlockIcon(block, blockAccess, (int) x, (int) y, (int) z, meta); if (renderer.hasOverrideBlockTexture()) { icon = renderer.overrideBlockTexture; } double minU = (double) icon.getMinU(); double minV = (double) icon.getMinV(); double maxU = (double) icon.getMaxU(); double maxV = (double) icon.getMaxV(); double scaledSize = 0.45D * (double) size; double minX = x + 0.5D - scaledSize; double maxX = x + 0.5D + scaledSize; double minZ = z + 0.5D - scaledSize; double maxZ = z + 0.5D + scaledSize; tessellator.addVertexWithUV(minX, y + (double) size, minZ, minU, minV); tessellator.addVertexWithUV(minX, y + 0.0D, minZ, minU, maxV); tessellator.addVertexWithUV(maxX, y + 0.0D, maxZ, maxU, maxV); tessellator.addVertexWithUV(maxX, y + (double) size, maxZ, maxU, minV); tessellator.addVertexWithUV(maxX, y + (double) size, maxZ, minU, minV); tessellator.addVertexWithUV(maxX, y + 0.0D, maxZ, minU, maxV); tessellator.addVertexWithUV(minX, y + 0.0D, minZ, maxU, maxV); tessellator.addVertexWithUV(minX, y + (double) size, minZ, maxU, minV); tessellator.addVertexWithUV(minX, y + (double) size, maxZ, minU, minV); tessellator.addVertexWithUV(minX, y + 0.0D, maxZ, minU, maxV); tessellator.addVertexWithUV(maxX, y + 0.0D, minZ, maxU, maxV); tessellator.addVertexWithUV(maxX, y + (double) size, minZ, maxU, minV); tessellator.addVertexWithUV(maxX, y + (double) size, minZ, minU, minV); tessellator.addVertexWithUV(maxX, y + 0.0D, minZ, minU, maxV); tessellator.addVertexWithUV(minX, y + 0.0D, maxZ, maxU, maxV); tessellator.addVertexWithUV(minX, y + (double) size, maxZ, maxU, minV); }
@Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) { Tessellator tessellator = Tessellator.instance; Icon icon = renderer.getBlockIcon(block); float red = 1.0F; float green = 1.0F; float blue = 1.0F; if (renderer.useInventoryTint) { int var6 = block.getRenderColor(metadata); red = (float) (var6 >> 16 & 255) / 255.0F; green = (float) (var6 >> 8 & 255) / 255.0F; blue = (float) (var6 & 255) / 255.0F; } GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); GL11.glScalef(1.5F, 1.5F, 1.5F); GL11.glTranslatef(-0.5F, -0.4F, -0.5F); GL11.glColor4f(red, green, blue, 1.0F); GL11.glEnable(GL11.GL_CULL_FACE); double minX = 4.0 / 16.0D; double minY = 0.0 / 16.0D; double minZ = 4.0 / 16.0D; double maxX = 12.0 / 16.0D; double maxY = 10.0 / 16.0D; double maxZ = 12.0 / 16.0D; double uvMinU = icon.getInterpolatedU(0.0D); double uvMaxU = icon.getInterpolatedU(8.0D); double uvMinV = icon.getInterpolatedV(6.0D); double uvMaxV = icon.getInterpolatedV(16.0D); tessellator.startDrawingQuads(); { tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(minX, minY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, minY, minZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX, minY, minZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, minY, minZ, uvMaxU, uvMaxV); } { tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMaxU, uvMaxV); } { tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(minX, minY, minZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, minY, minZ, uvMinU, uvMaxV); } { tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, minY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(maxX, minY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMinU, uvMaxV); } uvMinU = icon.getInterpolatedU(8.0D); uvMaxU = icon.getInterpolatedU(16.0D); uvMinV = icon.getInterpolatedV(8.0D); uvMaxV = icon.getInterpolatedV(16.0D); { tessellator.setColorOpaque_F(0.6F, 0.6F, 0.6F); tessellator.addVertexWithUV(maxX, minY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, minY, minZ, uvMinU, uvMaxV); tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMinU, uvMaxV); tessellator.setColorOpaque_F(0.6F, 0.6F, 0.6F); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMinU, uvMaxV); } minY = 2.0D / 16.0D; { tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(minX, minY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, minY, minZ, uvMinU, uvMaxV); } double indent = 3.0D / 16.0D; uvMinU = icon.getInterpolatedU(8.0D); uvMaxU = icon.getInterpolatedU(16.0D); uvMinV = icon.getInterpolatedV(1.0D); uvMaxV = icon.getInterpolatedV(8.0D); minX = 4.0D / 16.0D; maxX = 12.0D / 16.0D; minY = 2.0D / 16.0D; maxY = 9.0D / 16.0D; minZ = 4.0D / 16.0D; maxZ = 12.0D / 16.0D; { tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(minX, minY, minZ + indent, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, minZ + indent, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, minZ + indent, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, minY, minZ + indent, uvMinU, uvMaxV); tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(maxX, minY, minZ + indent, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, minZ + indent, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, maxY, minZ + indent, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, minY, minZ + indent, uvMaxU, uvMaxV); } { tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(maxX, minY, maxZ - indent, uvMaxU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, maxZ - indent, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, maxY, maxZ - indent, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, minY, maxZ - indent, uvMinU, uvMaxV); tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(minX, minY, maxZ - indent, uvMinU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, maxZ - indent, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, maxZ - indent, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, minY, maxZ - indent, uvMaxU, uvMaxV); } { tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(minX + indent, minY, minZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(minX + indent, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX + indent, maxY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX + indent, minY, maxZ, uvMaxU, uvMaxV); tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(minX + indent, minY, maxZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX + indent, maxY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX + indent, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX + indent, minY, minZ, uvMinU, uvMaxV); } { tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(maxX - indent, minY, maxZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX - indent, maxY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX - indent, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX - indent, minY, minZ, uvMaxU, uvMaxV); tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(maxX - indent, minY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(maxX - indent, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX - indent, maxY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX - indent, minY, maxZ, uvMinU, uvMaxV); } uvMinU = icon.getInterpolatedU(0.0D); uvMaxU = icon.getInterpolatedU(8.0D); uvMinV = icon.getInterpolatedV(1.0D); uvMaxV = icon.getInterpolatedV(6.0D); minX = 0.25F; maxX = 0.75F; minY = 10.0F / 16.0F; maxY = 15.0F / 16.0F; minZ = 0.5F; maxZ = 0.5F; { tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(minX, minY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, minY, minZ, uvMinU, uvMaxV); tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMaxU, uvMaxV); } tessellator.draw(); /*tessellator.startDrawingQuads(); tessellator.setNormal(0.0F, -1.0F, 0.0F); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(0.0F, 1.0F, 0.0F); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(0.0F, 0.0F, -1.0F); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(0.0F, 0.0F, 1.0F); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(-1.0F, 0.0F, 0.0F); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(1.0F, 0.0F, 0.0F); tessellator.draw();*/ GL11.glTranslatef(0.5F, 0.5F, 0.5F); GL11.glDisable(GL11.GL_CULL_FACE); }
@Override public boolean renderWorldBlock( IBlockAccess blockAccess, int i, int j, int k, Block bblock, int modelId, RenderBlocks renderer) { BlockLantern block = (BlockLantern) bblock; Icon icon = renderer.hasOverrideBlockTexture() ? renderer.overrideBlockTexture : renderer.getBlockIcon(block); int brightness = block.getMixedBrightnessForBlock(blockAccess, i, j, k); Tessellator tessellator = Tessellator.instance; double minX = 4.0 / 16.0D; double minY = 0.0 / 16.0D; double minZ = 4.0 / 16.0D; double maxX = 12.0 / 16.0D; double maxY = 10.0 / 16.0D; double maxZ = 12.0 / 16.0D; double uvMinU = icon.getInterpolatedU(0.0D); double uvMaxU = icon.getInterpolatedU(8.0D); double uvMinV = icon.getInterpolatedV(6.0D); double uvMaxV = icon.getInterpolatedV(16.0D); tessellator.setBrightness(brightness); tessellator.addTranslation((float) i, (float) j, (float) k); { tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(minX, minY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, minY, minZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX, minY, minZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, minY, minZ, uvMaxU, uvMaxV); } { tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMaxU, uvMaxV); } { tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(minX, minY, minZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, minY, minZ, uvMinU, uvMaxV); } { tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, minY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(maxX, minY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMinU, uvMaxV); } uvMinU = icon.getInterpolatedU(8.0D); uvMaxU = icon.getInterpolatedU(16.0D); uvMinV = icon.getInterpolatedV(8.0D); uvMaxV = icon.getInterpolatedV(16.0D); { tessellator.setColorOpaque_F(0.6F, 0.6F, 0.6F); tessellator.addVertexWithUV(maxX, minY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, minY, minZ, uvMinU, uvMaxV); tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMinU, uvMaxV); tessellator.setColorOpaque_F(0.6F, 0.6F, 0.6F); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMinU, uvMaxV); } minY = 2.0D / 16.0D; { tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(minX, minY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, minY, minZ, uvMinU, uvMaxV); } double indent = 3.0D / 16.0D; uvMinU = icon.getInterpolatedU(8.0D); uvMaxU = icon.getInterpolatedU(16.0D); uvMinV = icon.getInterpolatedV(1.0D); uvMaxV = icon.getInterpolatedV(8.0D); minX = 4.0D / 16.0D; maxX = 12.0D / 16.0D; minY = 2.0D / 16.0D; maxY = 9.0D / 16.0D; minZ = 4.0D / 16.0D; maxZ = 12.0D / 16.0D; { tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(minX, minY, minZ + indent, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, minZ + indent, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, minZ + indent, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, minY, minZ + indent, uvMinU, uvMaxV); tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(maxX, minY, minZ + indent, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, minZ + indent, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, maxY, minZ + indent, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, minY, minZ + indent, uvMaxU, uvMaxV); } { tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(maxX, minY, maxZ - indent, uvMaxU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, maxZ - indent, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, maxY, maxZ - indent, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, minY, maxZ - indent, uvMinU, uvMaxV); tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(minX, minY, maxZ - indent, uvMinU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, maxZ - indent, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, maxZ - indent, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, minY, maxZ - indent, uvMaxU, uvMaxV); } { tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(minX + indent, minY, minZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(minX + indent, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX + indent, maxY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX + indent, minY, maxZ, uvMaxU, uvMaxV); tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(minX + indent, minY, maxZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX + indent, maxY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX + indent, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX + indent, minY, minZ, uvMinU, uvMaxV); } { tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(maxX - indent, minY, maxZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX - indent, maxY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX - indent, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX - indent, minY, minZ, uvMaxU, uvMaxV); tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(maxX - indent, minY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(maxX - indent, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX - indent, maxY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX - indent, minY, maxZ, uvMinU, uvMaxV); } uvMinU = icon.getInterpolatedU(0.0D); uvMaxU = icon.getInterpolatedU(8.0D); uvMinV = icon.getInterpolatedV(1.0D); uvMaxV = icon.getInterpolatedV(6.0D); float handleRot = 0.0F; boolean renderDoubleHandle = false; boolean s1 = false; boolean s2 = false; boolean s3 = false; boolean s4 = false; if (blockAccess.isBlockOpaqueCube(i, j + 1, k)) { renderDoubleHandle = true; handleRot = 45.0F; } else if (!blockAccess.isBlockOpaqueCube(i, j - 1, k)) { s1 = blockAccess.isBlockOpaqueCube(i - 1, j, k); s2 = blockAccess.isBlockOpaqueCube(i, j, k - 1); s3 = blockAccess.isBlockOpaqueCube(i + 1, j, k); s4 = blockAccess.isBlockOpaqueCube(i, j, k + 1); if (s1 & s2 & s3 & s4) { handleRot = 45.0F; } else if ((s1 & s2) | (s3 & s4)) { handleRot = 45.0F; } else if ((s2 & s3) | (s4 & s1)) { handleRot = -45.0F; } else if (!s2 & !s4) { handleRot = 0.0F; } else if (!s1 & !s3) { handleRot = 90.0F; } } { double x1 = 0.5D - Math.sin(handleRot * Math.PI / 180.0D) * 0.25D; double x2 = 1.0D - x1; double z1 = 0.5D - Math.cos(handleRot * Math.PI / 180.0D) * 0.25D; double z2 = 1.0D - z1; double y1 = 10.0D / 16.0D; double y2 = 15.0D / 16.0D; tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(x1, y1, z1, uvMaxU, uvMaxV); tessellator.addVertexWithUV(x1, y2, z1, uvMaxU, uvMinV); tessellator.addVertexWithUV(x2, y2, z2, uvMinU, uvMinV); tessellator.addVertexWithUV(x2, y1, z2, uvMinU, uvMaxV); tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(x2, y1, z2, uvMinU, uvMaxV); tessellator.addVertexWithUV(x2, y2, z2, uvMinU, uvMinV); tessellator.addVertexWithUV(x1, y2, z1, uvMaxU, uvMinV); tessellator.addVertexWithUV(x1, y1, z1, uvMaxU, uvMaxV); } if (renderDoubleHandle) { double x1 = 0.5D - Math.sin((handleRot + 90) * Math.PI / 180.0D) * 0.25D; double x2 = 1.0D - x1; double z1 = 0.5D - Math.cos((handleRot + 90) * Math.PI / 180.0D) * 0.25D; double z2 = 1.0D - z1; double y1 = 18.0D / 16.0D; double y2 = 13.0D / 16.0D; tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(x1, y1, z1, uvMaxU, uvMaxV); tessellator.addVertexWithUV(x1, y2, z1, uvMaxU, uvMinV); tessellator.addVertexWithUV(x2, y2, z2, uvMinU, uvMinV); tessellator.addVertexWithUV(x2, y1, z2, uvMinU, uvMaxV); tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(x2, y1, z2, uvMinU, uvMaxV); tessellator.addVertexWithUV(x2, y2, z2, uvMinU, uvMinV); tessellator.addVertexWithUV(x1, y2, z1, uvMaxU, uvMinV); tessellator.addVertexWithUV(x1, y1, z1, uvMaxU, uvMaxV); } else { uvMinV = icon.getInterpolatedV(0.0D); uvMaxV = icon.getInterpolatedV(1.0D); minY = 13.0D / 16.0D; maxY = 14.0D / 16.0D; if (s1 | s3) { uvMinU = icon.getInterpolatedU(0.0D); uvMaxU = icon.getInterpolatedU(16.0D); minZ = 7.5D / 16.0D; maxZ = 1.0D - minZ; if (s1) { uvMinU = icon.getInterpolatedU(0.0D); minX = 0.0D; } else { uvMinU = icon.getInterpolatedU(7.0D); minX = 6.0D / 16.0D; double uv2MinU = icon.getInterpolatedU(0.0D); double uv2MaxU = icon.getInterpolatedU(1.0D); double uv2MinV = icon.getInterpolatedV(0.0D); double uv2MaxV = icon.getInterpolatedV(1.0D); tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(minX, minY, maxZ, uv2MinU, uv2MaxV); tessellator.addVertexWithUV(minX, maxY, maxZ, uv2MinU, uv2MinV); tessellator.addVertexWithUV(minX, maxY, minZ, uv2MaxU, uv2MinV); tessellator.addVertexWithUV(minX, minY, minZ, uv2MaxU, uv2MaxV); } if (s3) { uvMaxU = icon.getInterpolatedU(16.0D); maxX = 1.0D; } else { uvMaxU = icon.getInterpolatedU(9.0D); maxX = 10.0D / 16.0D; double uv2MinU = icon.getInterpolatedU(0.0D); double uv2MaxU = icon.getInterpolatedU(1.0D); double uv2MinV = icon.getInterpolatedV(0.0D); double uv2MaxV = icon.getInterpolatedV(1.0D); tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(maxX, minY, minZ, uv2MinU, uv2MaxV); tessellator.addVertexWithUV(maxX, maxY, minZ, uv2MinU, uv2MinV); tessellator.addVertexWithUV(maxX, maxY, maxZ, uv2MaxU, uv2MinV); tessellator.addVertexWithUV(maxX, minY, maxZ, uv2MaxU, uv2MaxV); } tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMaxU, uvMaxV); tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(minX, minY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, minY, minZ, uvMinU, uvMaxV); tessellator.setColorOpaque_F(0.6F, 0.6F, 0.6F); tessellator.addVertexWithUV(maxX, minY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, minY, minZ, uvMinU, uvMaxV); tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMaxU, uvMaxV); } if (s2 | s4) { uvMinU = icon.getInterpolatedU(0.0D); uvMaxU = icon.getInterpolatedU(16.0D); minX = 7.5D / 16.0D; maxX = 1.0D - minX; if (s2) { uvMinU = icon.getInterpolatedU(0.0D); minZ = 0.0D; } else { uvMinU = icon.getInterpolatedU(7.0D); minZ = 6.0D / 16.0D; double uv2MinU = icon.getInterpolatedU(0.0D); double uv2MaxU = icon.getInterpolatedU(1.0D); double uv2MinV = icon.getInterpolatedV(0.0D); double uv2MaxV = icon.getInterpolatedV(1.0D); tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(minX, minY, minZ, uv2MaxU, uv2MaxV); tessellator.addVertexWithUV(minX, maxY, minZ, uv2MaxU, uv2MinV); tessellator.addVertexWithUV(maxX, maxY, minZ, uv2MinU, uv2MinV); tessellator.addVertexWithUV(maxX, minY, minZ, uv2MinU, uv2MaxV); } if (s4) { uvMaxU = icon.getInterpolatedU(16.0D); maxZ = 1.0D; } else { uvMaxU = icon.getInterpolatedU(9.0D); maxZ = 10.0D / 16.0D; double uv2MinU = icon.getInterpolatedU(0.0D); double uv2MaxU = icon.getInterpolatedU(1.0D); double uv2MinV = icon.getInterpolatedV(0.0D); double uv2MaxV = icon.getInterpolatedV(1.0D); tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(maxX, minY, maxZ, uv2MaxU, uv2MaxV); tessellator.addVertexWithUV(maxX, maxY, maxZ, uv2MaxU, uv2MinV); tessellator.addVertexWithUV(minX, maxY, maxZ, uv2MinU, uv2MinV); tessellator.addVertexWithUV(minX, minY, maxZ, uv2MinU, uv2MaxV); } tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMinU, uvMinV); tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(minX, minY, maxZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(minX, maxY, maxZ, uvMinU, uvMinV); tessellator.addVertexWithUV(minX, maxY, minZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, minY, minZ, uvMaxU, uvMaxV); tessellator.setColorOpaque_F(0.6F, 0.6F, 0.6F); tessellator.addVertexWithUV(maxX, minY, minZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMaxU, uvMaxV); tessellator.addVertexWithUV(minX, minY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(minX, minY, minZ, uvMinU, uvMinV); tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F); tessellator.addVertexWithUV(maxX, minY, minZ, uvMinU, uvMaxV); tessellator.addVertexWithUV(maxX, maxY, minZ, uvMinU, uvMinV); tessellator.addVertexWithUV(maxX, maxY, maxZ, uvMaxU, uvMinV); tessellator.addVertexWithUV(maxX, minY, maxZ, uvMaxU, uvMaxV); } } tessellator.addTranslation((float) -i, (float) -j, (float) -k); return true; }
@Override public boolean renderWorldBlock( IBlockAccess world, int par2, int par3, int par4, Block par1Block, int modelId, RenderBlocks renderer) { if (modelId == model) { int l = renderer.blockAccess.getBlockMetadata(par2, par3, par4); int i1 = l & 7; boolean flag = (l & 8) > 0; Tessellator tessellator = Tessellator.instance; boolean flag1 = renderer.hasOverrideBlockTexture(); if (!flag1) { renderer.setOverrideBlockTexture(renderer.getBlockIcon(Block.netherrack)); } float f = 0.25F; float f1 = 0.1875F; float f2 = 0.1875F; if (i1 == 5) { renderer.setRenderBounds( (double) (0.5F - f1), 0.0D, (double) (0.5F - f), (double) (0.5F + f1), (double) f2, (double) (0.5F + f)); } else if (i1 == 6) { renderer.setRenderBounds( (double) (0.5F - f), 0.0D, (double) (0.5F - f1), (double) (0.5F + f), (double) f2, (double) (0.5F + f1)); } else if (i1 == 4) { renderer.setRenderBounds( (double) (0.5F - f1), (double) (0.5F - f), (double) (1.0F - f2), (double) (0.5F + f1), (double) (0.5F + f), 1.0D); } else if (i1 == 3) { renderer.setRenderBounds( (double) (0.5F - f1), (double) (0.5F - f), 0.0D, (double) (0.5F + f1), (double) (0.5F + f), (double) f2); } else if (i1 == 2) { renderer.setRenderBounds( (double) (1.0F - f2), (double) (0.5F - f), (double) (0.5F - f1), 1.0D, (double) (0.5F + f), (double) (0.5F + f1)); } else if (i1 == 1) { renderer.setRenderBounds( 0.0D, (double) (0.5F - f), (double) (0.5F - f1), (double) f2, (double) (0.5F + f), (double) (0.5F + f1)); } else if (i1 == 0) { renderer.setRenderBounds( (double) (0.5F - f), (double) (1.0F - f2), (double) (0.5F - f1), (double) (0.5F + f), 1.0D, (double) (0.5F + f1)); } else if (i1 == 7) { renderer.setRenderBounds( (double) (0.5F - f1), (double) (1.0F - f2), (double) (0.5F - f), (double) (0.5F + f1), 1.0D, (double) (0.5F + f)); } renderer.renderStandardBlock(par1Block, par2, par3, par4); if (!flag1) { renderer.clearOverrideBlockTexture(); } tessellator.setBrightness( par1Block.getMixedBrightnessForBlock(renderer.blockAccess, par2, par3, par4)); float f3 = 1.0F; if (Block.lightValue[par1Block.blockID] > 0) { f3 = 1.0F; } tessellator.setColorOpaque_F(f3, f3, f3); Icon icon = renderer.getBlockIconFromSide(par1Block, 0); if (renderer.hasOverrideBlockTexture()) { icon = renderer.overrideBlockTexture; } double d0 = (double) icon.getMinU(); double d1 = (double) icon.getMinV(); double d2 = (double) icon.getMaxU(); double d3 = (double) icon.getMaxV(); Vec3[] avec3 = new Vec3[8]; float f4 = 0.0625F; float f5 = 0.0625F; float f6 = 0.625F; avec3[0] = renderer .blockAccess .getWorldVec3Pool() .getVecFromPool((double) (-f4), 0.0D, (double) (-f5)); avec3[1] = renderer.blockAccess.getWorldVec3Pool().getVecFromPool((double) f4, 0.0D, (double) (-f5)); avec3[2] = renderer.blockAccess.getWorldVec3Pool().getVecFromPool((double) f4, 0.0D, (double) f5); avec3[3] = renderer.blockAccess.getWorldVec3Pool().getVecFromPool((double) (-f4), 0.0D, (double) f5); avec3[4] = renderer .blockAccess .getWorldVec3Pool() .getVecFromPool((double) (-f4), (double) f6, (double) (-f5)); avec3[5] = renderer .blockAccess .getWorldVec3Pool() .getVecFromPool((double) f4, (double) f6, (double) (-f5)); avec3[6] = renderer .blockAccess .getWorldVec3Pool() .getVecFromPool((double) f4, (double) f6, (double) f5); avec3[7] = renderer .blockAccess .getWorldVec3Pool() .getVecFromPool((double) (-f4), (double) f6, (double) f5); for (int j1 = 0; j1 < 8; ++j1) { if (flag) { avec3[j1].zCoord -= 0.0625D; avec3[j1].rotateAroundX(((float) Math.PI * 2F / 9F)); } else { avec3[j1].zCoord += 0.0625D; avec3[j1].rotateAroundX(-((float) Math.PI * 2F / 9F)); } if (i1 == 0 || i1 == 7) { avec3[j1].rotateAroundZ((float) Math.PI); } if (i1 == 6 || i1 == 0) { avec3[j1].rotateAroundY(((float) Math.PI / 2F)); } if (i1 > 0 && i1 < 5) { avec3[j1].yCoord -= 0.375D; avec3[j1].rotateAroundX(((float) Math.PI / 2F)); if (i1 == 4) { avec3[j1].rotateAroundY(0.0F); } if (i1 == 3) { avec3[j1].rotateAroundY((float) Math.PI); } if (i1 == 2) { avec3[j1].rotateAroundY(((float) Math.PI / 2F)); } if (i1 == 1) { avec3[j1].rotateAroundY(-((float) Math.PI / 2F)); } avec3[j1].xCoord += (double) par2 + 0.5D; avec3[j1].yCoord += (double) ((float) par3 + 0.5F); avec3[j1].zCoord += (double) par4 + 0.5D; } else if (i1 != 0 && i1 != 7) { avec3[j1].xCoord += (double) par2 + 0.5D; avec3[j1].yCoord += (double) ((float) par3 + 0.125F); avec3[j1].zCoord += (double) par4 + 0.5D; } else { avec3[j1].xCoord += (double) par2 + 0.5D; avec3[j1].yCoord += (double) ((float) par3 + 0.875F); avec3[j1].zCoord += (double) par4 + 0.5D; } } Vec3 vec3 = null; Vec3 vec31 = null; Vec3 vec32 = null; Vec3 vec33 = null; for (int k1 = 0; k1 < 6; ++k1) { if (k1 == 0) { d0 = (double) icon.getInterpolatedU(7.0D); d1 = (double) icon.getInterpolatedV(6.0D); d2 = (double) icon.getInterpolatedU(9.0D); d3 = (double) icon.getInterpolatedV(8.0D); } else if (k1 == 2) { d0 = (double) icon.getInterpolatedU(7.0D); d1 = (double) icon.getInterpolatedV(6.0D); d2 = (double) icon.getInterpolatedU(9.0D); d3 = (double) icon.getMaxV(); } if (k1 == 0) { vec3 = avec3[0]; vec31 = avec3[1]; vec32 = avec3[2]; vec33 = avec3[3]; } else if (k1 == 1) { vec3 = avec3[7]; vec31 = avec3[6]; vec32 = avec3[5]; vec33 = avec3[4]; } else if (k1 == 2) { vec3 = avec3[1]; vec31 = avec3[0]; vec32 = avec3[4]; vec33 = avec3[5]; } else if (k1 == 3) { vec3 = avec3[2]; vec31 = avec3[1]; vec32 = avec3[5]; vec33 = avec3[6]; } else if (k1 == 4) { vec3 = avec3[3]; vec31 = avec3[2]; vec32 = avec3[6]; vec33 = avec3[7]; } else if (k1 == 5) { vec3 = avec3[0]; vec31 = avec3[3]; vec32 = avec3[7]; vec33 = avec3[4]; } tessellator.addVertexWithUV(vec3.xCoord, vec3.yCoord, vec3.zCoord, d0, d3); tessellator.addVertexWithUV(vec31.xCoord, vec31.yCoord, vec31.zCoord, d2, d3); tessellator.addVertexWithUV(vec32.xCoord, vec32.yCoord, vec32.zCoord, d2, d1); tessellator.addVertexWithUV(vec33.xCoord, vec33.yCoord, vec33.zCoord, d0, d1); } } return true; }