Hopefully this should be one of my last posts for a while
However, I am using the code from the Ender Dragon's render code to have the colored beams rendered upon it's death. The code used to work for me, however I can't think of anything that I changed. There's no crashing, my issue is simply the fact that the beams do not show. Here is all code that I think might be relevant:
public class EntityDarkOpalDemon extends EntityMob implements IBossDisplayData, IAnimatedEntity, IRangedAttackMob
{
public static EntityLiving getAttackTarget;
public int animTick;
public int deathTicks;
private int animID;
public int prevAnimID;
public int count = 0;
/** Ring buffer array for the last 64 Y-positions and yaw rotations. Used to calculate offsets for the animations. */
public double[][] ringBuffer = new double[64][3];
/** Index into the ring buffer. Incremented once per tick and restarts at 0 once it reaches the end of the buffer. */
public int ringBufferIndex = -1;
tasks.addTask(1, new EntityAISwimming(this));
tasks.addTask(2, new AIDODPunch(this));
tasks.addTask(2, new AIHealDarkness(this));
tasks.addTask(2, new AIEffectPotion(this));
tasks.addTask(2, new AIJump(this));
tasks.addTask(2, new AISkullShoot(this));
tasks.addTask(2, new AIDeathAnim(this));
tasks.addTask(6, new EntityAIArrowAttack(this, 1.0D, 40, 20.0F));
tasks.addTask(7, new EntityAIWander(this, 0.8D));
tasks.addTask(8, new EntityAIWatchClosest(this, EntityPlayer.class, 8F));
tasks.addTask(9, new EntityAILookIdle(this));
targetTasks.addTask(10, new EntityAIHurtByTarget(this, false));
this.targetTasks.addTask(11, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, false, false, attackEntitySelector));
@SideOnly(Side.CLIENT)
public float getShadowSize()
{
return this.height / 8.0F;
}
/**
* Returns the sound this mob makes while it's alive.
*/
protected String getLivingSound()
{
return "mob.wither.idle";
}
/**
* Returns the sound this mob makes when it is hurt.
*/
protected String getHurtSound()
{
return "mob.wither.hurt";
}
/**
* Returns the sound this mob makes on death.
*/
protected String getDeathSound()
{
return "mob.wither.death";
}
/**
* Returns the current armor value as determined by a call to InventoryPlayer.getTotalArmorValue
*/
public int getTotalArmorValue()
{
return 8;
}
/**
* Drop 0-2 items of this living's type. @param par1 - Whether this entity has recently been hit by a player. @param
* par2 - Level of Looting used to kill this mob.
*/
protected void dropFewItems(boolean p_70628_1_, int p_70628_2_)
{
this.dropItem(TUOMItems.darkMace, 1);
this.dropItem(TUOMItems.dopalHelmet, 1);
this.dropItem(TUOMItems.dopalChestplate, 1);
this.dropItem(TUOMItems.dopalLeggings, 1);
this.dropItem(TUOMItems.dopalBoots, 1);
if (!this.worldObj.isRemote)
{
Iterator iterator = this.worldObj.getEntitiesWithinAABB(EntityPlayer.class, this.boundingBox.expand(50.0D, 100.0D, 50.0D)).iterator();
public class DarkOpalRender extends RenderLiving {
private static final ResourceLocation glowTextures = new ResourceLocation("tuom:textures/entities/DarkOpalDemonGlow.png");
private static final ResourceLocation mobTextures = new ResourceLocation("tuom:textures/entities/DarkOpalDemon.png");
public DarkOpalModel darkModelMain;
public DarkOpalRender(ModelBase par1ModelBase, float par2) {
super(par1ModelBase, par2);
this.setRenderPassModel(this.darkModelMain);
}
/**
* Queries whether should render the specified pass or not.
*/
protected int shouldRenderPass(EntityDarkOpalDemon p_77032_1_, int p_77032_2_, float p_77032_3_)
{
if (p_77032_2_ == 1)
{
GL11.glDepthFunc(GL11.GL_LEQUAL);
}
Hopefully this should be one of my last posts for a while
However, I am using the code from the Ender Dragon's render code to have the colored beams rendered upon it's death. The code used to work for me, however I can't think of anything that I changed. There's no crashing, my issue is simply the fact that the beams do not show. Here is all code that I think might be relevant:
Entity Class:
package com.tuom.theultimateoremod.entities.dark.dopaldemon;
import java.util.Iterator;
import java.util.Random;
import org.lwjgl.opengl.GL11;
import com.tuom.theultimateoremod.damagesources.DamageSourceTUOM;
import com.tuom.theultimateoremod.entities.dark.darkbox.EntityDarkBox;
import com.tuom.theultimateoremod.entities.dark.dopaldemon.ai.AIDODPunch;
import com.tuom.theultimateoremod.entities.dark.dopaldemon.ai.AIDeathAnim;
import com.tuom.theultimateoremod.entities.dark.dopaldemon.ai.AIEffectPotion;
import com.tuom.theultimateoremod.entities.dark.dopaldemon.ai.AIHealDarkness;
import com.tuom.theultimateoremod.entities.dark.dopaldemon.ai.AIJump;
import com.tuom.theultimateoremod.entities.dark.dopaldemon.ai.AISkullShoot;
import com.tuom.theultimateoremod.entities.dark.dopalhead.EntityDarkenedSkull;
import com.tuom.theultimateoremod.entities.evilelf.EvilElf;
import com.tuom.theultimateoremod.main.TUOM;
import com.tuom.theultimateoremod.main.TUOMItems;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.command.IEntitySelector;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.EnumCreatureAttribute;
import net.minecraft.entity.IRangedAttackMob;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.EntityAIArrowAttack;
import net.minecraft.entity.ai.EntityAIHurtByTarget;
import net.minecraft.entity.ai.EntityAILookIdle;
import net.minecraft.entity.ai.EntityAINearestAttackableTarget;
import net.minecraft.entity.ai.EntityAISwimming;
import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.entity.ai.EntityAIWatchClosest;
import net.minecraft.entity.boss.IBossDisplayData;
import net.minecraft.entity.item.EntityXPOrb;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import thehippomaster.AnimationAPI.AnimationAPI;
import thehippomaster.AnimationAPI.IAnimatedEntity;
public class EntityDarkOpalDemon extends EntityMob implements IBossDisplayData, IAnimatedEntity, IRangedAttackMob
{
public static EntityLiving getAttackTarget;
public int animTick;
public int deathTicks;
private int animID;
public int prevAnimID;
public int count = 0;
/** Ring buffer array for the last 64 Y-positions and yaw rotations. Used to calculate offsets for the animations. */
public double[][] ringBuffer = new double[64][3];
/** Index into the ring buffer. Incremented once per tick and restarts at 0 once it reaches the end of the buffer. */
public int ringBufferIndex = -1;
private EntityDarkOpalDemon entity;
private EntityLivingBase attackTarget;
private static final IEntitySelector attackEntitySelector = new IEntitySelector()
{
private static final String __OBFID = "CL_00001662";
/**
* Return whether the specified entity is applicable to this filter.
*/
public boolean isEntityApplicable(Entity p_82704_1_)
{
return p_82704_1_ instanceof EntityLivingBase && ((EntityLivingBase)p_82704_1_).getCreatureAttribute() != EnumCreatureAttribute.UNDEAD;
}
};
public EntityDarkOpalDemon(World p_i1738_1_) {
super(p_i1738_1_);
this.setHealth(this.getMaxHealth());
this.setSize(4F, 9F);
this.isImmuneToFire = true;
tasks.addTask(1, new EntityAISwimming(this));
tasks.addTask(2, new AIDODPunch(this));
tasks.addTask(2, new AIHealDarkness(this));
tasks.addTask(2, new AIEffectPotion(this));
tasks.addTask(2, new AIJump(this));
tasks.addTask(2, new AISkullShoot(this));
tasks.addTask(2, new AIDeathAnim(this));
tasks.addTask(6, new EntityAIArrowAttack(this, 1.0D, 40, 20.0F));
tasks.addTask(7, new EntityAIWander(this, 0.8D));
tasks.addTask(8, new EntityAIWatchClosest(this, EntityPlayer.class, 8F));
tasks.addTask(9, new EntityAILookIdle(this));
targetTasks.addTask(10, new EntityAIHurtByTarget(this, false));
this.targetTasks.addTask(11, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, false, false, attackEntitySelector));
this.experienceValue = 50;
}
protected void applyEntityAttributes()
{
super.applyEntityAttributes();
this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(1.0D);
this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.20000000298023224D);
this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(100.0D);
this.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).setBaseValue(0.2D);
}
public boolean isAIEnabled()
{
return true;
}
@SideOnly(Side.CLIENT)
public float getShadowSize()
{
return this.height / 8.0F;
}
/**
* Returns the sound this mob makes while it's alive.
*/
protected String getLivingSound()
{
return "mob.wither.idle";
}
/**
* Returns the sound this mob makes when it is hurt.
*/
protected String getHurtSound()
{
return "mob.wither.hurt";
}
/**
* Returns the sound this mob makes on death.
*/
protected String getDeathSound()
{
return "mob.wither.death";
}
/**
* Returns the current armor value as determined by a call to InventoryPlayer.getTotalArmorValue
*/
public int getTotalArmorValue()
{
return 8;
}
/**
* Drop 0-2 items of this living's type. @param par1 - Whether this entity has recently been hit by a player. @param
* par2 - Level of Looting used to kill this mob.
*/
protected void dropFewItems(boolean p_70628_1_, int p_70628_2_)
{
this.dropItem(TUOMItems.darkMace, 1);
this.dropItem(TUOMItems.dopalHelmet, 1);
this.dropItem(TUOMItems.dopalChestplate, 1);
this.dropItem(TUOMItems.dopalLeggings, 1);
this.dropItem(TUOMItems.dopalBoots, 1);
if (!this.worldObj.isRemote)
{
Iterator iterator = this.worldObj.getEntitiesWithinAABB(EntityPlayer.class, this.boundingBox.expand(50.0D, 100.0D, 50.0D)).iterator();
while (iterator.hasNext())
{
EntityPlayer entityplayer = (EntityPlayer)iterator.next();
entityplayer.triggerAchievement(TUOM.achievementDark);
}
}
}
public void onLivingUpdate(){
super.onLivingUpdate();
if(this.ticksExisted % 50 == 0){
this.heal(12F);
}
if(this.getAttackTarget() != null && animID == 0)
switch (this.rand.nextInt(4))
{
case 0:
if(prevAnimID != 1)
this.setAnimID(1);
AnimationAPI.sendAnimPacket(this, 1);
System.out.println("Punch");
break;
case 1:
if(prevAnimID != 3)
this.setAnimID(3);
AnimationAPI.sendAnimPacket(this, 3);
System.out.println("Potion Invoke");
break;
case 2:
if(prevAnimID != 4)
this.setAnimID(4);
AnimationAPI.sendAnimPacket(this, 4);
System.out.println("Jumperooni");
break;
case 3:
if(prevAnimID !=5)
this.setAnimID(5);
AnimationAPI.sendAnimPacket(this, 5);
System.out.println("Skull Shot");
}
if(this.animID == 3 && animTick == 0){
AnimationAPI.sendAnimPacket(this, 3);
if (!this.worldObj.isRemote && this.getAnimTick() < 50 )
{
Iterator iterator = this.worldObj.getEntitiesWithinAABB(EntityPlayer.class, this.boundingBox.expand(50.0D, 50.0D, 50.0D)).iterator();
while(iterator.hasNext()){
EntityPlayer entityplayer = (EntityPlayer)iterator.next();
double d0 = entityplayer.posX;
double d1 = entityplayer.posY;
double d2 = entityplayer.posZ;
entityplayer.addPotionEffect(new PotionEffect(TUOM.darkPotion.id, 70, 1, true));
} }
}
if(this.animID == 4 && animTick == 20){
AnimationAPI.sendAnimPacket(this, 4);
this.motionY += 3.4000000059604645D;
this.isAirBorne = true;
if(this.getAttackTarget() != null && animTick >= 120){
this.getAttackTarget().attackEntityFrom(DamageSourceTUOM.darkPunch, 70F);
System.out.println(animTick);
} }
}
private double func_82214_u(int p_82214_1_)
{
if (p_82214_1_ <= 0)
{
return this.posX;
}
else
{
float f = (this.renderYawOffset + (float)(180 * (p_82214_1_ - 1))) / 180.0F * (float)Math.PI;
float f1 = MathHelper.cos(f);
return this.posX + (double)f1 * 1.3D;
}
}
private double func_82208_v(int p_82208_1_)
{
return p_82208_1_ <= 0 ? this.posY + 3.0D : this.posY + 2.2D;
}
private double func_82213_w(int p_82213_1_)
{
if (p_82213_1_ <= 0)
{
return this.posZ;
}
else
{
float f = (this.renderYawOffset + (float)(180 * (p_82213_1_ - 1))) / 180.0F * (float)Math.PI;
float f1 = MathHelper.sin(f);
return this.posZ + (double)f1 * 1.3D;
}
}
private float func_82204_b(float p_82204_1_, float p_82204_2_, float p_82204_3_)
{
float f3 = MathHelper.wrapAngleTo180_float(p_82204_2_ - p_82204_1_);
if (f3 > p_82204_3_)
{
f3 = p_82204_3_;
}
if (f3 < -p_82204_3_)
{
f3 = -p_82204_3_;
}
return p_82204_1_ + f3;
}
private void func_82216_a(int p_82216_1_, EntityLivingBase p_82216_2_)
{
this.func_82209_a(p_82216_1_, p_82216_2_.posX, p_82216_2_.posY + (double)p_82216_2_.getEyeHeight() * 0.5D, p_82216_2_.posZ, p_82216_1_ == 0 && this.rand.nextFloat() < 0.001F);
}
private void func_82209_a(int p_82209_1_, double p_82209_2_, double p_82209_4_, double p_82209_6_, boolean p_82209_8_)
{
this.worldObj.playAuxSFXAtEntity((EntityPlayer)null, 1014, (int)this.posX, (int)this.posY, (int)this.posZ, 0);
double d3 = this.func_82214_u(p_82209_1_);
double d4 = this.func_82208_v(p_82209_1_);
double d5 = this.func_82213_w(p_82209_1_);
double d6 = p_82209_2_ - d3;
double d7 = p_82209_4_ - d4;
double d8 = p_82209_6_ - d5;
EntityDarkenedSkull EntityDarkenedSkull = new EntityDarkenedSkull(this.worldObj, this, d6, d7, d8);
if (p_82209_8_)
{
EntityDarkenedSkull.setInvulnerable(true);
}
EntityDarkenedSkull.posY = d4;
EntityDarkenedSkull.posX = d3;
EntityDarkenedSkull.posZ = d5;
this.worldObj.spawnEntityInWorld(EntityDarkenedSkull);
}
/**
* Attack the specified entity using a ranged attack.
*/
public void attackEntityWithRangedAttack(EntityLivingBase p_82196_1_, float p_82196_2_)
{
if(animID == 5 && this.getAttackTarget() != null){
this.func_82216_a(0, this.getAttackTarget());
}
}
/**
* Makes the entity despawn if requirements are reached
*/
protected void despawnEntity()
{
this.entityAge = 0;
}
@SideOnly(Side.CLIENT)
public int getBrightnessForRender(float f)
{
return 15728880;
}
protected void fall(float p_70069_1_) {}
@Override
public void setAnimID(int id) {
animID = id;
}
@Override
public void setAnimTick(int tick) {
animTick = tick;
}
@Override
public int getAnimID() {
return animID;
}
@Override
public int getAnimTick() {
return animTick;
}
public void onUpdate(){
super.onUpdate();
if(animID != 0) animTick++;
}
protected void addRandomArmor()
{
this.setCurrentItemOrArmor(0, new ItemStack(TUOMItems.darkMace));
}
public boolean attackEntityAsMob(Entity entity) {
if(animID == 0) AnimationAPI.sendAnimPacket(this, 5);
return true;
}
/**
* Get this Entity's EnumCreatureAttribute
*/
public EnumCreatureAttribute getCreatureAttribute()
{
return EnumCreatureAttribute.UNDEAD;
}
/**
* handles entity death timer, experience orb and particle creation
*/
protected void onDeathUpdate()
{
++this.deathTicks;
if(this.deathTicks >= 0){
AnimationAPI.sendAnimPacket(this, 6);
}
if (!this.worldObj.isRemote && this.deathTicks > 30 )
{
Iterator iterator = this.worldObj.getEntitiesWithinAABB(EntityPlayer.class, this.boundingBox.expand(50.0D, 50.0D, 50.0D)).iterator();
while(iterator.hasNext()){
EntityPlayer entityplayer = (EntityPlayer)iterator.next();
double d0 = entityplayer.posX;
double d1 = entityplayer.posY;
double d2 = entityplayer.posZ;
entityplayer.addPotionEffect(new PotionEffect(TUOM.darkPotion.id, 75, 1, true));
}
}
if(deathTicks >= 30 && deathTicks <= 31 && count < 1){
for(int z = 0; z < 7; z++){
{
EntityDarkBox box = new EntityDarkBox(this.worldObj);
box.setLocationAndAngles(this.posX + z, this.posY, this.posZ, this.rand.nextFloat() * 360, 0.0F);
this.worldObj.spawnEntityInWorld(box);
count = count + 1;
}
for(int y = 0; y < 7; y++){
{
EntityDarkBox box = new EntityDarkBox(this.worldObj);
box.setLocationAndAngles(this.posX, this.posY + y, this.posZ, this.rand.nextFloat() * 360, 0.0F);
this.worldObj.spawnEntityInWorld(box);
count = count + 1;
}
for(int r = 0; r < 7; r++){
{
EntityDarkBox box = new EntityDarkBox(this.worldObj);
box.setLocationAndAngles(this.posX, this.posY, this.posZ + r, this.rand.nextFloat() * 360, 0.0F);
this.worldObj.spawnEntityInWorld(box);
count = count + 1;
}
}
if(this.deathTicks >= 12 && this.deathTicks <= 28){
this.noClip = true;
this.moveEntity(0.0D, .1D, 0.0D);
}
if(this.deathTicks >= 29 && this.deathTicks <= 30){
this.moveEntity(0.0D, -.1D, 0.0D);
this.noClip = false;
}
if (this.deathTicks >= 180 && this.deathTicks <= 200)
{
float f = (this.rand.nextFloat() - 0.5F) * 8.0F;
float f1 = (this.rand.nextFloat() - 0.5F) * 4.0F;
float f2 = (this.rand.nextFloat() - 0.5F) * 8.0F;
this.worldObj.spawnParticle("hugeexplosion", this.posX + (double)f, this.posY + 2.0D + (double)f1, this.posZ + (double)f2, 0.0D, 0.0D, 0.0D);
}
int i;
int j;
if (!this.worldObj.isRemote)
{
if (this.deathTicks > 150 && this.deathTicks % 5 == 0)
{
i = 1200;
while (i > 0)
{
j = EntityXPOrb.getXPSplit(i);
i -= j;
this.worldObj.spawnEntityInWorld(new EntityXPOrb(this.worldObj, this.posX, this.posY, this.posZ, j));
}
}
}
if (this.deathTicks == 200 && !this.worldObj.isRemote)
{
i = 2000;
while (i > 0)
{
j = EntityXPOrb.getXPSplit(i);
i -= j;
this.worldObj.spawnEntityInWorld(new EntityXPOrb(this.worldObj, this.posX, this.posY, this.posZ, j));
}
this.setDead();
}
} }} } }
Render Class:
package com.tuom.theultimateoremod.entities.dark.dopaldemon;
import java.util.Random;
import org.lwjgl.opengl.GL11;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
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.entity.boss.BossStatus;
import net.minecraft.entity.boss.EntityDragon;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
public class DarkOpalRender extends RenderLiving {
private static final ResourceLocation glowTextures = new ResourceLocation("tuom:textures/entities/DarkOpalDemonGlow.png");
private static final ResourceLocation mobTextures = new ResourceLocation("tuom:textures/entities/DarkOpalDemon.png");
public DarkOpalModel darkModelMain;
public DarkOpalRender(ModelBase par1ModelBase, float par2) {
super(par1ModelBase, par2);
this.setRenderPassModel(this.darkModelMain);
}
protected void renderEquippedItems(EntityDarkOpalDemon p_77029_1_, float p_77029_2_)
{
super.renderEquippedItems(p_77029_1_, p_77029_2_);
Tessellator tessellator = Tessellator.instance;
if (p_77029_1_.deathTicks > 0)
{
RenderHelper.disableStandardItemLighting();
float f1 = ((float)p_77029_1_.deathTicks + p_77029_2_) / 200.0F;
float f2 = 0.0F;
if (f1 > 0.8F)
{
f2 = (f1 - 0.8F) / 0.2F;
}
Random random = new Random(432L);
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glDepthMask(false);
GL11.glPushMatrix();
GL11.glTranslatef(0.0F, 5.0F, 0.0F);
for (int i = 0; (float)i < (f1 + f1 * f1) / 2.0F * 60.0F; ++i)
{
GL11.glRotatef(random.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(random.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(random.nextFloat() * 360.0F + f1 * 90.0F, 0.0F, 0.0F, 1.0F);
tessellator.startDrawing(6);
float f3 = random.nextFloat() * 20.0F + 5.0F + f2 * 10.0F;
float f4 = random.nextFloat() * 2.0F + 1.0F + f2 * 2.0F;
tessellator.setColorRGBA_I(16777215, (int)(255.0F * (1.0F - f2)));
tessellator.addVertex(0.0D, 0.0D, 0.0D);
tessellator.setColorRGBA_I(16711935, 0);
tessellator.addVertex(-0.866D * (double)f4, (double)f3, (double)(-0.5F * f4));
tessellator.addVertex(0.866D * (double)f4, (double)f3, (double)(-0.5F * f4));
tessellator.addVertex(0.0D, (double)f3, (double)(1.0F * f4));
tessellator.addVertex(-0.866D * (double)f4, (double)f3, (double)(-0.5F * f4));
tessellator.draw();
}
GL11.glPopMatrix();
GL11.glDepthMask(true);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glDisable(GL11.GL_BLEND);
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_ALPHA_TEST);
RenderHelper.enableStandardItemLighting();
}
}
/**
* Queries whether should render the specified pass or not.
*/
protected int shouldRenderPass(EntityDarkOpalDemon p_77032_1_, int p_77032_2_, float p_77032_3_)
{
if (p_77032_2_ == 1)
{
GL11.glDepthFunc(GL11.GL_LEQUAL);
}
if (p_77032_2_ != 0)
{
return -1;
}
else
{
this.bindTexture(glowTextures);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDepthFunc(GL11.GL_EQUAL);
char c0 = 61680;
int j = c0 % 65536;
int k = c0 / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)j / 1.0F, (float)k / 1.0F);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
return 1;
}
}
protected ResourceLocation getEntityTexture(EntityDarkOpalDemon entity) {
return mobTextures;
}
protected ResourceLocation getEntityTexture(Entity entity) {
return this.getEntityTexture((EntityDarkOpalDemon)entity);
}
public void doRender(EntityDarkOpalDemon entity, double x, double y, double z, float rotationYaw, float rotationPitch)
{
GL11.glPushMatrix();
GL11.glRotatef(90F, 1.0F, 0.0F, 0.0F);
GL11.glPopMatrix();
BossStatus.setBossStatus(entity, true);
super.doRender((EntityLiving)entity, x, y, z, rotationYaw, rotationPitch);
}
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((EntityDarkOpalDemon)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((EntityDarkOpalDemon)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_);
}
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((EntityDarkOpalDemon)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_);
}
}
[url ="http://www.minecraftforum.net/topic/1066990-hardcore-ender-expansion"]
[I just took the Minecraft Noob test! Check out what I scored. Think you can beat me?!
[url=http://www.minecraftnoobtest.com/test.php][/url]
To take the test, check out
[url=http://www.minecraftnoobtest.com/test.php]http://minecraftnoobtest.com/test.php[/url]
To reiterate, I just took the code from the dragon so I don't know why it isn't working. Is there a specific call I'm missing in the entity class?
[url ="http://www.minecraftforum.net/topic/1066990-hardcore-ender-expansion"]
[I just took the Minecraft Noob test! Check out what I scored. Think you can beat me?!
[url=http://www.minecraftnoobtest.com/test.php][/url]
To take the test, check out
[url=http://www.minecraftnoobtest.com/test.php]http://minecraftnoobtest.com/test.php[/url]
Nobody knows?
[url ="http://www.minecraftforum.net/topic/1066990-hardcore-ender-expansion"]
[I just took the Minecraft Noob test! Check out what I scored. Think you can beat me?!
[url=http://www.minecraftnoobtest.com/test.php][/url]
To take the test, check out
[url=http://www.minecraftnoobtest.com/test.php]http://minecraftnoobtest.com/test.php[/url]
I fixed it.
[url ="http://www.minecraftforum.net/topic/1066990-hardcore-ender-expansion"]
[I just took the Minecraft Noob test! Check out what I scored. Think you can beat me?!
[url=http://www.minecraftnoobtest.com/test.php][/url]
To take the test, check out
[url=http://www.minecraftnoobtest.com/test.php]http://minecraftnoobtest.com/test.php[/url]