diff options
author | feildmaster <admin@feildmaster.com> | 2012-03-09 15:40:59 -0600 |
---|---|---|
committer | EvilSeph <evilseph@gmail.com> | 2012-03-10 02:08:33 -0500 |
commit | 77ef0510958b7386b7f9b861aa7936f21a183a6b (patch) | |
tree | 6c402f3c583c803cbd81450c788d4c65d0c2707a /src/main/java/net/minecraft/server/PathfinderGoalTarget.java | |
parent | a967d6e3710df70bbbc7663ed0f3ed8b65810d4d (diff) | |
download | craftbukkit-77ef0510958b7386b7f9b861aa7936f21a183a6b.tar craftbukkit-77ef0510958b7386b7f9b861aa7936f21a183a6b.tar.gz craftbukkit-77ef0510958b7386b7f9b861aa7936f21a183a6b.tar.lz craftbukkit-77ef0510958b7386b7f9b861aa7936f21a183a6b.tar.xz craftbukkit-77ef0510958b7386b7f9b861aa7936f21a183a6b.zip |
[Bleeding] Added new target events. Fixes BUKKIT-935
Diffstat (limited to 'src/main/java/net/minecraft/server/PathfinderGoalTarget.java')
-rw-r--r-- | src/main/java/net/minecraft/server/PathfinderGoalTarget.java | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalTarget.java index be5371a0..327f235c 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalTarget.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalTarget.java @@ -1,5 +1,7 @@ package net.minecraft.server; +import org.bukkit.event.entity.EntityTargetEvent; // CraftBukkit + public abstract class PathfinderGoalTarget extends PathfinderGoal { protected EntityLiving c; @@ -100,6 +102,31 @@ public abstract class PathfinderGoalTarget extends PathfinderGoal { } } + // CraftBukkit start - Check all the different target goals for the reason, default to RANDOM_TARGET + EntityTargetEvent.TargetReason reason = EntityTargetEvent.TargetReason.RANDOM_TARGET; + + if (this instanceof PathfinderGoalDefendVillage) { + reason = EntityTargetEvent.TargetReason.DEFEND_VILLAGE; + } else if (this instanceof PathfinderGoalHurtByTarget) { + reason = EntityTargetEvent.TargetReason.TARGET_ATTACKED_ENTITY; + } else if (this instanceof PathfinderGoalNearestAttackableTarget) { + if (entityliving instanceof EntityHuman) { + reason = EntityTargetEvent.TargetReason.CLOSEST_PLAYER; + } + } else if (this instanceof PathfinderGoalOwnerHurtByTarget) { + reason = EntityTargetEvent.TargetReason.TARGET_ATTACKED_OWNER; + } else if (this instanceof PathfinderGoalOwnerHurtTarget) { + reason = EntityTargetEvent.TargetReason.OWNER_ATTACKED_TARGET; + } + + org.bukkit.event.entity.EntityTargetLivingEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTargetLivingEvent(c, entityliving, reason); + if (event.isCancelled() || event.getTarget() == null) { + return false; + } else if (entityliving.getBukkitEntity() != event.getTarget()) { + this.c.b((EntityLiving) ((org.bukkit.craftbukkit.entity.CraftEntity) event.getTarget()).getHandle()); + } + // CraftBukkit end + return true; } } |