package crazypants.enderio.machine.painter; import net.minecraft.block.Block; import net.minecraft.block.BlockDirectional; import net.minecraft.block.BlockFenceGate; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.init.Blocks; import net.minecraft.world.IBlockAccess; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import crazypants.enderio.EnderIO; public class BlockPaintedFenceGateRenderer implements ISimpleBlockRenderingHandler { @Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) { renderer.renderBlockAsItem(Blocks.fence_gate, metadata, 1); } @Override public boolean shouldRender3DInInventory(int modelId) { return true; } @Override public int getRenderId() { return BlockPaintedFenceGate.renderId; } @Override public boolean renderWorldBlock(IBlockAccess blockAccess, int par2, int par3, int par4, Block block, int modelId, RenderBlocks rb) { BlockFenceGate par1BlockFenceGate = (BlockFenceGate) block; boolean flag = true; int l = rb.blockAccess.getBlockMetadata(par2, par3, par4); boolean flag1 = BlockFenceGate.isFenceGateOpen(l); int i1 = BlockDirectional.getDirection(l); float f = 0.375F; float f1 = 0.5625F; float f2 = 0.75F; float f3 = 0.9375F; float f4 = 0.3125F; float f5 = 1.0F; if((i1 == 2 || i1 == 0) && rb.blockAccess.getBlock(par2 - 1, par3, par4) == Blocks.cobblestone_wall && rb.blockAccess.getBlock(par2 + 1, par3, par4) == Blocks.cobblestone_wall || (i1 == 3 || i1 == 1) && rb.blockAccess.getBlock(par2, par3, par4 - 1) == Blocks.cobblestone_wall && rb.blockAccess.getBlock(par2, par3, par4 + 1) == Blocks.cobblestone_wall || (i1 == 2 || i1 == 0) && rb.blockAccess.getBlock(par2 - 1, par3, par4) == EnderIO.blockPaintedWall && rb.blockAccess.getBlock(par2 + 1, par3, par4) == EnderIO.blockPaintedWall || (i1 == 3 || i1 == 1) && rb.blockAccess.getBlock(par2, par3, par4 - 1) == EnderIO.blockPaintedWall && rb.blockAccess.getBlock(par2, par3, par4 + 1) == EnderIO.blockPaintedWall) { f -= 0.1875F; f1 -= 0.1875F; f2 -= 0.1875F; f3 -= 0.1875F; f4 -= 0.1875F; f5 -= 0.1875F; } rb.renderAllFaces = true; float f6; float f7; float f8; float f9; if(i1 != 3 && i1 != 1) { f6 = 0.0F; f8 = 0.125F; f7 = 0.4375F; f9 = 0.5625F; rb.setRenderBounds(f6, f4, f7, f8, f5, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); f6 = 0.875F; f8 = 1.0F; rb.setRenderBounds(f6, f4, f7, f8, f5, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); } else { rb.uvRotateTop = 1; f6 = 0.4375F; f8 = 0.5625F; f7 = 0.0F; f9 = 0.125F; rb.setRenderBounds(f6, f4, f7, f8, f5, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); f7 = 0.875F; f9 = 1.0F; rb.setRenderBounds(f6, f4, f7, f8, f5, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.uvRotateTop = 0; } if(flag1) { if(i1 == 2 || i1 == 0) { rb.uvRotateTop = 1; } if(i1 == 3) { rb.setRenderBounds(0.8125D, f, 0.0D, 0.9375D, f3, 0.125D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.8125D, f, 0.875D, 0.9375D, f3, 1.0D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.5625D, f, 0.0D, 0.8125D, f1, 0.125D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.5625D, f, 0.875D, 0.8125D, f1, 1.0D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.5625D, f2, 0.0D, 0.8125D, f3, 0.125D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.5625D, f2, 0.875D, 0.8125D, f3, 1.0D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); } else if(i1 == 1) { rb.setRenderBounds(0.0625D, f, 0.0D, 0.1875D, f3, 0.125D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.0625D, f, 0.875D, 0.1875D, f3, 1.0D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.1875D, f, 0.0D, 0.4375D, f1, 0.125D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.1875D, f, 0.875D, 0.4375D, f1, 1.0D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.1875D, f2, 0.0D, 0.4375D, f3, 0.125D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.1875D, f2, 0.875D, 0.4375D, f3, 1.0D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); } else if(i1 == 0) { rb.setRenderBounds(0.0D, f, 0.8125D, 0.125D, f3, 0.9375D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.875D, f, 0.8125D, 1.0D, f3, 0.9375D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.0D, f, 0.5625D, 0.125D, f1, 0.8125D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.875D, f, 0.5625D, 1.0D, f1, 0.8125D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.0D, f2, 0.5625D, 0.125D, f3, 0.8125D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.875D, f2, 0.5625D, 1.0D, f3, 0.8125D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); } else if(i1 == 2) { rb.setRenderBounds(0.0D, f, 0.0625D, 0.125D, f3, 0.1875D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.875D, f, 0.0625D, 1.0D, f3, 0.1875D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.0D, f, 0.1875D, 0.125D, f1, 0.4375D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.875D, f, 0.1875D, 1.0D, f1, 0.4375D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.0D, f2, 0.1875D, 0.125D, f3, 0.4375D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(0.875D, f2, 0.1875D, 1.0D, f3, 0.4375D); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); } } else if(i1 != 3 && i1 != 1) { f6 = 0.375F; f8 = 0.5F; f7 = 0.4375F; f9 = 0.5625F; rb.setRenderBounds(f6, f, f7, f8, f3, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); f6 = 0.5F; f8 = 0.625F; rb.setRenderBounds(f6, f, f7, f8, f3, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); f6 = 0.625F; f8 = 0.875F; rb.setRenderBounds(f6, f, f7, f8, f1, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(f6, f2, f7, f8, f3, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); f6 = 0.125F; f8 = 0.375F; rb.setRenderBounds(f6, f, f7, f8, f1, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(f6, f2, f7, f8, f3, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); } else { rb.uvRotateTop = 1; f6 = 0.4375F; f8 = 0.5625F; f7 = 0.375F; f9 = 0.5F; rb.setRenderBounds(f6, f, f7, f8, f3, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); f7 = 0.5F; f9 = 0.625F; rb.setRenderBounds(f6, f, f7, f8, f3, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); f7 = 0.625F; f9 = 0.875F; rb.setRenderBounds(f6, f, f7, f8, f1, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(f6, f2, f7, f8, f3, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); f7 = 0.125F; f9 = 0.375F; rb.setRenderBounds(f6, f, f7, f8, f1, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); rb.setRenderBounds(f6, f2, f7, f8, f3, f9); rb.renderStandardBlock(par1BlockFenceGate, par2, par3, par4); } rb.renderAllFaces = false; rb.uvRotateTop = 0; rb.setRenderBounds(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D); return flag; } }