 -        tessellator = Tessellator.instance;
 -    }
  }
+diff -u -r --strip-trailing-cr ../src_base/minecraft_server/net/minecraft/src/BlockButton.java ../src_work/minecraft_server/net/minecraft/src/BlockButton.java
+--- ../src_base/minecraft_server/net/minecraft/src/BlockButton.java	2011-08-30 02:13:12.000000000 -0400
++++ ../src_work/minecraft_server/net/minecraft/src/BlockButton.java	2011-08-30 02:13:13.000000000 -0400
+@@ -41,36 +41,36 @@
+ 
+     public boolean canPlaceBlockOnSide(World world, int i, int j, int k, int l)
+     {
+-        if(l == 2 && world.isBlockNormalCube(i, j, k + 1))
++        if(l == 2 && world.isBlockSolidOnSide(i, j, k + 1,2))
+         {
+             return true;
+         }
+-        if(l == 3 && world.isBlockNormalCube(i, j, k - 1))
++        if(l == 3 && world.isBlockSolidOnSide(i, j, k - 1,3))
+         {
+             return true;
+         }
+-        if(l == 4 && world.isBlockNormalCube(i + 1, j, k))
++        if(l == 4 && world.isBlockSolidOnSide(i + 1, j, k,4))
+         {
+             return true;
+         }
+-        return l == 5 && world.isBlockNormalCube(i - 1, j, k);
++        return l == 5 && world.isBlockSolidOnSide(i - 1, j, k,5);
+     }
+ 
+     public boolean canPlaceBlockAt(World world, int i, int j, int k)
+     {
+-        if(world.isBlockNormalCube(i - 1, j, k))
++        if(world.isBlockSolidOnSide(i - 1, j, k,5))
+         {
+             return true;
+         }
+-        if(world.isBlockNormalCube(i + 1, j, k))
++        if(world.isBlockSolidOnSide(i + 1, j, k,4))
+         {
+             return true;
+         }
+-        if(world.isBlockNormalCube(i, j, k - 1))
++        if(world.isBlockSolidOnSide(i, j, k - 1,3))
+         {
+             return true;
+         }
+-        return world.isBlockNormalCube(i, j, k + 1);
++        return world.isBlockSolidOnSide(i, j, k + 1,2);
+     }
+ 
+     public void onBlockPlaced(World world, int i, int j, int k, int l)
+@@ -78,19 +78,19 @@
+         int i1 = world.getBlockMetadata(i, j, k);
+         int j1 = i1 & 8;
+         i1 &= 7;
+-        if(l == 2 && world.isBlockNormalCube(i, j, k + 1))
++        if(l == 2 && world.isBlockSolidOnSide(i, j, k + 1,2))
+         {
+             i1 = 4;
+         } else
+-        if(l == 3 && world.isBlockNormalCube(i, j, k - 1))
++        if(l == 3 && world.isBlockSolidOnSide(i, j, k - 1,3))
+         {
+             i1 = 3;
+         } else
+-        if(l == 4 && world.isBlockNormalCube(i + 1, j, k))
++        if(l == 4 && world.isBlockSolidOnSide(i + 1, j, k,4))
+         {
+             i1 = 2;
+         } else
+-        if(l == 5 && world.isBlockNormalCube(i - 1, j, k))
++        if(l == 5 && world.isBlockSolidOnSide(i - 1, j, k,5))
+         {
+             i1 = 1;
+         } else
+@@ -102,19 +102,19 @@
+ 
+     private int getOrientation(World world, int i, int j, int k)
+     {
+-        if(world.isBlockNormalCube(i - 1, j, k))
++        if(world.isBlockSolidOnSide(i - 1, j, k,5))
+         {
+             return 1;
+         }
+-        if(world.isBlockNormalCube(i + 1, j, k))
++        if(world.isBlockSolidOnSide(i + 1, j, k,4))
+         {
+             return 2;
+         }
+-        if(world.isBlockNormalCube(i, j, k - 1))
++        if(world.isBlockSolidOnSide(i, j, k - 1,3))
+         {
+             return 3;
+         }
+-        return !world.isBlockNormalCube(i, j, k + 1) ? 1 : 4;
++        return !world.isBlockSolidOnSide(i, j, k + 1,2) ? 1 : 4;
+     }
+ 
+     public void onNeighborBlockChange(World world, int i, int j, int k, int l)
+@@ -123,19 +123,19 @@
+         {
+             int i1 = world.getBlockMetadata(i, j, k) & 7;
+             boolean flag = false;
+-            if(!world.isBlockNormalCube(i - 1, j, k) && i1 == 1)
++            if(!world.isBlockSolidOnSide(i - 1, j, k,5) && i1 == 1)
+             {
+                 flag = true;
+             }
+-            if(!world.isBlockNormalCube(i + 1, j, k) && i1 == 2)
++            if(!world.isBlockSolidOnSide(i + 1, j, k,4) && i1 == 2)
+             {
+                 flag = true;
+             }
+-            if(!world.isBlockNormalCube(i, j, k - 1) && i1 == 3)
++            if(!world.isBlockSolidOnSide(i, j, k - 1,3) && i1 == 3)
+             {
+                 flag = true;
+             }
+-            if(!world.isBlockNormalCube(i, j, k + 1) && i1 == 4)
++            if(!world.isBlockSolidOnSide(i, j, k + 1,2) && i1 == 4)
+             {
+                 flag = true;
+             }
+diff -u -r --strip-trailing-cr ../src_base/minecraft_server/net/minecraft/src/BlockChest.java ../src_work/minecraft_server/net/minecraft/src/BlockChest.java
+--- ../src_base/minecraft_server/net/minecraft/src/BlockChest.java	2011-08-30 02:13:12.000000000 -0400
++++ ../src_work/minecraft_server/net/minecraft/src/BlockChest.java	2011-08-30 02:13:13.000000000 -0400
+@@ -140,23 +140,23 @@
+     public boolean blockActivated(World world, int i, int j, int k, EntityPlayer entityplayer)
+     {
+         Object obj = (TileEntityChest)world.getBlockTileEntity(i, j, k);
+-        if(world.isBlockNormalCube(i, j + 1, k))
++        if(world.isBlockSolidOnSide(i, j + 1, k,0))
+         {
+             return true;
+         }
+-        if(world.getBlockId(i - 1, j, k) == blockID && world.isBlockNormalCube(i - 1, j + 1, k))
++        if(world.getBlockId(i - 1, j, k) == blockID && world.isBlockSolidOnSide(i - 1, j + 1, k,0))
+         {
+             return true;
+         }
+-        if(world.getBlockId(i + 1, j, k) == blockID && world.isBlockNormalCube(i + 1, j + 1, k))
++        if(world.getBlockId(i + 1, j, k) == blockID && world.isBlockSolidOnSide(i + 1, j + 1, k,0))
+         {
+             return true;
+         }
+-        if(world.getBlockId(i, j, k - 1) == blockID && world.isBlockNormalCube(i, j + 1, k - 1))
++        if(world.getBlockId(i, j, k - 1) == blockID && world.isBlockSolidOnSide(i, j + 1, k - 1,0))
+         {
+             return true;
+         }
+-        if(world.getBlockId(i, j, k + 1) == blockID && world.isBlockNormalCube(i, j + 1, k + 1))
++        if(world.getBlockId(i, j, k + 1) == blockID && world.isBlockSolidOnSide(i, j + 1, k + 1,0))
+         {
+             return true;
+         }
+diff -u -r --strip-trailing-cr ../src_base/minecraft_server/net/minecraft/src/BlockDoor.java ../src_work/minecraft_server/net/minecraft/src/BlockDoor.java
+--- ../src_base/minecraft_server/net/minecraft/src/BlockDoor.java	2011-08-30 02:13:12.000000000 -0400
++++ ../src_work/minecraft_server/net/minecraft/src/BlockDoor.java	2011-08-30 02:13:13.000000000 -0400
+@@ -167,7 +167,7 @@
+                 world.setBlockWithNotify(i, j, k, 0);
+                 flag = true;
+             }
+-            if(!world.isBlockNormalCube(i, j - 1, k))
++            if(!world.isBlockSolidOnSide(i, j - 1, k,1))
+             {
+                 world.setBlockWithNotify(i, j, k, 0);
+                 flag = true;
+@@ -230,7 +230,7 @@
+             return false;
+         } else
+         {
+-            return world.isBlockNormalCube(i, j - 1, k) && super.canPlaceBlockAt(world, i, j, k) && super.canPlaceBlockAt(world, i, j + 1, k);
++            return world.isBlockSolidOnSide(i, j - 1, k,1) && super.canPlaceBlockAt(world, i, j, k) && super.canPlaceBlockAt(world, i, j + 1, k);
+         }
+     }
+ 
 diff -u -r --strip-trailing-cr ../src_base/minecraft_server/net/minecraft/src/Block.java ../src_work/minecraft_server/net/minecraft/src/Block.java
---- ../src_base/minecraft_server/net/minecraft/src/Block.java	2011-08-27 13:36:28.235830000 +0200
-+++ ../src_work/minecraft_server/net/minecraft/src/Block.java	2011-08-27 13:38:17.426075700 +0200
+--- ../src_base/minecraft_server/net/minecraft/src/Block.java	2011-08-30 02:13:12.000000000 -0400
++++ ../src_work/minecraft_server/net/minecraft/src/Block.java	2011-08-30 02:13:13.000000000 -0400
 @@ -3,6 +3,7 @@
  // Decompiler options: packimports(3) braces deadcode 
  

             GLAllocation.generateTextureNames(singleIntBuffer);
             int i = singleIntBuffer.get(0);
diff -u -r --strip-trailing-cr ../src_base/minecraft/net/minecraft/src/RenderGlobal.java ../src_work/minecraft/net/minecraft/src/RenderGlobal.java
--- ../src_base/minecraft/net/minecraft/src/RenderGlobal.java	2011-08-27 13:36:16.215142900 +0200
+++ ../src_work/minecraft/net/minecraft/src/RenderGlobal.java	2011-08-27 13:38:17.374072800 +0200
@@ -1558,8 +1558,8 @@
     }
 

             flag = true;
         }
diff -u -r --strip-trailing-cr ../src_base/minecraft/net/minecraft/src/BlockRail.java ../src_work/minecraft/net/minecraft/src/BlockRail.java
--- ../src_base/minecraft/net/minecraft/src/BlockRail.java	2011-08-30 02:13:11.000000000 -0400
+++ ../src_work/minecraft/net/minecraft/src/BlockRail.java	2011-08-30 02:13:13.000000000 -0400
@@ -16,12 +16,12 @@
     public static final boolean isRailBlockAt(World world, int i, int j, int k)
     {
