152 lines
5.9 KiB
Java

package com.hbm.render.tileentity;
import java.util.Random;
import org.lwjgl.opengl.GL11;
import com.hbm.lib.RefStrings;
import com.hbm.main.ResourceManager;
import com.hbm.tileentity.machine.TileEntityAMSBase;
import com.hbm.tileentity.machine.TileEntityAMSEmitter;
import com.hbm.tileentity.machine.TileEntityAMSLimiter;
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.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;
public class RenderAMSEmitter extends TileEntitySpecialRenderer {
public RenderAMSEmitter() { }
Random rand = new Random();
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f)
{
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glRotatef(180, 0F, 1F, 0F);
if(((TileEntityAMSEmitter)tileEntity).locked)
bindTexture(ResourceManager.ams_destroyed_tex);
else
bindTexture(ResourceManager.ams_emitter_tex);
if(((TileEntityAMSEmitter)tileEntity).locked)
ResourceManager.ams_emitter_destroyed.renderAll();
else
ResourceManager.ams_emitter.renderAll();
GL11.glPopMatrix();
renderTileEntityAt2(tileEntity, x, y, z, f);
}
public void renderTileEntityAt2(TileEntity tileEntity, double x, double y, double z, float f)
{
float radius = 0.04F;
int distance = 1;
int layers = 3;
Tessellator tessellator = Tessellator.instance;
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
GL11.glTranslatef((float) x + 0.5F, (float) y - 7, (float) z + 0.5F);
TileEntityAMSEmitter emitter = (TileEntityAMSEmitter)tileEntity;
if(emitter.getWorldObj().getTileEntity(emitter.xCoord, emitter.yCoord - 9, emitter.zCoord) instanceof TileEntityAMSBase && !emitter.locked || true) {
if(emitter.efficiency > 0 || true) {
double lastPosX = 0;
double lastPosZ = 0;
for(int i = 7; i > 0; i -= distance) {
double posX = rand.nextDouble() - 0.5;
double posZ = rand.nextDouble() - 0.5;
for(int j = 1; j <= layers; j++) {
tessellator.startDrawingQuads();
tessellator.setColorRGBA_F(1, 0.5F, 0, 1f);
tessellator.addVertex(lastPosX + (radius * j), i, lastPosZ + (radius * j));
tessellator.addVertex(lastPosX + (radius * j), i, lastPosZ - (radius * j));
tessellator.addVertex(posX + (radius * j), i - distance, posZ - (radius * j));
tessellator.addVertex(posX + (radius * j), i - distance, posZ + (radius * j));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setColorRGBA_F(1, 0.5F, 0, 1f);
tessellator.addVertex(lastPosX - (radius * j), i, lastPosZ + (radius * j));
tessellator.addVertex(lastPosX - (radius * j), i, lastPosZ - (radius * j));
tessellator.addVertex(posX - (radius * j), i - distance, posZ - (radius * j));
tessellator.addVertex(posX - (radius * j), i - distance, posZ + (radius * j));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setColorRGBA_F(1, 0.5F, 0, 1f);
tessellator.addVertex(lastPosX + (radius * j), i, lastPosZ + (radius * j));
tessellator.addVertex(lastPosX - (radius * j), i, lastPosZ + (radius * j));
tessellator.addVertex(posX - (radius * j), i - distance, posZ + (radius * j));
tessellator.addVertex(posX + (radius * j), i - distance, posZ + (radius * j));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setColorRGBA_F(1, 0.5F, 0, 1f);
tessellator.addVertex(lastPosX + (radius * j), i, lastPosZ - (radius * j));
tessellator.addVertex(lastPosX - (radius * j), i, lastPosZ - (radius * j));
tessellator.addVertex(posX - (radius * j), i - distance, posZ - (radius * j));
tessellator.addVertex(posX + (radius * j), i - distance, posZ - (radius * j));
tessellator.draw();
}
lastPosX = posX;
lastPosZ = posZ;
}
}
for(int j = 1; j <= 2; j++) {
tessellator.startDrawingQuads();
tessellator.setColorRGBA_F(1, 1, 0, 1f);
tessellator.addVertex(0 + (radius * j), 7, 0 + (radius * j));
tessellator.addVertex(0 + (radius * j), 7, 0 - (radius * j));
tessellator.addVertex(0 + (radius * j), 0, 0 - (radius * j));
tessellator.addVertex(0 + (radius * j), 0, 0 + (radius * j));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setColorRGBA_F(1, 1, 0, 1f);
tessellator.addVertex(0 - (radius * j), 7, 0 + (radius * j));
tessellator.addVertex(0 - (radius * j), 7, 0 - (radius * j));
tessellator.addVertex(0 - (radius * j), 0, 0 - (radius * j));
tessellator.addVertex(0 - (radius * j), 0, 0 + (radius * j));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setColorRGBA_F(1, 1, 0, 1f);
tessellator.addVertex(0 + (radius * j), 7, 0 + (radius * j));
tessellator.addVertex(0 - (radius * j), 7, 0 + (radius * j));
tessellator.addVertex(0 - (radius * j), 0, 0 + (radius * j));
tessellator.addVertex(0 + (radius * j), 0, 0 + (radius * j));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setColorRGBA_F(1, 1, 0, 1f);
tessellator.addVertex(0 + (radius * j), 7, 0 - (radius * j));
tessellator.addVertex(0 - (radius * j), 7, 0 - (radius * j));
tessellator.addVertex(0 - (radius * j), 0, 0 - (radius * j));
tessellator.addVertex(0 + (radius * j), 0, 0 - (radius * j));
tessellator.draw();
}
}
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glPopMatrix();
}
}