package com.cricketcraft.chisel.client.render;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.world.IBlockAccess;
import org.lwjgl.opengl.GL11;
import com.cricketcraft.chisel.block.BlockSnakestone;
import com.cricketcraft.ctmlib.Drawing;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import cpw.mods.fml.client.registry.RenderingRegistry;
public class RendererSnakeStone implements ISimpleBlockRenderingHandler {
public static int id;
public RendererSnakeStone() {
id = RenderingRegistry.getNextAvailableRenderId();
}
@Override
public void renderInventoryBlock(Block block, int meta, int modelID, RenderBlocks renderer) {
setRenderRotate(renderer, (BlockSnakestone) block, meta);
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
Drawing.drawBlock(block, meta, renderer);
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
restoreRendererRotate(renderer);
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
int meta = world.getBlockMetadata(x, y, z);
setRenderRotate(renderer, (BlockSnakestone) block, meta);
boolean didRender = renderer.renderStandardBlock(block, x, y, z);
restoreRendererRotate(renderer);
return didRender;
}
private void restoreRendererRotate(RenderBlocks renderer) {
renderer.uvRotateSouth = 0;
renderer.uvRotateEast = 0;
renderer.uvRotateWest = 0;
renderer.uvRotateNorth = 0;
renderer.uvRotateTop = 0;
renderer.uvRotateBottom = 0;
}
private void setRenderRotate(RenderBlocks renderer, BlockSnakestone block, int meta) {
int type = meta & 0xC;
int orient = meta & 0x3;
if (type == 0) {
switch (orient) {
case 0:
renderer.uvRotateTop = 1;
renderer.uvRotateBottom = 2;
break;
case 1:
renderer.uvRotateTop = 1;
renderer.uvRotateBottom = 1;
break;
case 2:
renderer.uvRotateTop = 0;
renderer.uvRotateBottom = 3;
break;
case 3:
renderer.uvRotateTop = 0;
renderer.uvRotateBottom = 0;
}
} else if ((type == 4) || (type == 8)) {
switch (orient) {
case 0:
renderer.uvRotateTop = block.flipTopTextures ? 1 : 2;
renderer.uvRotateBottom = 1;
renderer.uvRotateWest = 2;
break;
case 1:
renderer.uvRotateTop = 1;
renderer.uvRotateBottom = 1;
renderer.uvRotateEast = 2;
break;
case 2:
renderer.uvRotateTop = block.flipTopTextures ? 0 : 3;
renderer.uvRotateBottom = 0;
renderer.uvRotateSouth = 2;
break;
case 3:
renderer.uvRotateTop = 0;
renderer.uvRotateBottom = 0;
renderer.uvRotateNorth = 2;
}
} else if (type == 12) {
switch (orient) {
case 0:
renderer.uvRotateTop = 0;
renderer.uvRotateBottom = 0;
break;
case 1:
renderer.uvRotateTop = 1;
renderer.uvRotateBottom = 1;
break;
case 2:
renderer.uvRotateNorth = 2;
renderer.uvRotateSouth = 2;
renderer.uvRotateEast = 2;
renderer.uvRotateWest = 2;
}
}
}
@Override
public boolean shouldRender3DInInventory(int renderId) {
return true;
}
@Override
public int getRenderId() {
return id;
}
}