diff --git a/build.gradle.kts b/build.gradle.kts
index 486d5f862..333ceca85 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -64,6 +64,8 @@ task("jarClient", ShadowJar::class) {
 
     from(sourceSets["main"].output.classesDirs)
     from(sourceSets["main"].resources)
+    exclude("fabric.mod.json")
+
     archiveFileName.set("bta-client.jar")
     manifest {
         attributes["Main-Class"] = "net.minecraft.client.Minecraft"
@@ -77,6 +79,8 @@ task("jarServer", ShadowJar::class) {
     dependsOn(tasks["generateJava"], tasks["runRecipeGenerator"])
 
     from(sourceSets["main"].output.classesDirs)
+    exclude("fabric.mod.json")
+
     archiveFileName.set("bta-server.jar")
     transform(Log4j2PluginsCacheFileTransformer::class.java)
     manifest {
diff --git a/src/main/java/net/minecraft/core/block/AlgaeBlock.java b/src/main/java/net/minecraft/core/block/AlgaeBlock.java
index c4eb4b712..8d1a21c09 100644
--- a/src/main/java/net/minecraft/core/block/AlgaeBlock.java
+++ b/src/main/java/net/minecraft/core/block/AlgaeBlock.java
@@ -70,7 +70,7 @@ public class AlgaeBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/BaseLeavesBlock.java b/src/main/java/net/minecraft/core/block/BaseLeavesBlock.java
index eaa111485..44fe14a60 100644
--- a/src/main/java/net/minecraft/core/block/BaseLeavesBlock.java
+++ b/src/main/java/net/minecraft/core/block/BaseLeavesBlock.java
@@ -36,7 +36,7 @@ public abstract class BaseLeavesBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
 
         Season season = world.getSeasonManager().getCurrentSeason();
diff --git a/src/main/java/net/minecraft/core/block/BasketBlock.java b/src/main/java/net/minecraft/core/block/BasketBlock.java
index cad26398e..9c8e6c2da 100644
--- a/src/main/java/net/minecraft/core/block/BasketBlock.java
+++ b/src/main/java/net/minecraft/core/block/BasketBlock.java
@@ -81,7 +81,7 @@ public class BasketBlock extends EntityBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         return new ItemStack[] { new ItemStack(Items.BASKET) };
     }
diff --git a/src/main/java/net/minecraft/core/block/BedBlock.java b/src/main/java/net/minecraft/core/block/BedBlock.java
index 47deb8e57..0eb62603d 100644
--- a/src/main/java/net/minecraft/core/block/BedBlock.java
+++ b/src/main/java/net/minecraft/core/block/BedBlock.java
@@ -113,7 +113,7 @@ public class BedBlock extends Block {
 	}
 
 	@Override
-	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
 	{
 		return new ItemStack[] { new ItemStack(Items.BED) };
 	}
diff --git a/src/main/java/net/minecraft/core/block/BlastFurnaceBlock.java b/src/main/java/net/minecraft/core/block/BlastFurnaceBlock.java
index 2e3f06200..573109ede 100644
--- a/src/main/java/net/minecraft/core/block/BlastFurnaceBlock.java
+++ b/src/main/java/net/minecraft/core/block/BlastFurnaceBlock.java
@@ -29,7 +29,7 @@ public class BlastFurnaceBlock extends FurnaceBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/Block.java b/src/main/java/net/minecraft/core/block/Block.java
index c1172e626..c019e3bf9 100644
--- a/src/main/java/net/minecraft/core/block/Block.java
+++ b/src/main/java/net/minecraft/core/block/Block.java
@@ -246,7 +246,15 @@ public class Block
         return blockHardness;
     }
 
+    /**
+     * Make sure if this gets overridden in a block that {@link Block#getBreakResult(World, EnumDropCause, int, BlockEntity)} also has a valid method since {@link net.minecraft.core.entity.FallingBlockEntity FallingBlockEntity} uses it!
+     */
     public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    {
+        return getBreakResult(world, dropCause, meta, blockEntity);
+    }
+
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         if (dropCause != EnumDropCause.IMPROPER_TOOL)
         {
diff --git a/src/main/java/net/minecraft/core/block/BrazierBlock.java b/src/main/java/net/minecraft/core/block/BrazierBlock.java
index 17caff351..998713d28 100644
--- a/src/main/java/net/minecraft/core/block/BrazierBlock.java
+++ b/src/main/java/net/minecraft/core/block/BrazierBlock.java
@@ -36,7 +36,7 @@ public class BrazierBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity) {
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity) {
         return new ItemStack[] { new ItemStack(Blocks.BRAZIER_INACTIVE, 1) };
     }
 
diff --git a/src/main/java/net/minecraft/core/block/CacaoLeavesBlock.java b/src/main/java/net/minecraft/core/block/CacaoLeavesBlock.java
index 852753b7d..8d3d0e2a1 100644
--- a/src/main/java/net/minecraft/core/block/CacaoLeavesBlock.java
+++ b/src/main/java/net/minecraft/core/block/CacaoLeavesBlock.java
@@ -34,7 +34,7 @@ public class CacaoLeavesBlock extends BaseLeavesBlock implements IBonemealable {
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         int growthRate = (meta & 0xF0) >> 4;
         if (dropCause == EnumDropCause.PICK_BLOCK || dropCause == EnumDropCause.SILK_TOUCH) return new ItemStack[] { new ItemStack(this) };
@@ -44,7 +44,7 @@ public class CacaoLeavesBlock extends BaseLeavesBlock implements IBonemealable {
             return new ItemStack[] { new ItemStack(Items.DYE, MathHelper.floor((double) growthRate / 2), 3)};
         }
 
-        return super.getBreakResult(world, dropCause, x, y, z, meta, blockEntity);
+        return super.getBreakResult(world, dropCause, meta, blockEntity);
     }
 
     @Override
diff --git a/src/main/java/net/minecraft/core/block/CandleBlock.java b/src/main/java/net/minecraft/core/block/CandleBlock.java
index c748c1c70..9d4cb53a1 100644
--- a/src/main/java/net/minecraft/core/block/CandleBlock.java
+++ b/src/main/java/net/minecraft/core/block/CandleBlock.java
@@ -61,7 +61,7 @@ public class CandleBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         return new ItemStack[] { null };//new ItemStack(Item.candleSoulwax) };
     }
diff --git a/src/main/java/net/minecraft/core/block/ChestBlockPainted.java b/src/main/java/net/minecraft/core/block/ChestBlockPainted.java
index c2b5b78e2..cf08e3e1d 100644
--- a/src/main/java/net/minecraft/core/block/ChestBlockPainted.java
+++ b/src/main/java/net/minecraft/core/block/ChestBlockPainted.java
@@ -21,7 +21,7 @@ public class ChestBlockPainted extends ChestBlock implements IPainted {
 	}
 
 	@Override
-	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
 	{
 		return new ItemStack[] { new ItemStack(this, 1, meta & colorBits) };
 	}
diff --git a/src/main/java/net/minecraft/core/block/ClayBlock.java b/src/main/java/net/minecraft/core/block/ClayBlock.java
index 75325cf9d..b5bab4aae 100644
--- a/src/main/java/net/minecraft/core/block/ClayBlock.java
+++ b/src/main/java/net/minecraft/core/block/ClayBlock.java
@@ -21,7 +21,7 @@ public class ClayBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/CoalOreBlock.java b/src/main/java/net/minecraft/core/block/CoalOreBlock.java
index e0d3bf7d3..cc31f1568 100644
--- a/src/main/java/net/minecraft/core/block/CoalOreBlock.java
+++ b/src/main/java/net/minecraft/core/block/CoalOreBlock.java
@@ -23,7 +23,7 @@ public class CoalOreBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/CobwebBlock.java b/src/main/java/net/minecraft/core/block/CobwebBlock.java
index 0a991ac16..cebcc4c84 100644
--- a/src/main/java/net/minecraft/core/block/CobwebBlock.java
+++ b/src/main/java/net/minecraft/core/block/CobwebBlock.java
@@ -30,7 +30,7 @@ public class CobwebBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/CropsPumpkinBlock.java b/src/main/java/net/minecraft/core/block/CropsPumpkinBlock.java
index 1102c2373..2768a0348 100644
--- a/src/main/java/net/minecraft/core/block/CropsPumpkinBlock.java
+++ b/src/main/java/net/minecraft/core/block/CropsPumpkinBlock.java
@@ -111,7 +111,7 @@ public class CropsPumpkinBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity) {
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity) {
         return new ItemStack[] { new ItemStack(Items.SEEDS_PUMPKIN, 1)};
     }
 
diff --git a/src/main/java/net/minecraft/core/block/CropsWheatBlock.java b/src/main/java/net/minecraft/core/block/CropsWheatBlock.java
index 6fa8943f3..d6c56892b 100644
--- a/src/main/java/net/minecraft/core/block/CropsWheatBlock.java
+++ b/src/main/java/net/minecraft/core/block/CropsWheatBlock.java
@@ -121,7 +121,7 @@ public class CropsWheatBlock extends FlowerBlock implements IBonemealable
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         if (meta != 7)
         {
diff --git a/src/main/java/net/minecraft/core/block/DeadBushBlock.java b/src/main/java/net/minecraft/core/block/DeadBushBlock.java
index d8d4431d9..b22db93e1 100644
--- a/src/main/java/net/minecraft/core/block/DeadBushBlock.java
+++ b/src/main/java/net/minecraft/core/block/DeadBushBlock.java
@@ -26,7 +26,7 @@ public class DeadBushBlock extends FlowerBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         int quantity = world.rand.nextInt(3);
 
diff --git a/src/main/java/net/minecraft/core/block/DiamondOreBlock.java b/src/main/java/net/minecraft/core/block/DiamondOreBlock.java
index a36e0c4f4..163ca568f 100644
--- a/src/main/java/net/minecraft/core/block/DiamondOreBlock.java
+++ b/src/main/java/net/minecraft/core/block/DiamondOreBlock.java
@@ -23,7 +23,7 @@ public class DiamondOreBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/DirtPathBlock.java b/src/main/java/net/minecraft/core/block/DirtPathBlock.java
index 735ee53f4..5c0f3fbd1 100644
--- a/src/main/java/net/minecraft/core/block/DirtPathBlock.java
+++ b/src/main/java/net/minecraft/core/block/DirtPathBlock.java
@@ -53,7 +53,7 @@ public class DirtPathBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/DoorBlock.java b/src/main/java/net/minecraft/core/block/DoorBlock.java
index fbf3e3196..0a6469005 100644
--- a/src/main/java/net/minecraft/core/block/DoorBlock.java
+++ b/src/main/java/net/minecraft/core/block/DoorBlock.java
@@ -260,7 +260,7 @@ public class DoorBlock extends Block implements IPaintable
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         if (droppedItem == null) return null;
         if (requireTool && dropCause != EnumDropCause.IMPROPER_TOOL)
diff --git a/src/main/java/net/minecraft/core/block/DoorPaintedBlock.java b/src/main/java/net/minecraft/core/block/DoorPaintedBlock.java
index f857b9723..59f2b93c6 100644
--- a/src/main/java/net/minecraft/core/block/DoorPaintedBlock.java
+++ b/src/main/java/net/minecraft/core/block/DoorPaintedBlock.java
@@ -13,7 +13,7 @@ public class DoorPaintedBlock extends DoorBlock implements IPainted {
         super(key, namespaceId, id, material, isTop, false, null);
     }
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         return new ItemStack[] { new ItemStack(Items.DOOR_OAK_PAINTED, 1, 15 - (meta >> 4 & 0xF)) };
     }
diff --git a/src/main/java/net/minecraft/core/block/EdibleBlock.java b/src/main/java/net/minecraft/core/block/EdibleBlock.java
index 4063780e4..851f04165 100644
--- a/src/main/java/net/minecraft/core/block/EdibleBlock.java
+++ b/src/main/java/net/minecraft/core/block/EdibleBlock.java
@@ -28,7 +28,7 @@ public abstract class EdibleBlock extends Block {
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         if (dropCause == EnumDropCause.PICK_BLOCK || meta == 0)
         {
diff --git a/src/main/java/net/minecraft/core/block/FarmlandBlock.java b/src/main/java/net/minecraft/core/block/FarmlandBlock.java
index 1d1b6243c..04fdfdcbd 100644
--- a/src/main/java/net/minecraft/core/block/FarmlandBlock.java
+++ b/src/main/java/net/minecraft/core/block/FarmlandBlock.java
@@ -61,7 +61,7 @@ public class FarmlandBlock extends Block implements IBonemealable
 	}
 
 	@Override
-	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
 	{
 		switch (dropCause)
 		{
@@ -69,7 +69,7 @@ public class FarmlandBlock extends Block implements IBonemealable
 			case PICK_BLOCK:
 				return new ItemStack[] { new ItemStack(this) };
 			default:
-				if(isWet(world.getBlockMetadata(x, y, z))){
+				if(isWet(meta)){
 					return new ItemStack[] { new ItemStack(Blocks.MUD) };
 				} else {
 					return new ItemStack[] { new ItemStack(Blocks.DIRT) };
diff --git a/src/main/java/net/minecraft/core/block/FireBlock.java b/src/main/java/net/minecraft/core/block/FireBlock.java
index 003eb7883..22f11aecf 100644
--- a/src/main/java/net/minecraft/core/block/FireBlock.java
+++ b/src/main/java/net/minecraft/core/block/FireBlock.java
@@ -32,7 +32,7 @@ public class FireBlock extends Block {
 	}
 
 	@Override
-	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
 	{
 		return null;
 	}
diff --git a/src/main/java/net/minecraft/core/block/FireflyLanternBlock.java b/src/main/java/net/minecraft/core/block/FireflyLanternBlock.java
index 70180bbf6..173a92ab7 100644
--- a/src/main/java/net/minecraft/core/block/FireflyLanternBlock.java
+++ b/src/main/java/net/minecraft/core/block/FireflyLanternBlock.java
@@ -128,7 +128,7 @@ public class FireflyLanternBlock extends Block{
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/FlagBlock.java b/src/main/java/net/minecraft/core/block/FlagBlock.java
index 0fc419cc5..4e1fc375d 100644
--- a/src/main/java/net/minecraft/core/block/FlagBlock.java
+++ b/src/main/java/net/minecraft/core/block/FlagBlock.java
@@ -41,7 +41,7 @@ public class FlagBlock extends EntityBlock {
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         ItemStack stack = new ItemStack(Items.FLAG);
         if (blockEntity != null)
diff --git a/src/main/java/net/minecraft/core/block/FloweringCherryLeavesBlock.java b/src/main/java/net/minecraft/core/block/FloweringCherryLeavesBlock.java
index 218ba91ac..ae7bb152f 100644
--- a/src/main/java/net/minecraft/core/block/FloweringCherryLeavesBlock.java
+++ b/src/main/java/net/minecraft/core/block/FloweringCherryLeavesBlock.java
@@ -20,7 +20,7 @@ public class FloweringCherryLeavesBlock extends CherryLeavesBlock implements IBo
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         int growthRate = getGrowthRate(meta);
         if (dropCause == EnumDropCause.PICK_BLOCK || dropCause == EnumDropCause.SILK_TOUCH) return new ItemStack[] { new ItemStack(this) };
diff --git a/src/main/java/net/minecraft/core/block/FluidBlock.java b/src/main/java/net/minecraft/core/block/FluidBlock.java
index 45924b8bd..500fd3601 100644
--- a/src/main/java/net/minecraft/core/block/FluidBlock.java
+++ b/src/main/java/net/minecraft/core/block/FluidBlock.java
@@ -302,7 +302,7 @@ public abstract class FluidBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         return null;
     }
diff --git a/src/main/java/net/minecraft/core/block/FurnaceBlock.java b/src/main/java/net/minecraft/core/block/FurnaceBlock.java
index c7a414eb4..a08e5aeeb 100644
--- a/src/main/java/net/minecraft/core/block/FurnaceBlock.java
+++ b/src/main/java/net/minecraft/core/block/FurnaceBlock.java
@@ -39,7 +39,7 @@ public class FurnaceBlock extends RotatableEntityBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/GlassBlock.java b/src/main/java/net/minecraft/core/block/GlassBlock.java
index a141ad72f..75b62585c 100644
--- a/src/main/java/net/minecraft/core/block/GlassBlock.java
+++ b/src/main/java/net/minecraft/core/block/GlassBlock.java
@@ -18,7 +18,7 @@ public class GlassBlock extends TransparentBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/GlowStoneBlock.java b/src/main/java/net/minecraft/core/block/GlowStoneBlock.java
index 488425e41..ecf0302ae 100644
--- a/src/main/java/net/minecraft/core/block/GlowStoneBlock.java
+++ b/src/main/java/net/minecraft/core/block/GlowStoneBlock.java
@@ -20,7 +20,7 @@ public class GlowStoneBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/GoldOreBlock.java b/src/main/java/net/minecraft/core/block/GoldOreBlock.java
index d94d39765..8464d5326 100644
--- a/src/main/java/net/minecraft/core/block/GoldOreBlock.java
+++ b/src/main/java/net/minecraft/core/block/GoldOreBlock.java
@@ -20,7 +20,7 @@ public class GoldOreBlock extends Block {
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/GrassBlock.java b/src/main/java/net/minecraft/core/block/GrassBlock.java
index 5eb3065f4..65b19040c 100644
--- a/src/main/java/net/minecraft/core/block/GrassBlock.java
+++ b/src/main/java/net/minecraft/core/block/GrassBlock.java
@@ -83,7 +83,7 @@ public class GrassBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/GravelBlock.java b/src/main/java/net/minecraft/core/block/GravelBlock.java
index 03b1421f3..8589720fe 100644
--- a/src/main/java/net/minecraft/core/block/GravelBlock.java
+++ b/src/main/java/net/minecraft/core/block/GravelBlock.java
@@ -18,7 +18,7 @@ public class GravelBlock extends SandBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/IceBlock.java b/src/main/java/net/minecraft/core/block/IceBlock.java
index 13c9c4ed7..fb8e4de98 100644
--- a/src/main/java/net/minecraft/core/block/IceBlock.java
+++ b/src/main/java/net/minecraft/core/block/IceBlock.java
@@ -31,7 +31,7 @@ public class IceBlock extends TransparentBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/IronOreBlock.java b/src/main/java/net/minecraft/core/block/IronOreBlock.java
index e46cadc8c..a9828e0d7 100644
--- a/src/main/java/net/minecraft/core/block/IronOreBlock.java
+++ b/src/main/java/net/minecraft/core/block/IronOreBlock.java
@@ -19,7 +19,7 @@ public class IronOreBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/JarBlock.java b/src/main/java/net/minecraft/core/block/JarBlock.java
index f7b2b3c77..4b66b37a5 100644
--- a/src/main/java/net/minecraft/core/block/JarBlock.java
+++ b/src/main/java/net/minecraft/core/block/JarBlock.java
@@ -105,7 +105,7 @@ public class JarBlock extends EntityBlock {
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/LampBlock.java b/src/main/java/net/minecraft/core/block/LampBlock.java
index 236df86fe..bd5d968fe 100644
--- a/src/main/java/net/minecraft/core/block/LampBlock.java
+++ b/src/main/java/net/minecraft/core/block/LampBlock.java
@@ -44,7 +44,7 @@ public class LampBlock extends Block implements IPainted {
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity) {
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity) {
         return new ItemStack[]{new ItemStack(Blocks.LAMP_IDLE, 1, meta)};
     }
 
diff --git a/src/main/java/net/minecraft/core/block/LapisOreBlock.java b/src/main/java/net/minecraft/core/block/LapisOreBlock.java
index c02b586ab..3128dd791 100644
--- a/src/main/java/net/minecraft/core/block/LapisOreBlock.java
+++ b/src/main/java/net/minecraft/core/block/LapisOreBlock.java
@@ -20,7 +20,7 @@ public class LapisOreBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/LeavesLayerBlock.java b/src/main/java/net/minecraft/core/block/LeavesLayerBlock.java
index 3bf083560..0c171535d 100644
--- a/src/main/java/net/minecraft/core/block/LeavesLayerBlock.java
+++ b/src/main/java/net/minecraft/core/block/LeavesLayerBlock.java
@@ -86,7 +86,7 @@ public class LeavesLayerBlock extends BaseLayerBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/LegacyChestBlock.java b/src/main/java/net/minecraft/core/block/LegacyChestBlock.java
index 83b7b936d..da4701aed 100644
--- a/src/main/java/net/minecraft/core/block/LegacyChestBlock.java
+++ b/src/main/java/net/minecraft/core/block/LegacyChestBlock.java
@@ -20,15 +20,12 @@ public class LegacyChestBlock extends EntityBlock {
 	}
 	
 	@Override
-	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity) {
-		if(isLegacyChest(world, x, y, z)) {
-			updateLegacyChest(world, x, y, z);
-		}
-		Block block = world.getBlock(x, y, z);
-		if(block != null) {
-			return super.getBreakResult(world, dropCause, x, y, z, meta, blockEntity);
+	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity) {
+		if (dropCause != EnumDropCause.IMPROPER_TOOL)
+		{
+			return new ItemStack[] { new ItemStack(Blocks.CHEST_PLANKS_OAK) };
 		}
-		return null;
+		else return null;
 	}
 
 	@Override
diff --git a/src/main/java/net/minecraft/core/block/MobSpawnerBlock.java b/src/main/java/net/minecraft/core/block/MobSpawnerBlock.java
index 139619975..b322e98ce 100644
--- a/src/main/java/net/minecraft/core/block/MobSpawnerBlock.java
+++ b/src/main/java/net/minecraft/core/block/MobSpawnerBlock.java
@@ -113,7 +113,7 @@ public class MobSpawnerBlock extends EntityBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         if (dropCause == EnumDropCause.SILK_TOUCH)
         {
diff --git a/src/main/java/net/minecraft/core/block/MobSpawnerDeactivatedBlock.java b/src/main/java/net/minecraft/core/block/MobSpawnerDeactivatedBlock.java
index d41842fbb..ade473707 100644
--- a/src/main/java/net/minecraft/core/block/MobSpawnerDeactivatedBlock.java
+++ b/src/main/java/net/minecraft/core/block/MobSpawnerDeactivatedBlock.java
@@ -31,7 +31,7 @@ public class MobSpawnerDeactivatedBlock extends TransparentBlock {
         return !(entity instanceof ItemEntity);
     }
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/MotionSensorBlock.java b/src/main/java/net/minecraft/core/block/MotionSensorBlock.java
index 8d8c53c39..20b449948 100644
--- a/src/main/java/net/minecraft/core/block/MotionSensorBlock.java
+++ b/src/main/java/net/minecraft/core/block/MotionSensorBlock.java
@@ -111,7 +111,7 @@ public class MotionSensorBlock extends RotatableEntityBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity) {
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity) {
         switch (dropCause)
         {
             case WORLD:
diff --git a/src/main/java/net/minecraft/core/block/MudBlock.java b/src/main/java/net/minecraft/core/block/MudBlock.java
index 57b3f436c..920a9d5bf 100644
--- a/src/main/java/net/minecraft/core/block/MudBlock.java
+++ b/src/main/java/net/minecraft/core/block/MudBlock.java
@@ -106,7 +106,7 @@ public class MudBlock extends Block{
 
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         return new ItemStack[] { new ItemStack(this, 1, meta) };
     }
diff --git a/src/main/java/net/minecraft/core/block/NetherCoalOreBlock.java b/src/main/java/net/minecraft/core/block/NetherCoalOreBlock.java
index d65276b39..3a6b0db94 100644
--- a/src/main/java/net/minecraft/core/block/NetherCoalOreBlock.java
+++ b/src/main/java/net/minecraft/core/block/NetherCoalOreBlock.java
@@ -16,7 +16,7 @@ public class NetherCoalOreBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/OverlayPebblesBlock.java b/src/main/java/net/minecraft/core/block/OverlayPebblesBlock.java
index 9f256a320..69ca2d22d 100644
--- a/src/main/java/net/minecraft/core/block/OverlayPebblesBlock.java
+++ b/src/main/java/net/minecraft/core/block/OverlayPebblesBlock.java
@@ -75,7 +75,7 @@ public class OverlayPebblesBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         if (dropCause == EnumDropCause.PICK_BLOCK)
         {
diff --git a/src/main/java/net/minecraft/core/block/PaintedFenceBlock.java b/src/main/java/net/minecraft/core/block/PaintedFenceBlock.java
index 79eb16a18..0e78e1721 100644
--- a/src/main/java/net/minecraft/core/block/PaintedFenceBlock.java
+++ b/src/main/java/net/minecraft/core/block/PaintedFenceBlock.java
@@ -21,7 +21,7 @@ public class PaintedFenceBlock extends FenceBlock implements IPainted
 	}
 
 	@Override
-	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
 	{
 		return new ItemStack[] { new ItemStack(this, 1, meta & 0x0F) };
 	}
diff --git a/src/main/java/net/minecraft/core/block/PaintedFenceGateBlock.java b/src/main/java/net/minecraft/core/block/PaintedFenceGateBlock.java
index e4dc3f197..88e93a734 100644
--- a/src/main/java/net/minecraft/core/block/PaintedFenceGateBlock.java
+++ b/src/main/java/net/minecraft/core/block/PaintedFenceGateBlock.java
@@ -21,7 +21,7 @@ public class PaintedFenceGateBlock extends FenceGateBlock implements IPainted
 	}
 
 	@Override
-	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
 	{
 		return new ItemStack[] { new ItemStack(this, 1, meta & 0xF0) };
 	}
diff --git a/src/main/java/net/minecraft/core/block/PaintedPlanksBlock.java b/src/main/java/net/minecraft/core/block/PaintedPlanksBlock.java
index f4ff81607..2b7fa7b0b 100644
--- a/src/main/java/net/minecraft/core/block/PaintedPlanksBlock.java
+++ b/src/main/java/net/minecraft/core/block/PaintedPlanksBlock.java
@@ -23,7 +23,7 @@ public class PaintedPlanksBlock extends Block implements IPainted
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         return new ItemStack[] { new ItemStack(this, 1, meta) };
     }
diff --git a/src/main/java/net/minecraft/core/block/PaintedTrapDoorBlock.java b/src/main/java/net/minecraft/core/block/PaintedTrapDoorBlock.java
index 16a34f478..a98faf1e2 100644
--- a/src/main/java/net/minecraft/core/block/PaintedTrapDoorBlock.java
+++ b/src/main/java/net/minecraft/core/block/PaintedTrapDoorBlock.java
@@ -20,7 +20,7 @@ public class PaintedTrapDoorBlock extends TrapDoorBlock implements IPainted {
     }
     
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         return new ItemStack[] { new ItemStack(Blocks.TRAPDOOR_PLANKS_PAINTED, 1, (meta >> 4 & 0xF) << 4) };
     }
diff --git a/src/main/java/net/minecraft/core/block/PineLeavesBlock.java b/src/main/java/net/minecraft/core/block/PineLeavesBlock.java
index 78c0a67c4..15740284c 100644
--- a/src/main/java/net/minecraft/core/block/PineLeavesBlock.java
+++ b/src/main/java/net/minecraft/core/block/PineLeavesBlock.java
@@ -21,7 +21,7 @@ public class PineLeavesBlock extends BaseLeavesBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         if (dropCause == EnumDropCause.PICK_BLOCK || dropCause == EnumDropCause.SILK_TOUCH) return new ItemStack[] { new ItemStack(this) };
 
diff --git a/src/main/java/net/minecraft/core/block/PortalBlock.java b/src/main/java/net/minecraft/core/block/PortalBlock.java
index 84bcb5825..200d55d75 100644
--- a/src/main/java/net/minecraft/core/block/PortalBlock.java
+++ b/src/main/java/net/minecraft/core/block/PortalBlock.java
@@ -296,7 +296,7 @@ public class PortalBlock extends TransparentBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         return null;
     }
diff --git a/src/main/java/net/minecraft/core/block/RedstoneOreBlock.java b/src/main/java/net/minecraft/core/block/RedstoneOreBlock.java
index 3f6ad8d70..4bbcadfb4 100644
--- a/src/main/java/net/minecraft/core/block/RedstoneOreBlock.java
+++ b/src/main/java/net/minecraft/core/block/RedstoneOreBlock.java
@@ -82,7 +82,7 @@ public class RedstoneOreBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/RedstoneTorchBlock.java b/src/main/java/net/minecraft/core/block/RedstoneTorchBlock.java
index a683353bc..f94f02372 100644
--- a/src/main/java/net/minecraft/core/block/RedstoneTorchBlock.java
+++ b/src/main/java/net/minecraft/core/block/RedstoneTorchBlock.java
@@ -118,7 +118,7 @@ public class RedstoneTorchBlock extends TorchBlock {
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity) {
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity) {
         return new ItemStack[]{new ItemStack(Blocks.TORCH_REDSTONE_ACTIVE)};
     }
 
diff --git a/src/main/java/net/minecraft/core/block/RedstoneWireBlock.java b/src/main/java/net/minecraft/core/block/RedstoneWireBlock.java
index 55328cca5..71ffae273 100644
--- a/src/main/java/net/minecraft/core/block/RedstoneWireBlock.java
+++ b/src/main/java/net/minecraft/core/block/RedstoneWireBlock.java
@@ -265,7 +265,7 @@ public class RedstoneWireBlock extends Block {
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity) {
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity) {
         return new ItemStack[]{new ItemStack(Items.DUST_REDSTONE)};
     }
 
diff --git a/src/main/java/net/minecraft/core/block/RepeaterBlock.java b/src/main/java/net/minecraft/core/block/RepeaterBlock.java
index d0bef696c..9e8f2227d 100644
--- a/src/main/java/net/minecraft/core/block/RepeaterBlock.java
+++ b/src/main/java/net/minecraft/core/block/RepeaterBlock.java
@@ -43,7 +43,7 @@ public class RepeaterBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         return new ItemStack[] { new ItemStack(Items.REPEATER) };
     }
diff --git a/src/main/java/net/minecraft/core/block/RopeBlock.java b/src/main/java/net/minecraft/core/block/RopeBlock.java
index 0fe24747c..967e5ed96 100644
--- a/src/main/java/net/minecraft/core/block/RopeBlock.java
+++ b/src/main/java/net/minecraft/core/block/RopeBlock.java
@@ -141,7 +141,7 @@ public class RopeBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity) {
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity) {
         return new ItemStack[] { new ItemStack(Items.ROPE) };
     }
 }
diff --git a/src/main/java/net/minecraft/core/block/ScorchedGrassBlock.java b/src/main/java/net/minecraft/core/block/ScorchedGrassBlock.java
index de5039780..16759e0ec 100644
--- a/src/main/java/net/minecraft/core/block/ScorchedGrassBlock.java
+++ b/src/main/java/net/minecraft/core/block/ScorchedGrassBlock.java
@@ -14,7 +14,7 @@ public class ScorchedGrassBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/SeatBlock.java b/src/main/java/net/minecraft/core/block/SeatBlock.java
index 34de5e0e5..fd1d63380 100644
--- a/src/main/java/net/minecraft/core/block/SeatBlock.java
+++ b/src/main/java/net/minecraft/core/block/SeatBlock.java
@@ -61,7 +61,7 @@ public class SeatBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity) {
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity) {
         if (dropCause != EnumDropCause.IMPROPER_TOOL)
         {
             return new ItemStack[] { new ItemStack(Items.SEAT) };
diff --git a/src/main/java/net/minecraft/core/block/SignBlock.java b/src/main/java/net/minecraft/core/block/SignBlock.java
index e3e5ca388..e95cdad70 100644
--- a/src/main/java/net/minecraft/core/block/SignBlock.java
+++ b/src/main/java/net/minecraft/core/block/SignBlock.java
@@ -151,7 +151,7 @@ public class SignBlock extends EntityBlock
         super.onNeighborBlockChange(world, x, y, z, blockId);
     }
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         return new ItemStack[] { new ItemStack(Items.SIGN) };
     }
diff --git a/src/main/java/net/minecraft/core/block/SlabBlock.java b/src/main/java/net/minecraft/core/block/SlabBlock.java
index dbc0925fe..d0a5116fe 100644
--- a/src/main/java/net/minecraft/core/block/SlabBlock.java
+++ b/src/main/java/net/minecraft/core/block/SlabBlock.java
@@ -105,6 +105,28 @@ public class SlabBlock extends Block
         return result;
     }
 
+    @Override
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
+    {
+        ItemStack[] result = modelBlock.getBreakResult(world, dropCause, modelBlockMetadata, blockEntity);
+
+        if (result != null)
+        {
+            for (ItemStack stack : result)
+            {
+                if (stack.itemID == modelBlock.id)
+                {
+                    stack.setMetadata(meta & 0xF0);
+                    stack.itemID = this.id;
+                    if ((meta & 0x3) == 1 && dropCause != EnumDropCause.PICK_BLOCK) stack.stackSize = 2;
+                    else stack.stackSize = 1;
+                }
+            }
+        }
+
+        return result;
+    }
+
     @Override
     public int tickDelay()
     {
diff --git a/src/main/java/net/minecraft/core/block/SlateLayerBlock.java b/src/main/java/net/minecraft/core/block/SlateLayerBlock.java
index ef6ffe989..7194a08f1 100644
--- a/src/main/java/net/minecraft/core/block/SlateLayerBlock.java
+++ b/src/main/java/net/minecraft/core/block/SlateLayerBlock.java
@@ -15,7 +15,7 @@ public class SlateLayerBlock extends BaseLayerBlock
 	}
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/SnowBlock.java b/src/main/java/net/minecraft/core/block/SnowBlock.java
index 5ce60b89c..9569acc0b 100644
--- a/src/main/java/net/minecraft/core/block/SnowBlock.java
+++ b/src/main/java/net/minecraft/core/block/SnowBlock.java
@@ -39,7 +39,7 @@ public class SnowBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/SnowLayerBlock.java b/src/main/java/net/minecraft/core/block/SnowLayerBlock.java
index 02fe4c8cd..60271389c 100644
--- a/src/main/java/net/minecraft/core/block/SnowLayerBlock.java
+++ b/src/main/java/net/minecraft/core/block/SnowLayerBlock.java
@@ -88,7 +88,7 @@ public class SnowLayerBlock extends BaseLayerBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/SpikesBlock.java b/src/main/java/net/minecraft/core/block/SpikesBlock.java
index 29239e24c..264769122 100644
--- a/src/main/java/net/minecraft/core/block/SpikesBlock.java
+++ b/src/main/java/net/minecraft/core/block/SpikesBlock.java
@@ -35,7 +35,7 @@ public class SpikesBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         return new ItemStack[] { new ItemStack(Blocks.SPIKES) };
     }
diff --git a/src/main/java/net/minecraft/core/block/SpinifexBlock.java b/src/main/java/net/minecraft/core/block/SpinifexBlock.java
index c01be71cb..d83e70500 100644
--- a/src/main/java/net/minecraft/core/block/SpinifexBlock.java
+++ b/src/main/java/net/minecraft/core/block/SpinifexBlock.java
@@ -19,7 +19,7 @@ public class SpinifexBlock extends FlowerBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/StairsBlock.java b/src/main/java/net/minecraft/core/block/StairsBlock.java
index c4bf69798..e76946f91 100644
--- a/src/main/java/net/minecraft/core/block/StairsBlock.java
+++ b/src/main/java/net/minecraft/core/block/StairsBlock.java
@@ -181,6 +181,26 @@ public class StairsBlock extends Block
         return result;
     }
 
+    @Override
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
+    {
+        ItemStack[] result = modelBlock.getBreakResult(world, dropCause, 0, blockEntity);
+
+        if (result != null)
+        {
+            for (ItemStack stack : result)
+            {
+                if (stack.itemID == modelBlock.id)
+                {
+                    stack.setMetadata(meta & 0xF0);
+                    stack.itemID = this.id;
+                }
+            }
+        }
+
+        return result;
+    }
+
     @Override
 	public void animationTick(World world, int x, int y, int z, Random rand)
     {
diff --git a/src/main/java/net/minecraft/core/block/StoneBlock.java b/src/main/java/net/minecraft/core/block/StoneBlock.java
index 6450e2d0c..b0499e6df 100644
--- a/src/main/java/net/minecraft/core/block/StoneBlock.java
+++ b/src/main/java/net/minecraft/core/block/StoneBlock.java
@@ -48,7 +48,7 @@ public class StoneBlock extends Block {
 	}
 
 	@Override
-	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
 	{
 		switch (dropCause)
 		{
diff --git a/src/main/java/net/minecraft/core/block/SugarcaneBlock.java b/src/main/java/net/minecraft/core/block/SugarcaneBlock.java
index c9e8017ed..b0ac21819 100644
--- a/src/main/java/net/minecraft/core/block/SugarcaneBlock.java
+++ b/src/main/java/net/minecraft/core/block/SugarcaneBlock.java
@@ -107,7 +107,7 @@ public class SugarcaneBlock extends Block implements IBonemealable
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         return new ItemStack[] { new ItemStack(Items.SUGARCANE) };
     }
diff --git a/src/main/java/net/minecraft/core/block/TNTBlock.java b/src/main/java/net/minecraft/core/block/TNTBlock.java
index afc651056..d622a87e2 100644
--- a/src/main/java/net/minecraft/core/block/TNTBlock.java
+++ b/src/main/java/net/minecraft/core/block/TNTBlock.java
@@ -32,7 +32,7 @@ public class TNTBlock extends Block {
 	}
 
 	@Override
-	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+	public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
 	{
 		if (dropCause == EnumDropCause.EXPLOSION)
 		{
diff --git a/src/main/java/net/minecraft/core/block/TallGrassBlock.java b/src/main/java/net/minecraft/core/block/TallGrassBlock.java
index 6b7d8c44f..860bfff67 100644
--- a/src/main/java/net/minecraft/core/block/TallGrassBlock.java
+++ b/src/main/java/net/minecraft/core/block/TallGrassBlock.java
@@ -31,7 +31,7 @@ public class TallGrassBlock extends FlowerBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/TintedGlassBlock.java b/src/main/java/net/minecraft/core/block/TintedGlassBlock.java
index 1fa8b99e3..67ae5e4d8 100644
--- a/src/main/java/net/minecraft/core/block/TintedGlassBlock.java
+++ b/src/main/java/net/minecraft/core/block/TintedGlassBlock.java
@@ -31,7 +31,7 @@ public class TintedGlassBlock extends GlassBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/TrommelBlock.java b/src/main/java/net/minecraft/core/block/TrommelBlock.java
index a6f320407..2a33d21da 100644
--- a/src/main/java/net/minecraft/core/block/TrommelBlock.java
+++ b/src/main/java/net/minecraft/core/block/TrommelBlock.java
@@ -32,7 +32,7 @@ public class TrommelBlock extends RotatableEntityBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         switch (dropCause)
         {
diff --git a/src/main/java/net/minecraft/core/block/WoolBlock.java b/src/main/java/net/minecraft/core/block/WoolBlock.java
index a97d0cb8b..95b3062ad 100644
--- a/src/main/java/net/minecraft/core/block/WoolBlock.java
+++ b/src/main/java/net/minecraft/core/block/WoolBlock.java
@@ -22,7 +22,7 @@ public class WoolBlock extends Block implements IPainted
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         return new ItemStack[] { new ItemStack(this, 1, meta) };
     }
diff --git a/src/main/java/net/minecraft/core/block/piston/MovingPistonBlock.java b/src/main/java/net/minecraft/core/block/piston/MovingPistonBlock.java
index 51c42e8e0..931c1e5b8 100644
--- a/src/main/java/net/minecraft/core/block/piston/MovingPistonBlock.java
+++ b/src/main/java/net/minecraft/core/block/piston/MovingPistonBlock.java
@@ -87,7 +87,7 @@ public class MovingPistonBlock extends EntityBlock
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         return null;
     }
diff --git a/src/main/java/net/minecraft/core/block/piston/PistonHeadBlock.java b/src/main/java/net/minecraft/core/block/piston/PistonHeadBlock.java
index 11cb1fdfe..44be3cf3f 100644
--- a/src/main/java/net/minecraft/core/block/piston/PistonHeadBlock.java
+++ b/src/main/java/net/minecraft/core/block/piston/PistonHeadBlock.java
@@ -177,6 +177,11 @@ public class PistonHeadBlock extends Block
         }
     }
 
+    @Override
+    public int getPistonPushReaction(World world, int x, int y, int z) {
+        return Material.PISTON_CANT_PUSH;
+    }
+
     public static Direction getDirectionFromMeta(int meta)
     {
         return Direction.getDirectionById(meta & MASK_DIRECTION);
@@ -191,7 +196,7 @@ public class PistonHeadBlock extends Block
     }
 
     @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
+    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int meta, BlockEntity blockEntity)
     {
         if (dropCause == EnumDropCause.PICK_BLOCK)
         {
diff --git a/src/main/java/net/minecraft/core/block/piston/SteelPistonBaseBlock.java b/src/main/java/net/minecraft/core/block/piston/SteelPistonBaseBlock.java
index e6bf3ca42..6b05635c1 100644
--- a/src/main/java/net/minecraft/core/block/piston/SteelPistonBaseBlock.java
+++ b/src/main/java/net/minecraft/core/block/piston/SteelPistonBaseBlock.java
@@ -62,6 +62,7 @@ public class SteelPistonBaseBlock extends PistonBaseBlock{
         int yo = y + direction.getOffsetY();
         int zo = z + direction.getOffsetZ();
         int blocks = 0;
+        boolean didCrush = false;
         while (true) {
             if (blocks >= maxPushedBlocks + 1) {
                 break;
@@ -75,6 +76,7 @@ public class SteelPistonBaseBlock extends PistonBaseBlock{
             }
             if (!isPushable(id, world, xo, yo, zo, true)) {
                 if (blocks == 1 && BlockTags.PISTON_CRUSHING.appliesTo(Block.getBlock(id)) && tryCrush(world, x, y, z, direction)) {
+                    didCrush = true;
                     break;
                 }
                 return false;
@@ -90,7 +92,7 @@ public class SteelPistonBaseBlock extends PistonBaseBlock{
             zo += direction.getOffsetZ();
             blocks++;
         }
-        if (blocks == 1) { // Block Flinging
+        if (!didCrush && blocks == 1) { // Block Flinging
             xo = x + direction.getOffsetX();
             yo = y + direction.getOffsetY();
             zo = z + direction.getOffsetZ();
@@ -111,12 +113,8 @@ public class SteelPistonBaseBlock extends PistonBaseBlock{
         List<Entity> entityList = new ArrayList<>(world.getEntitiesWithinAABBExcludingEntity(null, AABB.getTemporaryBB((double)x + direction.getOffsetX(), (double)y + direction.getOffsetY(), (double)z + direction.getOffsetZ(), (double)x + direction.getOffsetX() + 1, (double)y + direction.getOffsetY() + 1, (double)z + direction.getOffsetZ() + 1)));
         for (Entity entity : entityList){
             if (entity == null || entity.noPhysics) continue;
-            final double speed = 2;
-            entity.xd += speed * direction.getOffsetX();
-            entity.yd += speed * direction.getOffsetY();
-            entity.zd += speed * direction.getOffsetZ();
-            entity.fallDistance = 0;
-            entity.pushTime = 1f;
+            final double speed = 2; // Todo design solution for making each stacked piston push less effective then the previous
+            entity.fling(direction.getOffsetX() * speed, direction.getOffsetY() * speed, direction.getOffsetZ() * speed, 1f);
         }
         super.extendEvent(world, x, y, z, data, direction);
     }
diff --git a/src/main/java/net/minecraft/core/entity/Entity.java b/src/main/java/net/minecraft/core/entity/Entity.java
index 0146f2f8a..a12ce083f 100644
--- a/src/main/java/net/minecraft/core/entity/Entity.java
+++ b/src/main/java/net/minecraft/core/entity/Entity.java
@@ -690,6 +690,16 @@ public abstract class Entity
         }
     }
 
+    public void fling(double xd, double yd, double zd, float pushTime) {
+        this.fallDistance = 0;
+        this.xd += xd;
+        this.yd += yd;
+        this.zd += zd;
+        if (pushTime > this.pushTime) {
+            this.pushTime = pushTime;
+        }
+    }
+
     protected boolean makeStepSound()
     {
         return true;
diff --git a/src/main/java/net/minecraft/core/entity/FallingBlockEntity.java b/src/main/java/net/minecraft/core/entity/FallingBlockEntity.java
index 79469be7d..1374c94d8 100644
--- a/src/main/java/net/minecraft/core/entity/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/core/entity/FallingBlockEntity.java
@@ -9,6 +9,7 @@ import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.block.SandBlock;
 import net.minecraft.core.block.entity.BlockEntity;
+import net.minecraft.core.enums.EnumDropCause;
 import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.core.util.helper.Side;
@@ -78,6 +79,16 @@ public class FallingBlockEntity extends Entity
         if (pushTime < 0.05f || (pushTime < 0.25 && onGround)){
             pushTime = 0;
         }
+        if (isOnFire() && blockID == Blocks.TNT.id) {
+            remove();
+            TNTPrimedEntity tntPrimedEntity = new TNTPrimedEntity(world, x, y, z);
+            tntPrimedEntity.xd = this.xd;
+            tntPrimedEntity.yd = this.yd;
+            tntPrimedEntity.zd = this.zd;
+            tntPrimedEntity.pushTime = this.pushTime;
+            world.entityJoinedWorld(tntPrimedEntity);
+            return;
+        }
         xo = x;
         yo = y;
         zo = z;
@@ -141,7 +152,15 @@ public class FallingBlockEntity extends Entity
     }
 
     public void drop() {
-        spawnAtLocation(new ItemStack(blockID, 1, blockMeta), 0);
+        Block block = Block.getBlock(blockID);
+        if (block != null) {
+            ItemStack[] drops = block.getBreakResult(world, EnumDropCause.WORLD, blockMeta, blockEntity);
+            if (drops != null && drops.length > 0) {
+                for (int i = 0; i < drops.length; i++) {
+                    spawnAtLocation(drops[i], 0);
+                }
+            }
+        }
         if (blockEntity != null) {
             int x = MathHelper.floor(this.x);
             int y = MathHelper.floor(this.y);
@@ -168,10 +187,16 @@ public class FallingBlockEntity extends Entity
         blockID = tag.getShort("Tile") & 0x3fff;
         blockMeta = tag.getShort("TileData") & 0xff;
         if (tag.containsKey("TileEntity")) {
-            blockEntity = BlockEntity.createAndLoadEntity(tag.getCompound(""));
+            blockEntity = BlockEntity.createAndLoadEntity(tag.getCompound("TileEntity"));
         }
     }
 
+    @Override
+    public void fling(double xd, double yd, double zd, float pushTime) {
+        super.fling(xd, yd, zd, pushTime);
+        this.fallTime = 0;
+    }
+
     @Override
 	public float getShadowHeightOffs()
     {
diff --git a/src/main/java/net/minecraft/core/entity/TNTPrimedEntity.java b/src/main/java/net/minecraft/core/entity/TNTPrimedEntity.java
index 718180d5d..760af4625 100644
--- a/src/main/java/net/minecraft/core/entity/TNTPrimedEntity.java
+++ b/src/main/java/net/minecraft/core/entity/TNTPrimedEntity.java
@@ -21,18 +21,18 @@ public class TNTPrimedEntity extends Entity
         heightOffset = bbHeight / 2.0F;
     }
 
-    public TNTPrimedEntity(World world, double d, double d1, double d2)
+    public TNTPrimedEntity(World world, double x, double y, double z)
     {
         this(world);
-        setPos(d, d1, d2);
+        setPos(x, y, z);
         float f = (float)(java.lang.Math.random() * Math.PI * 2D);
         xd = -MathHelper.sin((f * MathHelper.PI) / 180F) * 0.02F;
         yd = 0.2D;
         zd = -MathHelper.cos((f * MathHelper.PI) / 180F) * 0.02F;
         fuse = 80;
-        xo = d;
-        yo = d1;
-        zo = d2;
+        xo = x;
+        yo = y;
+        zo = z;
     }
 
     @Override
@@ -57,6 +57,10 @@ public class TNTPrimedEntity extends Entity
     {
         checkOnWater(true);
         checkOnWater(true);
+        pushTime *= 0.98f;
+        if (pushTime < 0.05f || (pushTime < 0.25 && onGround)){
+            pushTime = 0;
+        }
         xo = x;
         yo = y;
         zo = z;
diff --git a/src/main/java/net/minecraft/core/world/Explosion.java b/src/main/java/net/minecraft/core/world/Explosion.java
index 60423c2fc..22116a10e 100644
--- a/src/main/java/net/minecraft/core/world/Explosion.java
+++ b/src/main/java/net/minecraft/core/world/Explosion.java
@@ -154,22 +154,18 @@ public class Explosion {
         for (Entity entity : list) {
             double d4 = entity.distanceTo(explosionX, explosionY, explosionZ) / (double) explosionSize2;
             if (d4 <= 1.0D) {
-                double d6 = entity.x - explosionX;
-                double d8 = entity.y - explosionY;
-                double d10 = entity.z - explosionZ;
-                double d11 = MathHelper.sqrt(d6 * d6 + d8 * d8 + d10 * d10);
-                d6 /= d11;
-                d8 /= d11;
-                d10 /= d11;
+                double xComp = entity.x - explosionX;
+                double yComp = entity.y - explosionY;
+                double zComp = entity.z - explosionZ;
+                double distance = MathHelper.sqrt(xComp * xComp + yComp * yComp + zComp * zComp);
+                xComp /= distance;
+                yComp /= distance;
+                zComp /= distance;
                 double d12 = worldObj.getSeenPercent(vec3, entity.bb);
                 double d13 = (1.0D - d4) * d12;
                 entity.hurt(exploder, (int) (((d13 * d13 + d13) / 2D) * 8D * (double) explosionSize2 + 1.0D), DamageType.BLAST);
-                double d14 = d13;
-                entity.xd += d6 * d14;
-                entity.yd += d8 * d14;
-                entity.zd += d10 * d14;
-
-                entity.pushTime = 1f;
+                double flingForce = d13 * 2;
+                entity.fling(xComp * flingForce, yComp * flingForce, zComp * flingForce, 1);
             }
         }
 	}
