summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java')
-rw-r--r--src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java90
1 files changed, 46 insertions, 44 deletions
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java b/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java
index e5d13f5f..8b7a0152 100644
--- a/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java
+++ b/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java
@@ -5,26 +5,24 @@ import org.bukkit.event.entity.EntityTargetEvent; // CraftBukkit
public class PathfinderGoalMeleeAttack extends PathfinderGoal {
World a;
- EntityLiving b;
- EntityLiving c;
- int d;
- float e;
- boolean f;
- PathEntity g;
- Class h;
- private int i;
-
- public PathfinderGoalMeleeAttack(EntityLiving entityliving, Class oclass, float f, boolean flag) {
- this(entityliving, f, flag);
- this.h = oclass;
+ EntityCreature b;
+ int c;
+ double d;
+ boolean e;
+ PathEntity f;
+ Class g;
+ private int h;
+
+ public PathfinderGoalMeleeAttack(EntityCreature entitycreature, Class oclass, double d0, boolean flag) {
+ this(entitycreature, d0, flag);
+ this.g = oclass;
}
- public PathfinderGoalMeleeAttack(EntityLiving entityliving, float f, boolean flag) {
- this.d = 0;
- this.b = entityliving;
- this.a = entityliving.world;
- this.e = f;
- this.f = flag;
+ public PathfinderGoalMeleeAttack(EntityCreature entitycreature, double d0, boolean flag) {
+ this.b = entitycreature;
+ this.a = entitycreature.world;
+ this.d = d0;
+ this.e = flag;
this.a(3);
}
@@ -33,54 +31,58 @@ public class PathfinderGoalMeleeAttack extends PathfinderGoal {
if (entityliving == null) {
return false;
- } else if (this.h != null && !this.h.isAssignableFrom(entityliving.getClass())) {
+ } else if (!entityliving.isAlive()) {
+ return false;
+ } else if (this.g != null && !this.g.isAssignableFrom(entityliving.getClass())) {
return false;
} else {
- this.c = entityliving;
- this.g = this.b.getNavigation().a(this.c);
- return this.g != null;
+ this.f = this.b.getNavigation().a(entityliving);
+ return this.f != null;
}
}
public boolean b() {
EntityLiving entityliving = this.b.getGoalTarget();
- return entityliving == null ? false : (!this.c.isAlive() ? false : (!this.f ? !this.b.getNavigation().f() : this.b.d(MathHelper.floor(this.c.locX), MathHelper.floor(this.c.locY), MathHelper.floor(this.c.locZ))));
+ // CraftBukkit start
+ EntityTargetEvent.TargetReason reason = this.b.getGoalTarget() == null ? EntityTargetEvent.TargetReason.FORGOT_TARGET : EntityTargetEvent.TargetReason.TARGET_DIED;
+ if (this.b.getGoalTarget() == null || (this.b.getGoalTarget() != null && !this.b.getGoalTarget().isAlive())) {
+ org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTargetEvent(b, null, reason);
+ }
+ // CraftBukkit end
+
+ return entityliving == null ? false : (!entityliving.isAlive() ? false : (!this.e ? !this.b.getNavigation().g() : this.b.b(MathHelper.floor(entityliving.locX), MathHelper.floor(entityliving.locY), MathHelper.floor(entityliving.locZ))));
}
public void c() {
- this.b.getNavigation().a(this.g, this.e);
- this.i = 0;
+ this.b.getNavigation().a(this.f, this.d);
+ this.h = 0;
}
public void d() {
- // CraftBukkit start
- EntityTargetEvent.TargetReason reason = this.c.isAlive() ? EntityTargetEvent.TargetReason.FORGOT_TARGET : EntityTargetEvent.TargetReason.TARGET_DIED;
- org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTargetEvent(b, null, reason);
- // CraftBukkit end
-
- this.c = null;
- this.b.getNavigation().g();
+ this.b.getNavigation().h();
}
public void e() {
- this.b.getControllerLook().a(this.c, 30.0F, 30.0F);
- if ((this.f || this.b.getEntitySenses().canSee(this.c)) && --this.i <= 0) {
- this.i = 4 + this.b.aE().nextInt(7);
- this.b.getNavigation().a(this.c, this.e);
+ EntityLiving entityliving = this.b.getGoalTarget();
+
+ this.b.getControllerLook().a(entityliving, 30.0F, 30.0F);
+ if ((this.e || this.b.getEntitySenses().canSee(entityliving)) && --this.h <= 0) {
+ this.h = 4 + this.b.aB().nextInt(7);
+ this.b.getNavigation().a((Entity) entityliving, this.d);
}
- this.d = Math.max(this.d - 1, 0);
- double d0 = (double) (this.b.width * 2.0F * this.b.width * 2.0F);
+ this.c = Math.max(this.c - 1, 0);
+ double d0 = (double) (this.b.width * 2.0F * this.b.width * 2.0F + entityliving.width);
- if (this.b.e(this.c.locX, this.c.boundingBox.b, this.c.locZ) <= d0) {
- if (this.d <= 0) {
- this.d = 20;
- if (this.b.bG() != null) {
- this.b.bK();
+ if (this.b.e(entityliving.locX, entityliving.boundingBox.b, entityliving.locZ) <= d0) {
+ if (this.c <= 0) {
+ this.c = 20;
+ if (this.b.aV() != null) {
+ this.b.aR();
}
- this.b.m(this.c);
+ this.b.m(entityliving);
}
}
}