package net.tropicraft.client.renderer.block;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.EntityRenderer;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.tropicraft.block.BlockBambooShoot;
import net.tropicraft.info.TCRenderIDs;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
public class BambooShootRenderHandler implements ISimpleBlockRenderingHandler {
public BambooShootRenderHandler() {
}
@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) {
if (modelId == getRenderId()) {
Tessellator tessellator = Tessellator.instance;
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
int l = block.colorMultiplier(world, x, y, z);
float f = (float)(l >> 16 & 255) / 255.0F;
float f1 = (float)(l >> 8 & 255) / 255.0F;
float f2 = (float)(l & 255) / 255.0F;
float f4;
if (EntityRenderer.anaglyphEnable)
{
float f3 = (f * 30.0F + f1 * 59.0F + f2 * 11.0F) / 100.0F;
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;
}
tessellator.setColorOpaque_F(f, f1, f2);
float sixteenth = 1f/16f;
IIcon sideTex = BlockBambooShoot.getBambooIcon("side");
IIcon topTex = BlockBambooShoot.getBambooIcon("top");
IIcon bottomTex = BlockBambooShoot.getBambooIcon("bottom");
IIcon indentTex = BlockBambooShoot.getBambooIcon("indent");
IIcon leafTex = BlockBambooShoot.getBambooIcon("leaf");
IIcon leafFlippedTex = BlockBambooShoot.getBambooIcon("leafFlipped");
// indent 1
renderer.renderFaceYNeg(block, x+sixteenth/2f, y, z+sixteenth/2f, bottomTex);
renderer.renderFaceXPos(block, x - 3.5*sixteenth, y, z+sixteenth/2f, indentTex);
renderer.renderFaceXNeg(block, x + 3.5*sixteenth, y, z+sixteenth/2f, indentTex);
renderer.renderFaceZPos(block, x+sixteenth/2f, y, z - 3.5*sixteenth, indentTex);
renderer.renderFaceZNeg(block, x+sixteenth/2f, y, z + 3.5*sixteenth, indentTex);
// bottom base
renderer.renderFaceYNeg(block, x, y + sixteenth, z, topTex);
renderer.renderFaceXPos(block, x - 3*sixteenth, y + sixteenth, z, sideTex);
renderer.renderFaceXNeg(block, x + 3*sixteenth, y + sixteenth, z, sideTex);
renderer.renderFaceZPos(block, x, y + sixteenth, z - 3*sixteenth, sideTex);
renderer.renderFaceZNeg(block, x, y + sixteenth, z + 3*sixteenth, sideTex);
renderer.renderFaceYPos(block, x, y - 8*sixteenth, z, topTex);
// indent 2
renderer.renderFaceXPos(block, x - 3.5*sixteenth, y + 8*sixteenth, z+sixteenth/2f, indentTex);
renderer.renderFaceXNeg(block, x + 3.5*sixteenth, y + 8*sixteenth, z+sixteenth/2f, indentTex);
renderer.renderFaceZPos(block, x+sixteenth/2f, y + 8*sixteenth, z - 3.5*sixteenth, indentTex);
renderer.renderFaceZNeg(block, x+sixteenth/2f, y + 8*sixteenth, z + 3.5*sixteenth, indentTex);
// top base
renderer.renderFaceYNeg(block, x, y + 9*sixteenth, z, topTex);
renderer.renderFaceXPos(block, x - 3*sixteenth, y + 9*sixteenth, z, sideTex);
renderer.renderFaceXNeg(block, x + 3*sixteenth, y + 9*sixteenth, z, sideTex);
renderer.renderFaceZPos(block, x, y + 9*sixteenth, z - 3*sixteenth, sideTex);
renderer.renderFaceZNeg(block, x, y + 9*sixteenth, z + 3*sixteenth, sideTex);
renderer.renderFaceYPos(block, x, y, z, topTex);
float leafOffset1 = 5.5f*sixteenth;
float leafOffset2 = 9f*sixteenth;
float leafOffsetY = 3.5f*sixteenth;
// leaf
if (y % 2 == 0) {
renderer.renderFaceXPos(block, x-leafOffset1, y+leafOffsetY, z+leafOffset2, leafTex);
renderer.renderFaceXNeg(block, x+leafOffset1, y+leafOffsetY, z+leafOffset2, leafTex);
renderer.renderFaceXPos(block, x-leafOffset1, y+leafOffsetY, z-leafOffset2, leafFlippedTex);
renderer.renderFaceXNeg(block, x+leafOffset1, y+leafOffsetY, z-leafOffset2, leafFlippedTex);
} else {
renderer.renderFaceZPos(block, x+leafOffset2, y+leafOffsetY, z-leafOffset1, leafTex);
renderer.renderFaceZNeg(block, x+leafOffset2, y+leafOffsetY, z+leafOffset1, leafTex);
renderer.renderFaceZPos(block, x-leafOffset2, y+leafOffsetY, z-leafOffset1, leafFlippedTex);
renderer.renderFaceZNeg(block, x-leafOffset2, y+leafOffsetY, z+leafOffset1, leafFlippedTex);
}
}
return false;
}
@Override
public boolean shouldRender3DInInventory(int modelId) {
return false;
}
@Override
public int getRenderId() {
return TCRenderIDs.bambooShoot;
}
}