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

+        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);

+        }
+        else if (this instanceof BlockStairs)
+        {
+            IBlockState state = this.func_176221_a(base_state, world, pos);
+            boolean flipped = state.func_177229_b(BlockStairs.field_176308_b) == BlockStairs.EnumHalf.TOP;
+            BlockStairs.EnumShape shape = (BlockStairs.EnumShape)state.func_177229_b(BlockStairs.field_176310_M);
+            EnumFacing facing = (EnumFacing)state.func_177229_b(BlockStairs.field_176309_a);
