generated from tilera/1710mod
163 lines
5.8 KiB
Java
163 lines
5.8 KiB
Java
package net.anvilcraft.classiccasting.render;
|
|
|
|
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
|
import net.anvilcraft.classiccasting.blocks.BlockCrystal;
|
|
import net.anvilcraft.classiccasting.tiles.TileCrystalCapacitor;
|
|
import net.anvilcraft.classiccasting.tiles.TileCrystalCore;
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.client.renderer.RenderBlocks;
|
|
import net.minecraft.client.renderer.Tessellator;
|
|
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.util.IIcon;
|
|
import net.minecraft.world.IBlockAccess;
|
|
import org.lwjgl.opengl.GL11;
|
|
import thaumcraft.client.renderers.block.BlockRenderer;
|
|
|
|
public class BlockCrystalRenderer
|
|
extends BlockRenderer implements ISimpleBlockRenderingHandler {
|
|
public static int RI;
|
|
|
|
@Override
|
|
public void renderInventoryBlock(
|
|
final Block block,
|
|
final int metadata,
|
|
final int modelID,
|
|
final RenderBlocks renderer
|
|
) {
|
|
if (metadata == 0) {
|
|
GL11.glRotatef(90.0f, 0.0f, 1.0f, 0.0f);
|
|
GL11.glTranslatef(-0.5f, -0.5f, -0.5f);
|
|
final TileCrystalCore tc2 = new TileCrystalCore();
|
|
tc2.blockMetadata = 0;
|
|
TileEntityRendererDispatcher.instance.renderTileEntityAt(
|
|
(TileEntity) tc2, 0.0, 0.0, 0.0, 0.0f
|
|
);
|
|
GL11.glEnable(32826);
|
|
} else if (metadata == 1) {
|
|
block.setBlockBounds(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f);
|
|
renderer.setRenderBoundsFromBlock(block);
|
|
BlockRenderer.drawFaces(
|
|
renderer, block, ((BlockCrystal) block).iconFrame, false
|
|
);
|
|
this.drawFacesInside(renderer, block, ((BlockCrystal) block).iconFrame);
|
|
GL11.glTranslatef(-0.5f, -0.5f, -0.5f);
|
|
final TileCrystalCapacitor tc3 = new TileCrystalCapacitor();
|
|
tc3.blockMetadata = 0;
|
|
tc3.storedVis = 50;
|
|
TileEntityRendererDispatcher.instance.renderTileEntityAt(
|
|
(TileEntity) tc3, 0.0, 0.0, 0.0, 0.0f
|
|
);
|
|
GL11.glEnable(32826);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean renderWorldBlock(
|
|
final IBlockAccess world,
|
|
final int x,
|
|
final int y,
|
|
final int z,
|
|
final Block block,
|
|
final int modelId,
|
|
final RenderBlocks renderer
|
|
) {
|
|
final int md = world.getBlockMetadata(x, y, z);
|
|
if (md == 1) {
|
|
final IIcon icon = ((BlockCrystal) block).iconFrame;
|
|
BlockRenderer.setBrightness(world, x, y, z, block);
|
|
block.setBlockBounds(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f);
|
|
renderer.setRenderBoundsFromBlock(block);
|
|
renderer.renderStandardBlock(block, x, y, z);
|
|
renderer.renderFaceXPos(
|
|
block,
|
|
(double) (x - 1.0f + BlockRenderer.W2 - 0.01f),
|
|
(double) y,
|
|
(double) z,
|
|
icon
|
|
);
|
|
renderer.renderFaceXNeg(
|
|
block,
|
|
(double) (x + 1.0f - BlockRenderer.W2 + 0.01f),
|
|
(double) y,
|
|
(double) z,
|
|
icon
|
|
);
|
|
renderer.renderFaceZPos(
|
|
block,
|
|
(double) x,
|
|
(double) y,
|
|
(double) (z - 1.0f + BlockRenderer.W2 - 0.01f),
|
|
icon
|
|
);
|
|
renderer.renderFaceZNeg(
|
|
block,
|
|
(double) x,
|
|
(double) y,
|
|
(double) (z + 1.0f - BlockRenderer.W2 + 0.01f),
|
|
icon
|
|
);
|
|
renderer.renderFaceYPos(
|
|
block,
|
|
(double) x,
|
|
(double) (y - 1.0f + BlockRenderer.W2 - 0.01f),
|
|
(double) z,
|
|
icon
|
|
);
|
|
renderer.renderFaceYNeg(
|
|
block,
|
|
(double) x,
|
|
(double) (y + 1.0f - BlockRenderer.W2 + 0.01f),
|
|
(double) z,
|
|
icon
|
|
);
|
|
renderer.clearOverrideBlockTexture();
|
|
block.setBlockBounds(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f);
|
|
renderer.setRenderBoundsFromBlock(block);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void
|
|
drawFacesInside(final RenderBlocks renderblocks, final Block block, final IIcon i1) {
|
|
final Tessellator tessellator = Tessellator.instance;
|
|
GL11.glTranslatef(-0.5f, -0.5f, -0.5f);
|
|
tessellator.startDrawingQuads();
|
|
tessellator.setNormal(0.0f, -1.0f, 0.0f);
|
|
renderblocks.renderFaceYNeg(block, 0.0, 1.0 - BlockRenderer.W2, 0.0, i1);
|
|
tessellator.draw();
|
|
tessellator.startDrawingQuads();
|
|
tessellator.setNormal(0.0f, 1.0f, 0.0f);
|
|
renderblocks.renderFaceYPos(block, 0.0, -1.0 + BlockRenderer.W2, 0.0, i1);
|
|
tessellator.draw();
|
|
tessellator.startDrawingQuads();
|
|
tessellator.setNormal(0.0f, 0.0f, 1.0f);
|
|
renderblocks.renderFaceXNeg(block, 1.0 - BlockRenderer.W2, 0.0, 0.0, i1);
|
|
tessellator.draw();
|
|
tessellator.startDrawingQuads();
|
|
tessellator.setNormal(0.0f, 0.0f, -1.0f);
|
|
renderblocks.renderFaceXPos(block, -1.0 + BlockRenderer.W2, 0.0, 0.0, i1);
|
|
tessellator.draw();
|
|
tessellator.startDrawingQuads();
|
|
tessellator.setNormal(1.0f, 0.0f, 0.0f);
|
|
renderblocks.renderFaceZNeg(block, 0.0, 0.0, 1.0 - BlockRenderer.W2, i1);
|
|
tessellator.draw();
|
|
tessellator.startDrawingQuads();
|
|
tessellator.setNormal(-1.0f, 0.0f, 0.0f);
|
|
renderblocks.renderFaceZPos(block, 0.0, 0.0, -1.0 + BlockRenderer.W2, i1);
|
|
tessellator.draw();
|
|
GL11.glTranslatef(0.5f, 0.5f, 0.5f);
|
|
}
|
|
|
|
@Override
|
|
public boolean shouldRender3DInInventory(int meta) {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public int getRenderId() {
|
|
return RI;
|
|
}
|
|
}
|