Files
Electro-Magic-Tools/src/main/java/emt/client/renderer/RenderShield.java
T
2017-01-15 20:26:57 +01:00

102 lines
2.7 KiB
Java

package emt.client.renderer;
import static org.lwjgl.opengl.GL11.*;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import emt.EMT;
import emt.entity.EntityLaser;
import emt.entity.EntityShield;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GLAllocation;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
public class RenderShield extends Render {
private static final ResourceLocation shieldTexture = new ResourceLocation(EMT.TEXTURE_PATH, "textures/models/shield.png");
static int glCallList;
static {
glCallList = GLAllocation.generateDisplayLists(3);
GL11.glPushMatrix();
GL11.glNewList(glCallList, GL11.GL_COMPILE);
Tessellator tessellator = Tessellator.instance;
float sin1;
float cos1;
float sin2;
float cos2;
float hsin1 = -1;
float hcos1 = 0;
float hsin2;
float hcos2;
tessellator.startDrawingQuads();
for (float h = -90; h < 90; h += 15) {
sin1 = 0;
cos1 = 1;
hsin2 = MathHelper.sin((float) Math.toRadians(h + 15));
hcos2 = MathHelper.cos((float) Math.toRadians(h + 15));
for (float angle = 0; angle < 360; angle += 15) {
sin2 = MathHelper.sin((float) Math.toRadians(angle + 15));
cos2 = MathHelper.cos((float) Math.toRadians(angle + 15));
tessellator.addVertexWithUV(sin1 * hcos1 * 2, hsin1 * 2, cos1 * hcos1 * 2, 1, 1);
tessellator.addVertexWithUV(sin1 * hcos2 * 2, hsin2 * 2, cos1 * hcos2 * 2, 1, 0);
tessellator.addVertexWithUV(sin2 * hcos2 * 2, hsin2 * 2, cos2 * hcos2 * 2, 0, 0);
tessellator.addVertexWithUV(sin2 * hcos1 * 2, hsin1 * 2, cos2 * hcos1 * 2, 0, 1);
sin1 = sin2;
cos1 = cos2;
}
hsin1 = hsin2;
hcos1 = hcos2;
}
tessellator.draw();
GL11.glEndList();
}
@Override
public void doRender(Entity entityShield, double x, double y, double z, float par8, float par9) {
this.bindEntityTexture(entityShield);
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glPushAttrib(GL_LIGHTING);
glDisable(GL_LIGHTING);
glDisable(GL_CULL_FACE);
glPushMatrix();
if (((EntityShield) entityShield).owner != null && !Minecraft.getMinecraft().thePlayer.getDisplayName().equals(((EntityShield) entityShield).owner.getDisplayName())) {
glTranslated(x, y, z);
}
glCallList(this.glCallList);
glPopMatrix();
glPopAttrib();
glDisable(GL12.GL_RESCALE_NORMAL);
}
@Override
protected ResourceLocation getEntityTexture(Entity texture) {
return shieldTexture;
}
}