--- ../src_base/common/net/minecraft/src/BlockMushroom.java
+++ ../src_work/common/net/minecraft/src/BlockMushroom.java
@@ -1,6 +1,8 @@
 package net.minecraft.src;
 
 import java.util.Random;
+
+import net.minecraftforge.common.ForgeDirection;
 
 public class BlockMushroom extends BlockFlower
 {
@@ -94,7 +96,7 @@
         if (par3 >= 0 && par3 < 256)
         {
             int var5 = par1World.getBlockId(par2, par3 - 1, par4);
-            return var5 == Block.mycelium.blockID || par1World.getFullBlockLightValue(par2, par3, par4) < 13 && this.canThisPlantGrowOnThisBlockID(var5);
+            return var5 == Block.mycelium.blockID || par1World.getFullBlockLightValue(par2, par3, par4) < 13 && canSustainPlant(par1World, par2, par3 - 1, par4, ForgeDirection.UP, this);
         }
         else
         {

--- ../src_base/common/net/minecraft/src/BlockMushroom.java
+++ ../src_work/common/net/minecraft/src/BlockMushroom.java
@@ -1,6 +1,8 @@
 package net.minecraft.src;
 
 import java.util.Random;
+
+import net.minecraftforge.common.ForgeDirection;
 
 public class BlockMushroom extends BlockFlower
 {
@@ -94,7 +96,9 @@
         if (par3 >= 0 && par3 < 256)
         {
             int var5 = par1World.getBlockId(par2, par3 - 1, par4);
-            return var5 == Block.mycelium.blockID || par1World.getFullBlockLightValue(par2, par3, par4) < 13 && this.canThisPlantGrowOnThisBlockID(var5);
+            Block soil = Block.blocksList[var5];
+            return (var5 == Block.mycelium.blockID || par1World.getFullBlockLightValue(par2, par3, par4) < 13) &&
+                   (soil != null && soil.canSustainPlant(par1World, par2, par3 - 1, par4, ForgeDirection.UP, this));
         }
         else
         {

Fix issue where mushrooms would not check the proper soil block.
Fix issue where mushrooms would not check the proper soil block.
