mirror of
https://github.com/GTNewHorizons/Chisel.git
synced 2026-11-11 15:57:31 +00:00
126 lines
3.1 KiB
Java
126 lines
3.1 KiB
Java
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;
|
|
}
|
|
} |