mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
104 lines
2.9 KiB
Java
104 lines
2.9 KiB
Java
package com.hbm.render.entity.effect;
|
|
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
import com.hbm.entity.effect.EntityCloudTom;
|
|
import com.hbm.main.ResourceManager;
|
|
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.renderer.OpenGlHelper;
|
|
import net.minecraft.client.renderer.Tessellator;
|
|
import net.minecraft.client.renderer.entity.Render;
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.util.ResourceLocation;
|
|
import net.minecraft.util.Vec3;
|
|
|
|
public class RenderCloudTom extends Render {
|
|
|
|
@Override
|
|
public void doRender(Entity entity, double x, double y, double z, float f0, float f1) {
|
|
|
|
GL11.glPushMatrix();
|
|
GL11.glTranslated(x, y, z);
|
|
GL11.glDisable(GL11.GL_LIGHTING);
|
|
GL11.glEnable(GL11.GL_BLEND);
|
|
GL11.glDisable(GL11.GL_ALPHA_TEST);
|
|
GL11.glDisable(GL11.GL_CULL_FACE);
|
|
GL11.glShadeModel(GL11.GL_SMOOTH);
|
|
GL11.glDepthMask(false);
|
|
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
|
|
|
|
EntityCloudTom blast = (EntityCloudTom)entity;
|
|
|
|
double scale = blast.age + f0;
|
|
|
|
int segments = 16;
|
|
float angle = (float) Math.toRadians(360D/segments);
|
|
int height = 20;
|
|
int depth = 20;
|
|
|
|
Tessellator tess = Tessellator.instance;
|
|
tess.startDrawingQuads();
|
|
|
|
bindTexture(this.getEntityTexture(blast));
|
|
|
|
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
|
GL11.glLoadIdentity();
|
|
|
|
float movement = -(Minecraft.getMinecraft().thePlayer.ticksExisted + f0) * 0.005F * 10;
|
|
GL11.glTranslatef(0, movement, 0);
|
|
|
|
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
|
|
|
for(int i = 0; i < segments; i++) {
|
|
|
|
for(int j = 0; j < 5; j++) {
|
|
|
|
double mod = 1 - j * 0.025;
|
|
double h = height + j * 10;
|
|
double off = 1D / j;
|
|
|
|
Vec3 vec = Vec3.createVectorHelper(scale, 0, 0);
|
|
vec.rotateAroundY(angle * i);
|
|
double x0 = vec.xCoord * mod;
|
|
double z0 = vec.zCoord * mod;
|
|
|
|
tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, 0.0F);
|
|
tess.addVertexWithUV(x0, h, z0, 0, 1 + off);
|
|
tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F);
|
|
tess.addVertexWithUV(x0, -depth, z0, 0, 0 + off);
|
|
|
|
vec.rotateAroundY(angle);
|
|
x0 = vec.xCoord * mod;
|
|
z0 = vec.zCoord * mod;
|
|
|
|
tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F);
|
|
tess.addVertexWithUV(x0, -depth, z0, 1, 0 + off);
|
|
tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, 0.0F);
|
|
tess.addVertexWithUV(x0, h, z0, 1, 1 + off);
|
|
}
|
|
}
|
|
|
|
tess.draw();
|
|
|
|
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
|
GL11.glDepthMask(true);
|
|
GL11.glLoadIdentity();
|
|
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
|
|
|
GL11.glDepthMask(true);
|
|
GL11.glShadeModel(GL11.GL_FLAT);
|
|
GL11.glEnable(GL11.GL_ALPHA_TEST);
|
|
GL11.glEnable(GL11.GL_CULL_FACE);
|
|
GL11.glDisable(GL11.GL_BLEND);
|
|
GL11.glEnable(GL11.GL_LIGHTING);
|
|
GL11.glPopMatrix();
|
|
}
|
|
|
|
@Override
|
|
protected ResourceLocation getEntityTexture(Entity entity) {
|
|
return ResourceManager.tomblast;
|
|
}
|
|
|
|
}
|