summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTaylor Kelly <tkelly910@gmail.com>2011-01-26 14:26:24 -0500
committerTaylor Kelly <tkelly910@gmail.com>2011-01-26 14:26:24 -0500
commitc07e32c1de57898d5f7ad2fbfa0800d65fc20f5a (patch)
tree5bbc5a84094a38e0e098d5d1d4f9e21432e4d8f8
parent0ba870434ea7ec6e75652cad0b3fb6b9d240bbb6 (diff)
downloadcraftbukkit-c07e32c1de57898d5f7ad2fbfa0800d65fc20f5a.tar
craftbukkit-c07e32c1de57898d5f7ad2fbfa0800d65fc20f5a.tar.gz
craftbukkit-c07e32c1de57898d5f7ad2fbfa0800d65fc20f5a.tar.lz
craftbukkit-c07e32c1de57898d5f7ad2fbfa0800d65fc20f5a.tar.xz
craftbukkit-c07e32c1de57898d5f7ad2fbfa0800d65fc20f5a.zip
EntityTargetEvent
-rw-r--r--src/main/java/net/minecraft/server/EntityCreature.java32
-rw-r--r--src/main/java/net/minecraft/server/EntityMobs.java20
-rw-r--r--src/main/java/net/minecraft/server/EntityPigZombie.java24
-rw-r--r--src/main/java/net/minecraft/server/EntitySpider.java18
4 files changed, 86 insertions, 8 deletions
diff --git a/src/main/java/net/minecraft/server/EntityCreature.java b/src/main/java/net/minecraft/server/EntityCreature.java
index 801b64ad..98afd9cd 100644
--- a/src/main/java/net/minecraft/server/EntityCreature.java
+++ b/src/main/java/net/minecraft/server/EntityCreature.java
@@ -5,6 +5,9 @@ import java.util.Random;
// CraftBukkit start
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.entity.CraftCreature;
+import org.bukkit.craftbukkit.entity.CraftEntity;
+import org.bukkit.event.entity.EntityTargetEvent;
+import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
// CraftBukkit end
public class EntityCreature extends EntityLiving {
@@ -27,12 +30,37 @@ public class EntityCreature extends EntityLiving {
float f = 16F;
if (d == null) {
- d = l();
+ // CraftBukkit start
+ Entity target = l();
+ if(target != null) {
+ EntityTargetEvent event = new EntityTargetEvent(this.getBukkitEntity(), target.getBukkitEntity(), TargetReason.CLOSEST_PLAYER);
+ CraftServer server = ((WorldServer) this.l).getServer();
+ server.getPluginManager().callEvent(event);
+ if(!event.isCancelled()) {
+ if(event.getTarget() == null) {
+ d = null;
+ } else {
+ d = ((CraftEntity) event.getTarget()).getHandle();
+ }
+ }
+ }
+ // CraftBukkit end
if (d != null) {
a = l.a(((Entity) (this)), d, f);
}
} else if (!d.B()) {
- d = null;
+ // CraftBukkit start
+ EntityTargetEvent event = new EntityTargetEvent(this.getBukkitEntity(), null, TargetReason.TARGET_DIED);
+ CraftServer server = ((WorldServer) this.l).getServer();
+ server.getPluginManager().callEvent(event);
+ if(!event.isCancelled()) {
+ if(event.getTarget() == null) {
+ d = null;
+ } else {
+ d = ((CraftEntity) event.getTarget()).getHandle();
+ }
+ }
+ // CraftBukkit end
} else {
float f1 = d.a(((Entity) (this)));
diff --git a/src/main/java/net/minecraft/server/EntityMobs.java b/src/main/java/net/minecraft/server/EntityMobs.java
index df910e41..e75b345c 100644
--- a/src/main/java/net/minecraft/server/EntityMobs.java
+++ b/src/main/java/net/minecraft/server/EntityMobs.java
@@ -5,10 +5,13 @@ import java.util.Random;
// CraftBukkit start
import org.bukkit.craftbukkit.entity.CraftMonster;
import org.bukkit.craftbukkit.CraftServer;
+import org.bukkit.craftbukkit.entity.CraftEntity;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
+import org.bukkit.event.entity.EntityTargetEvent;
+import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
// CraftBukkit end
public class EntityMobs extends EntityCreature implements IMobs {
@@ -57,7 +60,22 @@ public class EntityMobs extends EntityCreature implements IMobs {
return true;
}
if (entity != this) {
- d = entity;
+ // CraftBukkit start
+ org.bukkit.entity.Entity bukkitTarget = null;
+ if(entity != null) {
+ bukkitTarget = entity.getBukkitEntity();
+ }
+ EntityTargetEvent event = new EntityTargetEvent(this.getBukkitEntity(), bukkitTarget, TargetReason.TARGET_ATTACKED_ENTITY);
+ CraftServer server = ((WorldServer) this.l).getServer();
+ server.getPluginManager().callEvent(event);
+ if(!event.isCancelled()) {
+ if(event.getTarget() == null) {
+ d = null;
+ } else {
+ d = ((CraftEntity) event.getTarget()).getHandle();
+ }
+ }
+ // CraftBukkit end
}
return true;
} else {
diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java
index f22ea2f0..18e768ec 100644
--- a/src/main/java/net/minecraft/server/EntityPigZombie.java
+++ b/src/main/java/net/minecraft/server/EntityPigZombie.java
@@ -5,7 +5,10 @@ import java.util.Random;
// CraftBukkit start
import org.bukkit.craftbukkit.CraftServer;
+import org.bukkit.craftbukkit.entity.CraftEntity;
import org.bukkit.craftbukkit.entity.CraftPigZombie;
+import org.bukkit.event.entity.EntityTargetEvent;
+import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
// CraftBukkit end
public class EntityPigZombie extends EntityZombie {
@@ -82,9 +85,24 @@ public class EntityPigZombie extends EntityZombie {
}
private void g(Entity entity) {
- d = entity;
- a = 400 + W.nextInt(400);
- b = W.nextInt(40);
+ // CraftBukkit start
+ org.bukkit.entity.Entity bukkitTarget = null;
+ if(entity != null) {
+ bukkitTarget = entity.getBukkitEntity();
+ }
+ EntityTargetEvent event = new EntityTargetEvent(this.getBukkitEntity(), bukkitTarget, TargetReason.PIG_ZOMBIE_TARGET);
+ CraftServer server = ((WorldServer) this.l).getServer();
+ server.getPluginManager().callEvent(event);
+ if(!event.isCancelled()) {
+ if(event.getTarget() == null) {
+ d = null;
+ } else {
+ d = ((CraftEntity) event.getTarget()).getHandle();
+ a = 400 + W.nextInt(400);
+ b = W.nextInt(40);
+ }
+ }
+ // CraftBukkit end
}
protected String e() {
diff --git a/src/main/java/net/minecraft/server/EntitySpider.java b/src/main/java/net/minecraft/server/EntitySpider.java
index 1d1c746c..77bd7eb4 100644
--- a/src/main/java/net/minecraft/server/EntitySpider.java
+++ b/src/main/java/net/minecraft/server/EntitySpider.java
@@ -4,7 +4,10 @@ import java.util.Random;
// CraftBukkit start
import org.bukkit.craftbukkit.CraftServer;
+import org.bukkit.craftbukkit.entity.CraftEntity;
import org.bukkit.craftbukkit.entity.CraftSpider;
+import org.bukkit.event.entity.EntityTargetEvent;
+import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
// CraftBukkit stop
public class EntitySpider extends EntityMobs {
@@ -52,8 +55,19 @@ public class EntitySpider extends EntityMobs {
float f2 = b(1.0F);
if (f2 > 0.5F && W.nextInt(100) == 0) {
- this.d = null;
- return;
+ // CraftBukkit start
+ EntityTargetEvent event = new EntityTargetEvent(this.getBukkitEntity(), null, TargetReason.FORGOT_TARGET);
+ CraftServer server = ((WorldServer) this.l).getServer();
+ server.getPluginManager().callEvent(event);
+ if(!event.isCancelled()) {
+ if(event.getTarget() == null) {
+ this.d = null;
+ } else {
+ this.d = ((CraftEntity) event.getTarget()).getHandle();
+ }
+ return;
+ }
+ // CraftBukkit end
}
if (f1 > 2.0F && f1 < 6F && W.nextInt(10) == 0) {
if (A) {