--- ../src-base/minecraft/net/minecraft/entity/monster/EntityEnderman.java
+++ ../src-work/minecraft/net/minecraft/entity/monster/EntityEnderman.java
@@ -204,12 +204,14 @@
 
     protected boolean func_70825_j(double p_70825_1_, double p_70825_3_, double p_70825_5_)
     {
+        net.minecraftforge.event.entity.living.EnderTeleportEvent event = new net.minecraftforge.event.entity.living.EnderTeleportEvent(this, p_70825_1_, p_70825_3_, p_70825_5_, 0);
+        if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) return false;
         double d3 = this.field_70165_t;
         double d4 = this.field_70163_u;
         double d5 = this.field_70161_v;
-        this.field_70165_t = p_70825_1_;
-        this.field_70163_u = p_70825_3_;
-        this.field_70161_v = p_70825_5_;
+        this.field_70165_t = event.targetX;
+        this.field_70163_u = event.targetY;
+        this.field_70161_v = event.targetZ;
         boolean flag = false;
         BlockPos blockpos = new BlockPos(this.field_70165_t, this.field_70163_u, this.field_70161_v);
 
@@ -565,4 +567,16 @@
             }
         }
     }
+
+    /*===================================== Forge Start ==============================*/
+    public static void setCarriable(Block block, boolean canCarry)
+    {
+        if (canCarry) field_70827_d.add(block);
+        else          field_70827_d.remove(block);
+    }
+    public static boolean getCarriable(Block block)
+    {
+        return field_70827_d.contains(block);
+    }
+    /*===================================== Forge End ==============================*/
 }
