106 lines
3.5 KiB
Java

package com.hbm.render.entity.mob;
import org.lwjgl.opengl.GL11;
import com.hbm.entity.mob.EntityRADBeast;
import com.hbm.lib.RefStrings;
import com.hbm.render.model.ModelM65Blaze;
import com.hbm.render.util.BeamPronter;
import com.hbm.render.util.BeamPronter.EnumBeamType;
import com.hbm.render.util.BeamPronter.EnumWaveType;
import net.minecraft.client.Minecraft;
import net.minecraft.client.model.ModelBlaze;
import net.minecraft.client.renderer.entity.RenderLiving;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Vec3;
public class RenderRADBeast extends RenderLiving {
private static final ResourceLocation blazeTextures = new ResourceLocation(RefStrings.MODID, "textures/entity/radbeast.png");
private static final ResourceLocation mask = new ResourceLocation(RefStrings.MODID, "textures/models/ModelM65Blaze.png");
private int blazeModel;
public RenderRADBeast() {
super(new ModelBlaze(), 0.5F);
this.blazeModel = ((ModelBlaze) this.mainModel).func_78104_a();
}
public void doRender(EntityRADBeast entity, double x, double y, double z, float r0, float r1) {
int i = ((ModelBlaze) this.mainModel).func_78104_a();
if(i != this.blazeModel) {
this.blazeModel = i;
this.mainModel = new ModelBlaze();
}
Entity victim = entity.getUnfortunateSoul();
if(victim != null && entity.posY > 0.1) {
GL11.glPushMatrix();
GL11.glTranslated(x, y + 1.25, z);
double sx = entity.posX;
double sy = entity.posY + 1.25;
double sz = entity.posZ;
double tX = victim.posX;
double tY = victim.posY + victim.height / 2;
double tZ = victim.posZ;
if(victim == Minecraft.getMinecraft().thePlayer)
tY -= 1.5;
double length = Math.sqrt(Math.pow(tX - sx, 2) + Math.pow(tY - sy, 2) + Math.pow(tZ - sz, 2));
if(length < 200) BeamPronter.prontBeam(Vec3.createVectorHelper(tX - sx, tY - sy, tZ - sz), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x004000, 0x004000, (int) (entity.worldObj.getTotalWorldTime() % 1000 + 1), (int) (length * 5), 0.125F, 2, 0.03125F);
GL11.glPopMatrix();
}
super.doRender((EntityLiving) entity, x, y, z, r0, r1);
}
protected ResourceLocation getEntityTexture(EntityRADBeast p_110775_1_) {
return blazeTextures;
}
public void doRender(EntityLiving p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) {
this.doRender((EntityRADBeast) p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_);
}
public void doRender(EntityLivingBase p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) {
this.doRender((EntityRADBeast) p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_);
}
protected ResourceLocation getEntityTexture(Entity p_110775_1_) {
return this.getEntityTexture((EntityRADBeast) p_110775_1_);
}
public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) {
this.doRender((EntityRADBeast) p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_);
}
private ModelM65Blaze modelM65;
protected int shouldRenderPass(EntityLivingBase p_77032_1_, int p_77032_2_, float p_77032_3_) {
if(p_77032_2_ == 0) {
this.bindTexture(mask);
if(this.modelM65 == null) {
this.modelM65 = new ModelM65Blaze();
}
this.setRenderPassModel(modelM65);
return 1;
}
return super.shouldRenderPass(p_77032_1_, p_77032_2_, p_77032_3_);
}
}