--- ../work/decompile-8eb82bde//net/minecraft/server/EntityEnderman.java	2014-11-28 17:43:43.085707435 +0000
+++ src/main/java/net/minecraft/server/EntityEnderman.java	2014-11-28 17:38:21.000000000 +0000
@@ -4,6 +4,12 @@
 import java.util.Set;
 import java.util.UUID;
 
+// CraftBukkit start
+import org.bukkit.Location;
+import org.bukkit.craftbukkit.event.CraftEventFactory;
+import org.bukkit.event.entity.EntityTeleportEvent;
+// CraftBukkit end
+
 public class EntityEnderman extends EntityMonster {
 
     private static final UUID b = UUID.fromString("020E0DFB-87AE-4653-9556-831010E291A0");
@@ -165,7 +171,17 @@
             }
 
             if (flag1) {
-                super.enderTeleportTo(this.locX, this.locY, this.locZ);
+                // CraftBukkit start - Teleport event
+                // super.enderTeleportTo(this.locX, this.locY, this.locZ);
+                EntityTeleportEvent teleport = new EntityTeleportEvent(this.getBukkitEntity(), new Location(this.world.getWorld(), d3, d4, d5), new Location(this.world.getWorld(), this.locX, this.locY, this.locZ));
+                this.world.getServer().getPluginManager().callEvent(teleport);
+                if (teleport.isCancelled()) {
+                    return false;
+                }
+
+                Location to = teleport.getTo();
+                this.enderTeleportTo(to.getX(), to.getY(), to.getZ());
+                // CraftBukkit end
                 if (this.world.getCubes(this, this.getBoundingBox()).isEmpty() && !this.world.containsLiquid(this.getBoundingBox())) {
                     flag = true;
                 }