package com.jaquadro.minecraft.gardentrees.client.renderer;
import com.jaquadro.minecraft.gardentrees.core.ClientProxy;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
public class IvyRenderer implements ISimpleBlockRenderingHandler
{
@Override
public void renderInventoryBlock (Block block, int metadata, int modelId, RenderBlocks renderer) {
}
@Override
public boolean renderWorldBlock (IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
int color = block.colorMultiplier(world, x, y, z);
float r = (color >> 16 & 255) / 255f;
float g = (color >> 8 & 255) / 255f;
float b = (color & 255) / 255f;
Tessellator tessellator = Tessellator.instance;
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
tessellator.setColorOpaque_F(r, g, b);
double d = .05;
double[] uv = new double[4];
int meta = world.getBlockMetadata(x, y, z);
if ((meta & 2) != 0) {
IIcon icon = block.getIcon(world, x, y, z, 5);
getIconUV(icon, uv);
tessellator.addVertexWithUV(x + d, y + 1, z + 1, uv[0], uv[1]);
tessellator.addVertexWithUV(x + d, y + 0, z + 1, uv[0], uv[3]);
tessellator.addVertexWithUV(x + d, y + 0, z + 0, uv[2], uv[3]);
tessellator.addVertexWithUV(x + d, y + 1, z + 0, uv[2], uv[1]);
tessellator.addVertexWithUV(x + d, y + 1, z + 0, uv[2], uv[1]);
tessellator.addVertexWithUV(x + d, y + 0, z + 0, uv[2], uv[3]);
tessellator.addVertexWithUV(x + d, y + 0, z + 1, uv[0], uv[3]);
tessellator.addVertexWithUV(x + d, y + 1, z + 1, uv[0], uv[1]);
}
if ((meta & 8) != 0) {
IIcon icon = block.getIcon(world, x, y, z, 4);
getIconUV(icon, uv);
tessellator.addVertexWithUV(x + 1 - d, y + 0, z + 1, uv[2], uv[3]);
tessellator.addVertexWithUV(x + 1 - d, y + 1, z + 1, uv[2], uv[1]);
tessellator.addVertexWithUV(x + 1 - d, y + 1, z + 0, uv[0], uv[1]);
tessellator.addVertexWithUV(x + 1 - d, y + 0, z + 0, uv[0], uv[3]);
tessellator.addVertexWithUV(x + 1 - d, y + 0, z + 0, uv[0], uv[3]);
tessellator.addVertexWithUV(x + 1 - d, y + 1, z + 0, uv[0], uv[1]);
tessellator.addVertexWithUV(x + 1 - d, y + 1, z + 1, uv[2], uv[1]);
tessellator.addVertexWithUV(x + 1 - d, y + 0, z + 1, uv[2], uv[3]);
}
if ((meta & 4) != 0) {
IIcon icon = block.getIcon(world, x, y, z, 3);
getIconUV(icon, uv);
tessellator.addVertexWithUV(x + 1, y + 0, z + d, uv[2], uv[3]);
tessellator.addVertexWithUV(x + 1, y + 1, z + d, uv[2], uv[1]);
tessellator.addVertexWithUV(x + 0, y + 1, z + d, uv[0], uv[1]);
tessellator.addVertexWithUV(x + 0, y + 0, z + d, uv[0], uv[3]);
tessellator.addVertexWithUV(x + 0, y + 0, z + d, uv[0], uv[3]);
tessellator.addVertexWithUV(x + 0, y + 1, z + d, uv[0], uv[1]);
tessellator.addVertexWithUV(x + 1, y + 1, z + d, uv[2], uv[1]);
tessellator.addVertexWithUV(x + 1, y + 0, z + d, uv[2], uv[3]);
}
if ((meta & 1) != 0) {
IIcon icon = block.getIcon(world, x, y, z, 2);
getIconUV(icon, uv);
tessellator.addVertexWithUV(x + 1, y + 1, z + 1 - d, uv[0], uv[1]);
tessellator.addVertexWithUV(x + 1, y + 0, z + 1 - d, uv[0], uv[3]);
tessellator.addVertexWithUV(x + 0, y + 0, z + 1 - d, uv[2], uv[3]);
tessellator.addVertexWithUV(x + 0, y + 1, z + 1 - d, uv[2], uv[1]);
tessellator.addVertexWithUV(x + 0, y + 1, z + 1 - d, uv[2], uv[1]);
tessellator.addVertexWithUV(x + 0, y + 0, z + 1 - d, uv[2], uv[3]);
tessellator.addVertexWithUV(x + 1, y + 0, z + 1 - d, uv[0], uv[3]);
tessellator.addVertexWithUV(x + 1, y + 1, z + 1 - d, uv[0], uv[1]);
}
return true;
}
private void getIconUV (IIcon icon, double[] uv) {
uv[0] = icon.getMinU();
uv[1] = icon.getMinV();
uv[2] = icon.getMaxU();
uv[3] = icon.getMaxV();
}
@Override
public boolean shouldRender3DInInventory (int modelId) {
return false;
}
@Override
public int getRenderId () {
return ClientProxy.ivyRenderID;
}
}