 +        }
 +        else if (this instanceof BlockSnow)
 +        {
++            IBlockState state = this.func_176221_a(base_state, world, pos);
 +            return ((Integer)state.func_177229_b(BlockSnow.field_176315_a)) >= 8;
 +        }
 +        else if (this instanceof BlockHopper && side == EnumFacing.UP)

+        if (base_state.func_185896_q() && side == EnumFacing.UP) // Short circuit to vanilla function if its true
+            return true;
+
+        IBlockState state = this.func_176221_a(base_state, world, pos);
+
+        if (this instanceof BlockSlab)
+        {
+            return base_state.func_185913_b()
+                  || (state.func_177229_b(BlockSlab.field_176554_a) == BlockSlab.EnumBlockHalf.TOP    && side == EnumFacing.UP  )
+                  || (state.func_177229_b(BlockSlab.field_176554_a) == BlockSlab.EnumBlockHalf.BOTTOM && side == EnumFacing.DOWN);

+        {
+            return true;
+        }
+        return isNormalCube(base_state, world, pos);
+    }
+
+    /**
