2017-12-25 00:04:24 +01:00

127 lines
3.5 KiB
Java

package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.render.util.RUVertice;
import com.hbm.tileentity.deco.TileEntityTaint;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
public class RenderTaint extends TileEntitySpecialRenderer
{
float s = 0.5F;
RUVertice v1 = new RUVertice(s, s, s);
RUVertice v2 = new RUVertice(s, s, -s);
RUVertice v3 = new RUVertice(-s, s, -s);
RUVertice v4 = new RUVertice(-s, s, s);
RUVertice v5 = new RUVertice(s, -s, s);
RUVertice v6 = new RUVertice(s, -s, -s);
RUVertice v7 = new RUVertice(-s, -s, -s);
RUVertice v8 = new RUVertice(-s, -s, s);
public void renderAModelAt(TileEntityTaint tile, double x, double y, double z, float f)
{
World world = tile.getWorldObj();
boolean ceil = world.isBlockNormalCubeDefault(tile.xCoord, tile.yCoord + 1, tile.zCoord, false);
boolean floor = world.isBlockNormalCubeDefault(tile.xCoord, tile.yCoord - 1, tile.zCoord, false);
boolean side1 = world.isBlockNormalCubeDefault(tile.xCoord, tile.yCoord, tile.zCoord + 1, false);
boolean side2 = world.isBlockNormalCubeDefault(tile.xCoord - 1, tile.yCoord, tile.zCoord, false);
boolean side3 = world.isBlockNormalCubeDefault(tile.xCoord, tile.yCoord, tile.zCoord - 1, false);
boolean side4 = world.isBlockNormalCubeDefault(tile.xCoord + 1, tile.yCoord, tile.zCoord, false);
int meta = tile.getBlockMetadata();
GL11.glPushMatrix();
GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.5F);
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("hbm:textures/blocks/taint_" + meta + ".png"));
GL11.glDisable(GL11.GL_LIGHTING);
Tessellator tessellator = Tessellator.instance;
if (side1)
{
tessellator.startDrawingQuads();
addVertex(v1, 0, 0, true);
addVertex(v5, 1, 0, true);
addVertex(v8, 1, 1, true);
addVertex(v4, 0, 1, true);
tessellator.draw();
}
if (side2)
{
tessellator.startDrawingQuads();
addVertex(v4, 0, 0, true);
addVertex(v8, 1, 0, true);
addVertex(v7, 1, 1, true);
addVertex(v3, 0, 1, true);
tessellator.draw();
}
if (side3)
{
tessellator.startDrawingQuads();
addVertex(v3, 0, 0, true);
addVertex(v7, 1, 0, true);
addVertex(v6, 1, 1, true);
addVertex(v2, 0, 1, true);
tessellator.draw();
}
if (side4)
{
tessellator.startDrawingQuads();
addVertex(v2, 0, 0, true);
addVertex(v6, 1, 0, true);
addVertex(v5, 1, 1, true);
addVertex(v1, 0, 1, true);
tessellator.draw();
}
if (ceil)
{
tessellator.startDrawingQuads();
addVertex(v4, 0, 0, true);
addVertex(v3, 1, 0, true);
addVertex(v2, 1, 1, true);
addVertex(v1, 0, 1, true);
tessellator.draw();
}
if (floor)
{
tessellator.startDrawingQuads();
addVertex(v5, 0, 0, true);
addVertex(v6, 1, 0, true);
addVertex(v7, 1, 1, true);
addVertex(v8, 0, 1, true);
tessellator.draw();
}
GL11.glPopMatrix();
}
@Override
public void renderTileEntityAt(TileEntity tileentity, double d, double d1, double d2, float f)
{
renderAModelAt((TileEntityTaint) tileentity, d, d1, d2, f);
}
private void addVertex(RUVertice v, double t, double t2, boolean offset)
{
Tessellator tessellator = Tessellator.instance;
tessellator.addVertexWithUV(v.x * 0.99, v.y * 0.99, v.z * 0.99, t, t2);
}
}