package buildcraftAdditions.client.render.blocks; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraftforge.common.util.ForgeDirection; import buildcraftAdditions.reference.Variables; /** * Copyright (c) 2014-2015, AEnterprise * http://buildcraftadditions.wordpress.com/ * Buildcraft Additions is distributed under the terms of GNU GPL v3.0 * Please check the contents of the license located in * http://buildcraftadditions.wordpress.com/wiki/licensing-stuff/ */ @SideOnly(Side.CLIENT) public class RendererSidedTextures implements ISimpleBlockRenderingHandler { private final FakeBlock fakeBlock = new FakeBlock(); @Override public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { fakeBlock.setBlock(block); renderer.uvRotateEast = 0; renderer.uvRotateWest = 0; renderer.uvRotateTop = 2; renderer.uvRotateBottom = 1; renderer.renderBlockAsItem(fakeBlock, 4, 1.0F); renderer.uvRotateEast = 0; renderer.uvRotateWest = 0; renderer.uvRotateTop = 0; renderer.uvRotateBottom = 0; } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { ForgeDirection direction = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); switch (direction) { case DOWN: renderer.uvRotateSouth = 3; renderer.uvRotateNorth = 3; renderer.uvRotateEast = 2; renderer.uvRotateWest = 1; break; case NORTH: renderer.uvRotateSouth = 0; renderer.uvRotateNorth = 0; break; case SOUTH: renderer.uvRotateTop = 3; renderer.uvRotateBottom = 3; renderer.uvRotateNorth = 0; break; case WEST: renderer.uvRotateEast = 0; renderer.uvRotateWest = 0; renderer.uvRotateTop = 2; renderer.uvRotateBottom = 1; break; case EAST: renderer.uvRotateEast = 4; renderer.uvRotateWest = 0; renderer.uvRotateTop = 1; renderer.uvRotateBottom = 2; break; default: renderer.uvRotateEast = 1; renderer.uvRotateWest = 2; } boolean ret = renderer.renderStandardBlock(block, x, y, z); renderer.uvRotateSouth = 0; renderer.uvRotateEast = 0; renderer.uvRotateWest = 0; renderer.uvRotateNorth = 0; renderer.uvRotateTop = 0; renderer.uvRotateBottom = 0; return ret; } @Override public boolean shouldRender3DInInventory(int modelId) { return true; } @Override public int getRenderId() { return Variables.RenderIDs.SIDED_TEXTURES_RENDER_ID; } private class FakeBlock extends Block { private Block block; protected FakeBlock() { super(Material.rock); } public void setBlock(Block block) { this.block = block; } @Override public IIcon getIcon(int side, int meta) { return block.getIcon(side, meta); } } }