Files
CustomNPC-Plus/src/main/java/noppes/npcs/entity/EntityNpcDragon.java
T

121 lines
3.5 KiB
Java
Raw Normal View History

2018-09-13 12:03:28 -04:00
package noppes.npcs.entity;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import noppes.npcs.entity.data.ModelData;
2018-09-13 12:03:28 -04:00
public class EntityNpcDragon extends EntityNPCInterface{
public EntityNpcDragon(World world)
{
super(world);
field_40162_d = new double[64][3];
field_40164_e = -1;
field_40173_aw = 0.0F;
field_40172_ax = 0.0F;
field_40178_aA = 0;
scaleX = 0.4f;
scaleY = 0.4f;
scaleZ = 0.4f;
display.texture = "customnpcs:textures/entity/dragon/BlackDragon.png";
width = 1.8f;
height = 1.4f;
}
public double field_40162_d[][];
public int field_40164_e;
public float field_40173_aw;
public float field_40172_ax;
public int field_40178_aA;
public boolean isFlying = false;
@Override
public double getMountedYOffset(){
return 1.1;
}
public double[] func_40160_a(int i, float f)
{
f = 1.0F - f;
int j = field_40164_e - i * 1 & 0x3f;
int k = field_40164_e - i * 1 - 1 & 0x3f;
double ad[] = new double[3];
double d = field_40162_d[j][0];
double d1;
for(d1 = field_40162_d[k][0] - d; d1 < -180D; d1 += 360D) { }
for(; d1 >= 180D; d1 -= 360D) { }
ad[0] = d + d1 * (double)f;
d = field_40162_d[j][1];
d1 = field_40162_d[k][1] - d;
ad[1] = d + d1 * (double)f;
ad[2] = field_40162_d[j][2] + (field_40162_d[k][2] - field_40162_d[j][2]) * (double)f;
return ad;
}
public void onUpdate()
{
isDead = true;
if(!worldObj.isRemote){
NBTTagCompound compound = new NBTTagCompound();
writeToNBT(compound);
EntityCustomNpc npc = new EntityCustomNpc(worldObj);
npc.readFromNBT(compound);
ModelData data = npc.modelData;
data.setEntityClass(EntityNpcDragon.class);
worldObj.spawnEntityInWorld(npc);
}
super.onUpdate();
}
private boolean exploded = false;
@Override
public void onLivingUpdate()
{
field_40173_aw = field_40172_ax;
if(worldObj.isRemote && getHealth() <= 0)
{
if(!exploded){
exploded = true;
float f = (rand.nextFloat() - 0.5F) * 8F;
float f2 = (rand.nextFloat() - 0.5F) * 4F;
float f4 = (rand.nextFloat() - 0.5F) * 8F;
worldObj.spawnParticle("largeexplode", posX + (double)f, posY + 2D + (double)f2, posZ + (double)f4, 0.0D, 0.0D, 0.0D);
}
}
else{
exploded = false;
//func_41011_ay();
float f1 = 0.2F / (MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ) * 10F + 1.0F);
f1 = 0.045f;
f1 *= (float)Math.pow(2D, motionY);
field_40172_ax += f1 * 0.5F;
}
super.onLivingUpdate();
}
// public float ticks = 0.0f;
// public void updateRiderPosition()
// {
// if (riddenByEntity == null)
// {
// super.updateRiderPosition();
// return;
// }
// else
// {
// float f6 = field_40173_aw + (field_40172_ax - field_40173_aw) * ticks;
// float f7 = (float)(Math.sin(f6 * 3.141593F * 2.0F - 1.0F) + 1.0D);
// riddenByEntity.setPosition(posX , posY + getMountedYOffset() + riddenByEntity.getYOffset() - f7 / 12, posZ);
// return;
// }
// }
@Override
public void updateHitbox() {
width = 1.8f;
height = 1.4f;
}
}