2015-01-08 18:36:23 -05:00
|
|
|
package com.cricketcraft.chisel.client.render;
|
|
|
|
|
|
|
|
|
|
import net.minecraft.block.Block;
|
|
|
|
|
import net.minecraft.client.renderer.RenderBlocks;
|
|
|
|
|
import net.minecraft.client.renderer.Tessellator;
|
|
|
|
|
import net.minecraft.world.IBlockAccess;
|
|
|
|
|
|
2015-01-11 20:59:16 +00:00
|
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
|
|
2015-01-08 18:36:23 -05:00
|
|
|
import com.cricketcraft.chisel.Chisel;
|
|
|
|
|
import com.cricketcraft.chisel.block.BlockCarvableGlow;
|
2015-04-23 17:31:25 -04:00
|
|
|
import com.cricketcraft.chisel.config.Configurations;
|
2015-01-08 18:36:23 -05:00
|
|
|
import com.cricketcraft.chisel.utils.GeneralClient;
|
2015-06-03 17:43:03 -04:00
|
|
|
import com.cricketcraft.ctmlib.Drawing;
|
2015-06-22 15:42:46 -04:00
|
|
|
import com.cricketcraft.ctmlib.RenderBlocksCTM;
|
2015-01-08 18:36:23 -05:00
|
|
|
|
|
|
|
|
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
|
|
|
|
import cpw.mods.fml.client.registry.RenderingRegistry;
|
|
|
|
|
|
2015-04-23 17:31:25 -04:00
|
|
|
public class RendererLayeredGlow implements ISimpleBlockRenderingHandler {
|
2015-01-08 18:36:23 -05:00
|
|
|
|
2015-04-23 17:31:25 -04:00
|
|
|
public RendererLayeredGlow() {
|
2015-01-08 18:36:23 -05:00
|
|
|
Chisel.renderGlowId = RenderingRegistry.getNextAvailableRenderId();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
|
|
|
|
|
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
2015-02-08 23:37:56 -05:00
|
|
|
GeneralClient.setGLColorFromInt(Configurations.configColors[metadata]);
|
2015-01-08 18:36:23 -05:00
|
|
|
GL11.glDisable(GL11.GL_LIGHTING);
|
|
|
|
|
Drawing.drawBlock(block, ((BlockCarvableGlow)block).getGlowTexture(), renderer);
|
|
|
|
|
GL11.glEnable(GL11.GL_LIGHTING);
|
2015-01-10 05:26:35 -05:00
|
|
|
GL11.glColor3f(1, 1, 1);
|
|
|
|
|
Drawing.drawBlock(block, metadata, renderer);
|
|
|
|
|
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
|
2015-01-08 18:36:23 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
|
2015-02-08 23:37:56 -05:00
|
|
|
Tessellator.instance.setColorOpaque_I(Configurations.configColors[world.getBlockMetadata(x, y, z)]);
|
2015-06-21 22:28:46 -04:00
|
|
|
Tessellator.instance.setBrightness(0xF000F0);
|
|
|
|
|
BlockCarvableGlow glow = (BlockCarvableGlow) block;
|
|
|
|
|
if(glow.hasSubmapManager()){
|
|
|
|
|
renderer.overrideBlockTexture = glow.getGlowTexture();
|
|
|
|
|
getContext(renderer, glow, world).renderBlockAllFaces(glow, x, y, z);
|
|
|
|
|
} else {
|
|
|
|
|
Drawing.renderAllFaces(renderer, block, x, y, z, ((BlockCarvableGlow) block).getGlowTexture());
|
|
|
|
|
}
|
2015-01-10 05:26:35 -05:00
|
|
|
renderer.renderStandardBlock(block, x, y, z);
|
2015-01-08 18:36:23 -05:00
|
|
|
return true;
|
|
|
|
|
}
|
2015-06-21 22:28:46 -04:00
|
|
|
|
|
|
|
|
private RenderBlocks getContext(RenderBlocks rendererOld, BlockCarvableGlow block, IBlockAccess world) {
|
|
|
|
|
if (!rendererOld.hasOverrideBlockTexture() && block != null) {
|
|
|
|
|
RenderBlocks rb = block.getSubmapManager().createRenderContext(rendererOld, block, world);
|
|
|
|
|
if (rb != null && rb != rendererOld) {
|
|
|
|
|
rb.blockAccess = world;
|
|
|
|
|
if (rb instanceof RenderBlocksCTM) {
|
|
|
|
|
RenderBlocksCTM rbctm = (RenderBlocksCTM) rb;
|
|
|
|
|
rbctm.manager = rbctm.manager == null ? block.getSubmapManager() : rbctm.manager;
|
|
|
|
|
rbctm.rendererOld = rbctm.rendererOld == null ? rendererOld : rbctm.rendererOld;
|
|
|
|
|
}
|
|
|
|
|
return rb;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return rendererOld;
|
|
|
|
|
}
|
2015-01-08 18:36:23 -05:00
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean shouldRender3DInInventory(int modelId) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public int getRenderId() {
|
|
|
|
|
return Chisel.renderGlowId;
|
|
|
|
|
}
|
|
|
|
|
}
|