summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/EntityCreature.java
diff options
context:
space:
mode:
authorAndrew Ardill <andrew.ardill@gmail.com>2011-01-17 11:03:19 +0800
committerDinner Bone <dinnerbone@dinnerbone.com>2011-01-18 00:13:32 +0800
commit5209e17e1bd0e0803035c697c1ec10c49831dfdb (patch)
tree849b2a1cae93687c886a0f55d63b0e93fb636cea /src/main/java/net/minecraft/server/EntityCreature.java
parent5f2c8108b776ab5710adfe597574fb0b7e929e36 (diff)
downloadcraftbukkit-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/EntityCreature.java')
-rw-r--r--src/main/java/net/minecraft/server/EntityCreature.java149
1 files changed, 149 insertions, 0 deletions
diff --git a/src/main/java/net/minecraft/server/EntityCreature.java b/src/main/java/net/minecraft/server/EntityCreature.java
new file mode 100644
index 00000000..da584aa4
--- /dev/null
+++ b/src/main/java/net/minecraft/server/EntityCreature.java
@@ -0,0 +1,149 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class EntityCreature extends EntityLiving {
+
+ private PathEntity a;
+ protected Entity d;
+ protected boolean e;
+
+ public EntityCreature(World world) {
+ super(world);
+ e = false;
+ }
+
+ protected void d() {
+ e = false;
+ float f = 16F;
+
+ if (d == null) {
+ d = l();
+ if (d != null) {
+ a = l.a(((Entity) (this)), d, f);
+ }
+ } else if (!d.B()) {
+ d = null;
+ } else {
+ float f1 = d.a(((Entity) (this)));
+
+ if (i(d)) {
+ a(d, f1);
+ }
+ }
+ if (!e && d != null && (a == null || W.nextInt(20) == 0)) {
+ a = l.a(((Entity) (this)), d, f);
+ } else if (a == null && W.nextInt(80) == 0 || W.nextInt(80) == 0) {
+ boolean flag = false;
+ int j = -1;
+ int k = -1;
+ int i1 = -1;
+ float f2 = -99999F;
+
+ for (int j1 = 0; j1 < 10; j1++) {
+ int k1 = MathHelper.b((p + (double) W.nextInt(13)) - 6D);
+ int l1 = MathHelper.b((q + (double) W.nextInt(7)) - 3D);
+ int i2 = MathHelper.b((r + (double) W.nextInt(13)) - 6D);
+ float f3 = a(k1, l1, i2);
+
+ if (f3 > f2) {
+ f2 = f3;
+ j = k1;
+ k = l1;
+ i1 = i2;
+ flag = true;
+ }
+ }
+
+ if (flag) {
+ a = l.a(((Entity) (this)), j, k, i1, 10F);
+ }
+ }
+ int i = MathHelper.b(z.b);
+ boolean flag1 = v();
+ boolean flag2 = x();
+
+ w = 0.0F;
+ if (a == null || W.nextInt(100) == 0) {
+ super.d();
+ a = null;
+ return;
+ }
+ Vec3D vec3d = a.a(((Entity) (this)));
+
+ for (double d1 = I * 2.0F; vec3d != null && vec3d.d(p, vec3d.b, r) < d1 * d1;) {
+ a.a();
+ if (a.b()) {
+ vec3d = null;
+ a = null;
+ } else {
+ vec3d = a.a(((Entity) (this)));
+ }
+ }
+
+ bA = false;
+ if (vec3d != null) {
+ double d2 = vec3d.a - p;
+ double d3 = vec3d.c - r;
+ double d4 = vec3d.b - (double) i;
+ float f4 = (float) ((Math.atan2(d3, d2) * 180D) / 3.1415927410125732D) - 90F;
+ float f5 = f4 - v;
+
+ by = bC;
+ for (; f5 < -180F; f5 += 360F) {
+ ;
+ }
+ for (; f5 >= 180F; f5 -= 360F) {
+ ;
+ }
+ if (f5 > 30F) {
+ f5 = 30F;
+ }
+ if (f5 < -30F) {
+ f5 = -30F;
+ }
+ v += f5;
+ if (e && d != null) {
+ double d5 = d.p - p;
+ double d6 = d.r - r;
+ float f7 = v;
+
+ v = (float) ((Math.atan2(d6, d5) * 180D) / 3.1415927410125732D) - 90F;
+ float f6 = (((f7 - v) + 90F) * 3.141593F) / 180F;
+
+ bx = -MathHelper.a(f6) * by * 1.0F;
+ by = MathHelper.b(f6) * by * 1.0F;
+ }
+ if (d4 > 0.0D) {
+ bA = true;
+ }
+ }
+ if (d != null) {
+ b(d, 30F);
+ }
+ if (B) {
+ bA = true;
+ }
+ if (W.nextFloat() < 0.8F && (flag1 || flag2)) {
+ bA = true;
+ }
+ }
+
+ protected void a(Entity entity, float f) {}
+
+ protected float a(int i, int j, int k) {
+ return 0.0F;
+ }
+
+ protected Entity l() {
+ return null;
+ }
+
+ public boolean b() {
+ int i = MathHelper.b(p);
+ int j = MathHelper.b(z.b);
+ int k = MathHelper.b(r);
+
+ return super.b() && a(i, j, k) >= 0.0F;
+ }
+}