diff options
author | Andrew Ardill <andrew.ardill@gmail.com> | 2011-01-17 11:03:19 +0800 |
---|---|---|
committer | Dinner Bone <dinnerbone@dinnerbone.com> | 2011-01-18 00:13:32 +0800 |
commit | 5209e17e1bd0e0803035c697c1ec10c49831dfdb (patch) | |
tree | 849b2a1cae93687c886a0f55d63b0e93fb636cea /src/main/java/net/minecraft/server/EntityLiving.java | |
parent | 5f2c8108b776ab5710adfe597574fb0b7e929e36 (diff) | |
download | craftbukkit-5209e17e1bd0e0803035c697c1ec10c49831dfdb.tar craftbukkit-5209e17e1bd0e0803035c697c1ec10c49831dfdb.tar.gz craftbukkit-5209e17e1bd0e0803035c697c1ec10c49831dfdb.tar.lz craftbukkit-5209e17e1bd0e0803035c697c1ec10c49831dfdb.tar.xz craftbukkit-5209e17e1bd0e0803035c697c1ec10c49831dfdb.zip |
Adding all Entities into CraftBukkit.
These are needed to properly allow for determining class type, in
accordance with current practice.
Diffstat (limited to 'src/main/java/net/minecraft/server/EntityLiving.java')
-rw-r--r-- | src/main/java/net/minecraft/server/EntityLiving.java | 723 |
1 files changed, 723 insertions, 0 deletions
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java new file mode 100644 index 00000000..76cc6b5c --- /dev/null +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -0,0 +1,723 @@ +package net.minecraft.server; + +import java.util.List; +import java.util.Random; + +public abstract class EntityLiving extends Entity { + + public int aF; + public float aG; + public float aH; + public float aI; + public float aJ; + protected float aK; + protected float aL; + protected float aM; + protected float aN; + protected boolean aO; + protected String aP; + protected boolean aQ; + protected float aR; + protected String aS; + protected float aT; + protected int aU; + protected float aV; + public boolean aW; + public float aX; + public float aY; + public int aZ; + public int ba; + private int a; + public int bb; + public int bc; + public float bd; + public int be; + public int bf; + public float bg; + public float bh; + protected boolean bi; + public int bj; + public float bk; + public float bl; + public float bm; + public float bn; + protected int bo; + protected double bp; + protected double bq; + protected double br; + protected double bs; + protected double bt; + float bu; + protected int bv; + protected int bw; + protected float bx; + protected float by; + protected float bz; + protected boolean bA; + protected float bB; + protected float bC; + private Entity b; + private int c; + + public EntityLiving(World world) { + super(world); + aF = 20; + aI = 0.0F; + aJ = 0.0F; + aO = true; + aP = "/mob/char.png"; + aQ = true; + aR = 0.0F; + aS = null; + aT = 1.0F; + aU = 0; + aV = 0.0F; + aW = false; + bd = 0.0F; + be = 0; + bf = 0; + bi = false; + bj = -1; + bk = (float) (Math.random() * 0.89999997615814209D + 0.10000000149011612D); + bu = 0.0F; + bv = 0; + bw = 0; + bA = false; + bB = 0.0F; + bC = 0.7F; + c = 0; + aZ = 10; + i = true; + aH = (float) (Math.random() + 1.0D) * 0.01F; + a(p, q, r); + aG = (float) Math.random() * 12398F; + v = (float) (Math.random() * 3.1415927410125732D * 2D); + S = 0.5F; + } + + protected void a() {} + + public boolean i(Entity entity) { + return l.a(Vec3D.b(p, q + (double) w(), r), Vec3D.b(entity.p, entity.q + (double) entity.w(), entity.r)) == null; + } + + public boolean c_() { + return !G; + } + + public boolean z() { + return !G; + } + + public float w() { + return J * 0.85F; + } + + public int c() { + return 80; + } + + public void r() { + aX = aY; + super.r(); + if (W.nextInt(1000) < a++) { + a = -c(); + String s = e(); + + if (s != null) { + this.l.a(((Entity) (this)), s, i(), (W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F); + } + } + if (B() && C()) { + a(((Entity) (null)), 1); + } + if (ae || this.l.z) { + Z = 0; + } + if (B() && a(Material.f) && !d_()) { + ad--; + if (ad == -20) { + ad = 0; + for (int k = 0; k < 8; k++) { + float f1 = W.nextFloat() - W.nextFloat(); + float f2 = W.nextFloat() - W.nextFloat(); + float f3 = W.nextFloat() - W.nextFloat(); + + this.l.a("bubble", p + (double) f1, q + (double) f2, r + (double) f3, this.s, t, u); + } + + a(((Entity) (null)), 2); + } + Z = 0; + } else { + ad = aa; + } + bg = bh; + if (bf > 0) { + bf--; + } + if (bb > 0) { + bb--; + } + if (ac > 0) { + ac--; + } + if (aZ <= 0) { + be++; + if (be > 20) { + T(); + q(); + for (int l = 0; l < 20; l++) { + double d1 = W.nextGaussian() * 0.02D; + double d2 = W.nextGaussian() * 0.02D; + double d3 = W.nextGaussian() * 0.02D; + + this.l.a("explode", (p + (double) (W.nextFloat() * I * 2.0F)) - (double) I, q + (double) (W.nextFloat() * J), (r + (double) (W.nextFloat() * I * 2.0F)) - (double) I, d1, d2, d3); + } + } + } + aN = aM; + aJ = aI; + x = v; + y = w; + } + + public void R() { + for (int k = 0; k < 20; k++) { + double d1 = W.nextGaussian() * 0.02D; + double d2 = W.nextGaussian() * 0.02D; + double d3 = W.nextGaussian() * 0.02D; + double d4 = 10D; + + l.a("explode", (p + (double) (W.nextFloat() * I * 2.0F)) - (double) I - d1 * d4, (q + (double) (W.nextFloat() * J)) - d2 * d4, (r + (double) (W.nextFloat() * I * 2.0F)) - (double) I - d3 * d4, d1, d2, d3); + } + } + + public void D() { + super.D(); + aK = aL; + aL = 0.0F; + } + + public void b_() { + super.b_(); + o(); + double d1 = p - m; + double d2 = r - o; + float f1 = MathHelper.a(d1 * d1 + d2 * d2); + float f2 = aI; + float f3 = 0.0F; + + aK = aL; + float f4 = 0.0F; + + if (f1 > 0.05F) { + f4 = 1.0F; + f3 = f1 * 3F; + f2 = ((float) Math.atan2(d2, d1) * 180F) / 3.141593F - 90F; + } + if (aY > 0.0F) { + f2 = v; + } + if (!A) { + f4 = 0.0F; + } + aL = aL + (f4 - aL) * 0.3F; + float f5; + + for (f5 = f2 - aI; f5 < -180F; f5 += 360F) { + ; + } + for (; f5 >= 180F; f5 -= 360F) { + ; + } + aI += f5 * 0.3F; + float f6; + + for (f6 = v - aI; f6 < -180F; f6 += 360F) { + ; + } + for (; f6 >= 180F; f6 -= 360F) { + ; + } + boolean flag = f6 < -90F || f6 >= 90F; + + if (f6 < -75F) { + f6 = -75F; + } + if (f6 >= 75F) { + f6 = 75F; + } + aI = v - f6; + if (f6 * f6 > 2500F) { + aI += f6 * 0.2F; + } + if (flag) { + f3 *= -1F; + } + for (; v - x < -180F; x -= 360F) { + ; + } + for (; v - x >= 180F; x += 360F) { + ; + } + for (; aI - aJ < -180F; aJ -= 360F) { + ; + } + for (; aI - aJ >= 180F; aJ += 360F) { + ; + } + for (; w - y < -180F; y -= 360F) { + ; + } + for (; w - y >= 180F; y += 360F) { + ; + } + aM += f3; + } + + protected void a(float f1, float f2) { + super.a(f1, f2); + } + + public void d(int k) { + if (aZ <= 0) { + return; + } + aZ += k; + if (aZ > 20) { + aZ = 20; + } + ac = aF / 2; + } + + public boolean a(Entity entity, int k) { + if (l.z) { + return false; + } + bw = 0; + if (aZ <= 0) { + return false; + } + bm = 1.5F; + boolean flag = true; + + if ((float) ac > (float) aF / 2.0F) { + if (k <= bv) { + return false; + } + e(k - bv); + bv = k; + flag = false; + } else { + bv = k; + ba = aZ; + ac = aF; + e(k); + bb = bc = 10; + } + bd = 0.0F; + if (flag) { + l.a(((Entity) (this)), (byte) 2); + y(); + if (entity != null) { + double d1 = entity.p - p; + double d2; + + for (d2 = entity.r - r; d1 * d1 + d2 * d2 < 0.0001D; d2 = (Math.random() - Math.random()) * 0.01D) { + d1 = (Math.random() - Math.random()) * 0.01D; + } + + bd = (float) ((Math.atan2(d2, d1) * 180D) / 3.1415927410125732D) - v; + a(entity, k, d1, d2); + } else { + bd = (int) (Math.random() * 2D) * 180; + } + } + if (aZ <= 0) { + if (flag) { + l.a(((Entity) (this)), g(), i(), (W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F); + } + f(entity); + } else if (flag) { + l.a(((Entity) (this)), f(), i(), (W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F); + } + return true; + } + + protected void e(int k) { + aZ -= k; + } + + protected float i() { + return 1.0F; + } + + protected String e() { + return null; + } + + protected String f() { + return "random.hurt"; + } + + protected String g() { + return "random.hurt"; + } + + public void a(Entity entity, int k, double d1, double d2) { + float f1 = MathHelper.a(d1 * d1 + d2 * d2); + float f2 = 0.4F; + + s /= 2D; + t /= 2D; + u /= 2D; + s -= (d1 / (double) f1) * (double) f2; + t += 0.40000000596046448D; + u -= (d2 / (double) f1) * (double) f2; + if (t > 0.40000000596046448D) { + t = 0.40000000596046448D; + } + } + + public void f(Entity entity) { + if (aU > 0 && entity != null) { + entity.b(((Entity) (this)), aU); + } + bi = true; + if (!l.z) { + g_(); + } + l.a(((Entity) (this)), (byte) 3); + } + + protected void g_() { + int k = h(); + + if (k > 0) { + int l = W.nextInt(3); + + for (int i1 = 0; i1 < l; i1++) { + a(k, 1); + } + } + } + + protected int h() { + return 0; + } + + protected void a(float f1) { + int k = (int) Math.ceil(f1 - 3F); + + if (k > 0) { + a(((Entity) (null)), k); + int l = this.l.a(MathHelper.b(p), MathHelper.b(q - 0.20000000298023224D - (double) H), MathHelper.b(r)); + + if (l > 0) { + StepSound stepsound = Block.m[l].br; + + this.l.a(((Entity) (this)), stepsound.c(), stepsound.a() * 0.5F, stepsound.b() * 0.75F); + } + } + } + + public void c(float f1, float f2) { + if (v()) { + double d1 = q; + + a(f1, f2, 0.02F); + c(s, t, u); + s *= 0.80000001192092896D; + t *= 0.80000001192092896D; + u *= 0.80000001192092896D; + t -= 0.02D; + if (B && b(s, ((t + 0.60000002384185791D) - q) + d1, u)) { + t = 0.30000001192092896D; + } + } else if (x()) { + double d2 = q; + + a(f1, f2, 0.02F); + c(s, t, u); + s *= 0.5D; + t *= 0.5D; + u *= 0.5D; + t -= 0.02D; + if (B && b(s, ((t + 0.60000002384185791D) - q) + d2, u)) { + t = 0.30000001192092896D; + } + } else { + float f3 = 0.91F; + + if (A) { + f3 = 0.5460001F; + int k = this.l.a(MathHelper.b(p), MathHelper.b(z.b) - 1, MathHelper.b(r)); + + if (k > 0) { + f3 = Block.m[k].bu * 0.91F; + } + } + float f4 = 0.1627714F / (f3 * f3 * f3); + + a(f1, f2, A ? 0.1F * f4 : 0.02F); + f3 = 0.91F; + if (A) { + f3 = 0.5460001F; + int l = this.l.a(MathHelper.b(p), MathHelper.b(z.b) - 1, MathHelper.b(r)); + + if (l > 0) { + f3 = Block.m[l].bu * 0.91F; + } + } + if (m()) { + N = 0.0F; + if (t < -0.14999999999999999D) { + t = -0.14999999999999999D; + } + } + c(s, t, u); + if (B && m()) { + t = 0.20000000000000001D; + } + t -= 0.080000000000000002D; + t *= 0.98000001907348633D; + s *= f3; + u *= f3; + } + bl = bm; + double d3 = p - m; + double d4 = r - o; + float f5 = MathHelper.a(d3 * d3 + d4 * d4) * 4F; + + if (f5 > 1.0F) { + f5 = 1.0F; + } + bm += (f5 - bm) * 0.4F; + bn += bm; + } + + public boolean m() { + int k = MathHelper.b(p); + int l = MathHelper.b(z.b); + int i1 = MathHelper.b(r); + + return this.l.a(k, l, i1) == Block.aF.bi || this.l.a(k, l + 1, i1) == Block.aF.bi; + } + + public void a(NBTTagCompound nbttagcompound) { + nbttagcompound.a("Health", (short) aZ); + nbttagcompound.a("HurtTime", (short) bb); + nbttagcompound.a("DeathTime", (short) be); + nbttagcompound.a("AttackTime", (short) bf); + } + + public void b(NBTTagCompound nbttagcompound) { + aZ = ((int) (nbttagcompound.c("Health"))); + if (!nbttagcompound.a("Health")) { + aZ = 10; + } + bb = ((int) (nbttagcompound.c("HurtTime"))); + be = ((int) (nbttagcompound.c("DeathTime"))); + bf = ((int) (nbttagcompound.c("AttackTime"))); + } + + public boolean B() { + return !G && aZ > 0; + } + + public boolean d_() { + return false; + } + + public void o() { + if (bo > 0) { + double d1 = p + (bp - p) / (double) bo; + double d2 = q + (bq - q) / (double) bo; + double d3 = r + (br - r) / (double) bo; + double d4; + + for (d4 = bs - (double) v; d4 < -180D; d4 += 360D) { + ; + } + for (; d4 >= 180D; d4 -= 360D) { + ; + } + v += ((float) (d4 / (double) bo)); + w += ((float) ((bt - (double) w) / (double) bo)); + bo--; + a(d1, d2, d3); + b(v, w); + } + if (aZ <= 0) { + bA = false; + bx = 0.0F; + by = 0.0F; + bz = 0.0F; + } else if (!aW) { + d(); + } + boolean flag = v(); + boolean flag1 = x(); + + if (bA) { + if (flag) { + t += 0.039999999105930328D; + } else if (flag1) { + t += 0.039999999105930328D; + } else if (A) { + S(); + } + } + bx *= 0.98F; + by *= 0.98F; + bz *= 0.9F; + c(bx, by); + List list = l.b(((Entity) (this)), z.b(0.20000000298023224D, 0.0D, 0.20000000298023224D)); + + if (list != null && list.size() > 0) { + for (int k = 0; k < list.size(); k++) { + Entity entity = (Entity) list.get(k); + + if (entity.z()) { + entity.c(((Entity) (this))); + } + } + } + } + + protected void S() { + t = 0.41999998688697815D; + } + + protected void d() { + bw++; + EntityPlayer entityplayer = l.a(((Entity) (this)), -1D); + + if (entityplayer != null) { + double d1 = ((Entity) (entityplayer)).p - p; + double d2 = ((Entity) (entityplayer)).q - q; + double d3 = ((Entity) (entityplayer)).r - r; + double d4 = d1 * d1 + d2 * d2 + d3 * d3; + + if (d4 > 16384D) { + q(); + } + if (bw > 600 && W.nextInt(800) == 0) { + if (d4 < 1024D) { + bw = 0; + } else { + q(); + } + } + } + bx = 0.0F; + by = 0.0F; + float f1 = 8F; + + if (W.nextFloat() < 0.02F) { + EntityPlayer entityplayer1 = l.a(((Entity) (this)), f1); + + if (entityplayer1 != null) { + b = ((Entity) (entityplayer1)); + c = 10 + W.nextInt(20); + } else { + bz = (W.nextFloat() - 0.5F) * 20F; + } + } + if (b != null) { + b(b, 10F); + if (c-- <= 0 || b.G || b.b(((Entity) (this))) > (double) (f1 * f1)) { + b = null; + } + } else { + if (W.nextFloat() < 0.05F) { + bz = (W.nextFloat() - 0.5F) * 20F; + } + v += bz; + w = bB; + } + boolean flag = v(); + boolean flag1 = x(); + + if (flag || flag1) { + bA = W.nextFloat() < 0.8F; + } + } + + public void b(Entity entity, float f1) { + double d1 = entity.p - p; + double d2 = entity.r - r; + double d3; + + if (entity instanceof EntityLiving) { + EntityLiving entityliving = (EntityLiving) entity; + + d3 = (entityliving.q + (double) entityliving.w()) - (q + (double) w()); + } else { + d3 = (entity.z.b + entity.z.e) / 2D - (q + (double) w()); + } + double d4 = MathHelper.a(d1 * d1 + d2 * d2); + float f2 = (float) ((Math.atan2(d2, d1) * 180D) / 3.1415927410125732D) - 90F; + float f3 = (float) ((Math.atan2(d3, d4) * 180D) / 3.1415927410125732D); + + w = -b(w, f3, f1); + v = b(v, f2, f1); + } + + private float b(float f1, float f2, float f3) { + float f4; + + for (f4 = f2 - f1; f4 < -180F; f4 += 360F) { + ; + } + for (; f4 >= 180F; f4 -= 360F) { + ; + } + if (f4 > f3) { + f4 = f3; + } + if (f4 < -f3) { + f4 = -f3; + } + return f1 + f4; + } + + public void T() {} + + public boolean b() { + return l.a(z) && l.a(((Entity) (this)), z).size() == 0 && !l.b(z); + } + + protected void t() { + a(((Entity) (null)), 4); + } + + public Vec3D G() { + return c(1.0F); + } + + public Vec3D c(float f1) { + if (f1 == 1.0F) { + float f2 = MathHelper.b(-v * 0.01745329F - 3.141593F); + float f4 = MathHelper.a(-v * 0.01745329F - 3.141593F); + float f6 = -MathHelper.b(-w * 0.01745329F); + float f8 = MathHelper.a(-w * 0.01745329F); + + return Vec3D.b(f4 * f6, f8, f2 * f6); + } else { + float f3 = y + (w - y) * f1; + float f5 = x + (v - x) * f1; + float f7 = MathHelper.b(-f5 * 0.01745329F - 3.141593F); + float f9 = MathHelper.a(-f5 * 0.01745329F - 3.141593F); + float f10 = -MathHelper.b(-f3 * 0.01745329F); + float f11 = MathHelper.a(-f3 * 0.01745329F); + + return Vec3D.b(f9 * f10, f11, f7 * f10); + } + } + + public int j() { + return 4; + } +} |