              }
              else
              {
+@@ -467,5 +476,23 @@
+         carriableBlocks[Block.getIdFromBlock(Blocks.pumpkin)] = true;
+         carriableBlocks[Block.getIdFromBlock(Blocks.melon_block)] = true;
+         carriableBlocks[Block.getIdFromBlock(Blocks.mycelium)] = true;
++        for (int x = 0; x < carriableBlocks.length; x++)
++        {
++            if (carriableBlocks[x]) setCarriable(Block.getBlockById(x), true);
++        }
+     }
++
++    /*===================================== Forge Start ==============================*/
++    private static IdentityHashMap<Block, Boolean> carriable;
++    public static void setCarriable(Block block, boolean canCarry)
++    {
++        if (carriable == null) carriable = new IdentityHashMap(4096);
++        carriable.put(block, canCarry);
++    }
++    public static boolean getCarriable(Block block)
++    {
++        Boolean ret = carriable.get(block);
++        return ret != null ? ret : false;
++    }
++    /*===================================== Forge End ==============================*/
+ }

         boolean flag = false;
         int i = MathHelper.floor_double(this.posX);
         int j = MathHelper.floor_double(this.posY);
@@ -432,7 +438,7 @@
                     }
                 }
 

--- ../src-base/minecraft/net/minecraft/entity/monster/EntityEnderman.java
+++ ../src-work/minecraft/net/minecraft/entity/monster/EntityEnderman.java
@@ -1,6 +1,8 @@
 package net.minecraft.entity.monster;
 
+import java.util.IdentityHashMap;
 import java.util.UUID;
+import com.google.common.collect.Maps;
 import net.minecraft.block.Block;
 import net.minecraft.block.material.Material;
 import net.minecraft.entity.Entity;
@@ -19,11 +21,14 @@
 import net.minecraft.util.MathHelper;
 import net.minecraft.util.Vec3;
 import net.minecraft.world.World;
