diff --git a/src/main/java/net/minecraft/server/ItemBlock.java b/src/main/java/net/minecraft/server/ItemBlock.java
index f7da7c163d..1e45482f66 100644
--- a/src/main/java/net/minecraft/server/ItemBlock.java
+++ b/src/main/java/net/minecraft/server/ItemBlock.java
@@ -66,7 +66,7 @@ public class ItemBlock extends Item {
             Block block = Block.m[a];
 
             // This executes the placement of the block
-            if (world.e(i, j, k, a)) {
+            if (world.b(i, j, k, a)) {
                 CraftBlock placedBlock = (CraftBlock) blockClicked.getFace(faceClicked) ;
                 CraftItemStack itemInHand = new CraftItemStack(itemstack);
                 CraftPlayer thePlayer = new CraftPlayer(((WorldServer) world).getServer(), (EntityPlayerMP) entityplayer);
@@ -82,14 +82,18 @@ public class ItemBlock extends Item {
                 if (bpe.isCancelled() || !bpe.canBuild()) {
                     // CraftBukkit Undo!
 
-                    // Specialcase iceblocks, replace with 'glass' first (so it doesn't explode into water)
                     if (this.a == 79) {
+                        // Ice will explode if we set straight to 0
                         world.b(i, j, k, 20);
+                    } else if ((this.a == 44) && (world.a(i, j - 1, k) == 43) && (world.a(i, j, k) == 0)) {
+                        // Half steps automatically set the block below to a double
+                        world.b(i, j - 1, k, 44);
                     }
+
                     world.b(i, j, k, oldMaterial);
                     world.d(i, j, k, oldData);
                 } else {
-                    world.b(i, j, k, a, a(itemstack.h()));
+                    world.c(i, j, k, a(itemstack.h()));
 
                     Block.m[a].c(world, i, j, k, l);
                     Block.m[a].a(world, i, j, k, ((EntityLiving) (entityplayer)));