Skip to content

Instantly share code, notes, and snippets.

@hanetzer
Created July 30, 2014 08:44
Show Gist options
  • Save hanetzer/af210da0d47e4af7be0f to your computer and use it in GitHub Desktop.
Save hanetzer/af210da0d47e4af7be0f to your computer and use it in GitHub Desktop.
package securecraftprotect.client.renderer.tile;
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;
import securecraftprotect.common.tile.TileChair;
import securecraftprotect.common.tile.TileDesk;
import securecraftprotect.common.tileentity.TileEntityChair;
import securecraftprotect.util.Globals;
public class RenderTileChair implements ISimpleBlockRenderingHandler
{
@Override
public void renderInventoryBlock(Block block, int meta, int ID, RenderBlocks render)
{
}
@Override
public boolean renderWorldBlock(IBlockAccess w, int x, int y, int z,
Block block, int ID, RenderBlocks render)
{
if (block instanceof TileChair) {
TileEntityChair chair = (TileEntityChair)w.getTileEntity(x, y, z);
int side = chair.getDir();
//int side = world.getBlockMetadata(x, y, z) & 0x03;
setBlockBoundsWithRotation(render, side,
0.1F, 0.0F, 0.1F, 0.2F, 0.5F, 0.2F);
render.renderStandardBlock(block, x, y, z);
setBlockBoundsWithRotation(render, side,
0.1F, 0.0F, 0.8F, 0.2F, 0.5F, 0.9F);
render.renderStandardBlock(block, x, y, z);
setBlockBoundsWithRotation(render, side,
0.8F, 0.0F, 0.8F, 0.9F, 0.5F, 0.9F);
render.renderStandardBlock(block, x, y, z);
setBlockBoundsWithRotation(render, side,
0.8F, 0.0F, 0.1F, 0.9F, 0.5F, 0.2F);
render.renderStandardBlock(block, x, y, z);
setBlockBoundsWithRotation(render, side,
0.1F, 0.5F, 0.1F, 0.9F, 0.6F, 0.9F);
render.renderStandardBlock(block, x, y, z);
setBlockBoundsWithRotation(render, side,
0.1F, 0.6F, 0.1F, 0.2F, 1.5F, 0.9F);
render.renderStandardBlock(block, x, y, z);
}
return true;
}
public static void setBlockBoundsWithRotation(RenderBlocks render, int side,
float xNeg, float yNeg, float zNeg,
float xPos, float yPos, float zPos)
{
float tempXNeg = xNeg;
float tempXPos = xPos;
switch (side) {
case 0: //S
xNeg = zNeg;
zNeg = -tempXNeg +1;
xPos = zPos;
zPos = -tempXPos +1;
tempXNeg = xNeg;
xNeg = xPos;
xPos = tempXNeg;
break;
case 1: //W Do nothing
break;
case 2: //N
xNeg = -zNeg + 1;
zNeg = tempXNeg;
xPos = -zPos + 1;
zPos = tempXPos;
tempXNeg = xNeg;
xNeg = xPos;
xPos = tempXNeg;
break;
case 3: //E
xNeg = -xNeg + 1;
zNeg = -zNeg + 1;
xPos = -xPos + 1;
zPos = -zPos + 1;
break;
}
render.setRenderBounds(xNeg, yNeg, zNeg, xPos, yPos, zPos);
}
@Override
public boolean shouldRender3DInInventory(int modelId)
{
return false;
}
@Override
public int getRenderId()
{
return Globals.RENDER_DESK;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment