2020-12-25 18:38:23 +01:00

115 lines
3.9 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 field_77068_a;
public RenderRADBeast()
{
super(new ModelBlaze(), 0.5F);
this.field_77068_a = ((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.field_77068_a)
{
this.field_77068_a = i;
this.mainModel = new ModelBlaze();
}
Entity victim = entity.getUnfortunateSoul();
if(victim != null) {
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));
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_);
}
}