Files
CustomNPC-Plus/src/main/java/noppes/npcs/entity/EntityNpcDragon.java
T
2025-03-13 17:14:45 -04:00

122 lines
3.6 KiB
Java

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;
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;
}
}