From 6b36051353cde17c1d1d6b00fb444277c4e4522e Mon Sep 17 00:00:00 2001
From: SpaceToad <spacetoadcraft@gmail.com>
Date: Sat, 8 Feb 2014 20:39:39 +0100
Subject: [PATCH] progress with 1.7.2 port

---
 common/buildcraft/BuildCraftCore.java         | 20 +++---
 common/buildcraft/BuildCraftEnergy.java       | 13 +---
 common/buildcraft/BuildCraftTransport.java    |  9 +--
 common/buildcraft/api/core/BuildCraftAPI.java |  5 +-
 .../api/gates/TriggerParameter.java           |  3 +-
 .../buildcraft/builders/BlockArchitect.java   |  6 --
 .../builders/BlockBlueprintLibrary.java       |  6 --
 common/buildcraft/builders/BlockBuilder.java  |  6 --
 common/buildcraft/builders/BlockFiller.java   |  6 --
 common/buildcraft/builders/BlockMarker.java   |  8 +--
 .../buildcraft/builders/BlockPathMarker.java  |  6 --
 common/buildcraft/builders/TileMarker.java    |  4 +-
 common/buildcraft/core/InterModComms.java     | 13 ++--
 .../buildcraft/core/ItemBlockBuildCraft.java  |  4 +-
 .../core/TickHandlerCoreClient.java           | 36 +++++------
 common/buildcraft/core/TileBuildCraft.java    |  2 +-
 .../buildcraft/core/blueprints/BptBase.java   |  9 ++-
 .../core/blueprints/BptBlueprint.java         |  4 +-
 common/buildcraft/core/fluids/FluidUtils.java |  2 +-
 .../buildcraft/core/fluids/TankManager.java   |  8 ++-
 .../core/gui/buttons/GuiBetterButton.java     |  5 +-
 .../core/gui/buttons/GuiMultiButton.java      |  3 +-
 .../buildcraft/core/inventory/InvUtils.java   |  4 +-
 .../core/network/PacketGuiReturn.java         |  2 +-
 common/buildcraft/core/proxy/CoreProxy.java   |  2 +-
 .../core/render/RenderEntityBlock.java        |  3 +
 common/buildcraft/core/utils/BlockUtil.java   | 10 +--
 common/buildcraft/energy/BptBlockEngine.java  |  2 +-
 common/buildcraft/energy/BucketHandler.java   |  2 +-
 common/buildcraft/energy/TileEngine.java      |  2 +-
 .../factory/BlockAutoWorkbench.java           |  5 --
 common/buildcraft/factory/BlockFloodGate.java |  6 --
 common/buildcraft/factory/BlockHopper.java    |  6 --
 .../buildcraft/factory/BlockMiningWell.java   |  6 --
 common/buildcraft/factory/BlockPump.java      |  6 --
 common/buildcraft/factory/BlockQuarry.java    |  4 +-
 common/buildcraft/factory/BlockRefinery.java  |  8 +--
 common/buildcraft/factory/BlockTank.java      |  8 +--
 common/buildcraft/factory/BptBlockTank.java   |  2 +-
 common/buildcraft/factory/TileFloodGate.java  |  2 +-
 common/buildcraft/factory/TilePump.java       | 13 ++--
 common/buildcraft/factory/TileQuarry.java     | 18 +++---
 common/buildcraft/factory/TileRefinery.java   |  5 +-
 common/buildcraft/factory/TileTank.java       |  5 +-
 .../factory/network/PacketHandlerFactory.java |  4 +-
 common/buildcraft/silicon/BlockLaser.java     |  6 --
 .../silicon/TileAdvancedCraftingTable.java    |  3 +-
 .../transport/BlockFilteredBuffer.java        |  6 --
 .../transport/BlockGenericPipe.java           | 48 +++++++-------
 common/buildcraft/transport/ItemFacade.java   | 62 ++++++++++---------
 common/buildcraft/transport/ItemPipe.java     | 20 +++---
 common/buildcraft/transport/Pipe.java         | 13 ++--
 .../buildcraft/transport/TileGenericPipe.java | 16 ++---
 .../transport/blueprints/BptBlockPipe.java    | 22 ++++---
 .../transport/network/PacketFluidUpdate.java  |  4 +-
 .../pipes/PipeFluidsCobblestone.java          |  5 +-
 .../transport/pipes/PipeFluidsGold.java       |  5 +-
 .../transport/pipes/PipeFluidsIron.java       |  5 +-
 .../transport/pipes/PipeFluidsSandstone.java  |  5 +-
 .../transport/pipes/PipeFluidsStone.java      |  5 +-
 .../transport/pipes/PipeFluidsVoid.java       |  5 +-
 .../transport/pipes/PipeFluidsWood.java       |  5 +-
 .../transport/pipes/PipeItemsCobblestone.java |  5 +-
 .../transport/pipes/PipeItemsDaizuli.java     |  4 +-
 .../transport/pipes/PipeItemsDiamond.java     |  5 +-
 .../transport/pipes/PipeItemsGold.java        |  5 +-
 .../transport/pipes/PipeItemsIron.java        |  7 ++-
 .../transport/pipes/PipeItemsLapis.java       |  4 +-
 .../transport/pipes/PipeItemsObsidian.java    | 13 ++--
 .../transport/pipes/PipeItemsQuartz.java      |  5 +-
 .../transport/pipes/PipeItemsSandstone.java   |  5 +-
 .../transport/pipes/PipeItemsStone.java       |  5 +-
 .../transport/pipes/PipeItemsVoid.java        |  5 +-
 .../transport/pipes/PipeItemsWood.java        |  5 +-
 .../transport/pipes/PipePowerCobblestone.java |  5 +-
 .../transport/pipes/PipePowerDiamond.java     |  5 +-
 .../transport/pipes/PipePowerGold.java        |  5 +-
 .../transport/pipes/PipePowerIron.java        |  4 +-
 .../transport/pipes/PipePowerQuartz.java      |  5 +-
 .../transport/pipes/PipePowerStone.java       |  5 +-
 .../transport/pipes/PipePowerWood.java        |  5 +-
 .../pipes/PipeStructureCobblestone.java       |  5 +-
 .../transport/utils/FacadeMatrix.java         |  9 ++-
 83 files changed, 307 insertions(+), 347 deletions(-)

diff --git a/common/buildcraft/BuildCraftCore.java b/common/buildcraft/BuildCraftCore.java
index cee456cd..8c39d72e 100644
--- a/common/buildcraft/BuildCraftCore.java
+++ b/common/buildcraft/BuildCraftCore.java
@@ -77,6 +77,7 @@ import buildcraft.core.utils.Localization;
 import buildcraft.core.recipes.AssemblyRecipeManager;
 import buildcraft.core.recipes.IntegrationRecipeManager;
 import buildcraft.core.triggers.TriggerRedstoneInput;
+import cpw.mods.fml.common.FMLCommonHandler;
 import cpw.mods.fml.common.Mod;
 import cpw.mods.fml.common.Mod.EventHandler;
 import cpw.mods.fml.common.Mod.Instance;
@@ -90,7 +91,6 @@ import cpw.mods.fml.common.network.FMLEmbeddedChannel;
 import cpw.mods.fml.common.network.NetworkRegistry;
 import cpw.mods.fml.common.registry.EntityRegistry;
 import cpw.mods.fml.common.registry.LanguageRegistry;
-import cpw.mods.fml.common.registry.TickRegistry;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
 
@@ -298,17 +298,19 @@ public class BuildCraftCore extends BuildCraftMod {
 
 	@EventHandler
 	public void postInit(FMLPostInitializationEvent event) {
-		for (Block block : Block.blocksList) {
+		for (Object o : Block.blockRegistry) {
+			Block block = (Block) o;
+			
 			if (block instanceof BlockFluidBase || block instanceof IFluidBlock || block instanceof IPlantable) {
-				BuildCraftAPI.softBlocks[block.blockID] = true;
+				BuildCraftAPI.softBlocks.add(block);
 			}
 		}
-
-		BuildCraftAPI.softBlocks[Blocks.snow.blockID] = true;
-		BuildCraftAPI.softBlocks[Block.vine.blockID] = true;
-		BuildCraftAPI.softBlocks[Block.fire.blockID] = true;
-		TickRegistry.registerTickHandler(new TickHandlerCoreClient(), Side.CLIENT);
-
+		
+		BuildCraftAPI.softBlocks.add(Blocks.snow);
+		BuildCraftAPI.softBlocks.add(Blocks.vine);
+		BuildCraftAPI.softBlocks.add(Blocks.fire);
+		
+		FMLCommonHandler.instance().bus().register(new TickHandlerCoreClient());
 	}
 
 	@EventHandler
diff --git a/common/buildcraft/BuildCraftEnergy.java b/common/buildcraft/BuildCraftEnergy.java
index 009ccfca..738ef46c 100644
--- a/common/buildcraft/BuildCraftEnergy.java
+++ b/common/buildcraft/BuildCraftEnergy.java
@@ -93,14 +93,7 @@ public class BuildCraftEnergy extends BuildCraftMod {
 	public static BuildCraftEnergy instance;
 
 	@EventHandler
-	public void preInit(FMLPreInitializationEvent evt) {
-		// Update oil tag
-		int defaultOilId = DefaultProps.OIL_ID;
-		if (BuildCraftCore.mainConfiguration.hasKey(Configuration.CATEGORY_BLOCK, "oilStill.id")) {
-			defaultOilId = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_BLOCK, "oilStill.id", defaultOilId).getInt(defaultOilId);
-			BuildCraftCore.mainConfiguration.getCategory(Configuration.CATEGORY_BLOCK).remove("oilStill.id");
-		}
-		
+	public void preInit(FMLPreInitializationEvent evt) {		
 		int oilDesertBiomeId = BuildCraftCore.mainConfiguration.get("biomes", "oilDesert", DefaultProps.BIOME_OIL_DESERT).getInt(DefaultProps.BIOME_OIL_DESERT);
 		int oilOceanBiomeId = BuildCraftCore.mainConfiguration.get("biomes", "oilOcean", DefaultProps.BIOME_OIL_OCEAN).getInt(DefaultProps.BIOME_OIL_OCEAN);
 		canOilBurn = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "burnOil", true, "Can oil burn?").getBoolean(true);
@@ -118,14 +111,14 @@ public class BuildCraftEnergy extends BuildCraftMod {
 		}
 
 		if (oilDesertBiomeId > 0) {
-			if (BiomeGenBase.biomeList[oilDesertBiomeId] != null) {
+			if (BiomeGenBase.getBiomeGenArray () [oilDesertBiomeId] != null) {
 				throw new BiomeIdException("oilDesert", oilDesertBiomeId);
 			}
 			biomeOilDesert = BiomeGenOilDesert.makeBiome(oilDesertBiomeId);
 		}
 
 		if (oilOceanBiomeId > 0) {
-			if (BiomeGenBase.biomeList[oilOceanBiomeId] != null) {
+			if (BiomeGenBase.getBiomeGenArray () [oilOceanBiomeId] != null) {
 				throw new BiomeIdException("oilOcean", oilOceanBiomeId);
 			}
 			biomeOilOcean = BiomeGenOilOcean.makeBiome(oilOceanBiomeId);
diff --git a/common/buildcraft/BuildCraftTransport.java b/common/buildcraft/BuildCraftTransport.java
index 3a390121..4d2600a0 100644
--- a/common/buildcraft/BuildCraftTransport.java
+++ b/common/buildcraft/BuildCraftTransport.java
@@ -233,7 +233,7 @@ public class BuildCraftTransport extends BuildCraftMod {
 			durability.comment = "How long a pipe will take to break";
 			pipeDurability = (float) durability.getDouble(DefaultProps.PIPES_DURABILITY);
 
-			Property exclusionItemList = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_BLOCK, "woodenPipe.item.exclusion", new String[0]);
+			Property exclusionItemList = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "woodenPipe.item.exclusion", new String[0]);
 
 			String[] excludedItemBlocks = exclusionItemList.getStringList();
 			if (excludedItemBlocks != null) {
@@ -243,7 +243,7 @@ public class BuildCraftTransport extends BuildCraftMod {
 			} else
 				excludedItemBlocks = new String[0];
 
-			Property exclusionFluidList = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_BLOCK, "woodenPipe.liquid.exclusion", new String[0]);
+			Property exclusionFluidList = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "woodenPipe.liquid.exclusion", new String[0]);
 
 			String[] excludedFluidBlocks = exclusionFluidList.getStringList();
 			if (excludedFluidBlocks != null) {
@@ -444,10 +444,7 @@ public class BuildCraftTransport extends BuildCraftMod {
 	public static Item buildPipe(int defaultID, Class<? extends Pipe> clas, String descr, Object... ingredients) {
 		String name = Character.toLowerCase(clas.getSimpleName().charAt(0)) + clas.getSimpleName().substring(1);
 
-		Property prop = BuildCraftCore.mainConfiguration.getItem(name + ".id", defaultID);
-
-		int id = prop.getInt(defaultID);
-		ItemPipe res = BlockGenericPipe.registerPipe(id, clas);
+		ItemPipe res = BlockGenericPipe.registerPipe(clas);
 		res.setBlockName(clas.getSimpleName());
 		LanguageRegistry.addName(res, descr);
 
diff --git a/common/buildcraft/api/core/BuildCraftAPI.java b/common/buildcraft/api/core/BuildCraftAPI.java
index 87c45fdf..f25e176c 100644
--- a/common/buildcraft/api/core/BuildCraftAPI.java
+++ b/common/buildcraft/api/core/BuildCraftAPI.java
@@ -9,6 +9,9 @@
 
 package buildcraft.api.core;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import net.minecraft.block.Block;
 
 public class BuildCraftAPI {
@@ -16,5 +19,5 @@ public class BuildCraftAPI {
 	public static final int LAST_ORIGINAL_BLOCK = 122;
 	public static final int LAST_ORIGINAL_ITEM = 126;
 
-	public static final boolean[] softBlocks = new boolean[Block.blocksList.length];
+	public static final Set <Block> softBlocks = new HashSet<Block>();
 }
diff --git a/common/buildcraft/api/gates/TriggerParameter.java b/common/buildcraft/api/gates/TriggerParameter.java
index c0652962..9c6647f5 100644
--- a/common/buildcraft/api/gates/TriggerParameter.java
+++ b/common/buildcraft/api/gates/TriggerParameter.java
@@ -9,6 +9,7 @@
 
 package buildcraft.api.gates;
 
+import net.minecraft.item.Item;
 import net.minecraft.item.ItemStack;
 import net.minecraft.nbt.NBTTagCompound;
 
@@ -63,7 +64,7 @@ public class TriggerParameter implements ITriggerParameter {
 		// Legacy code to prevent existing gates from losing their contents
 		int itemID = compound.getInteger("itemID");
 		if (itemID != 0) {
-			stack = new ItemStack(itemID, 1, compound.getInteger("itemDMG"));
+			stack = new ItemStack((Item) Item.itemRegistry.getObject(itemID), 1, compound.getInteger("itemDMG"));
 			return;
 		}
 		
diff --git a/common/buildcraft/builders/BlockArchitect.java b/common/buildcraft/builders/BlockArchitect.java
index 6bdc0df9..6ee9a30d 100644
--- a/common/buildcraft/builders/BlockArchitect.java
+++ b/common/buildcraft/builders/BlockArchitect.java
@@ -134,12 +134,6 @@ public class BlockArchitect extends BlockContainer {
 		return blockTextureSides;
 	}
 
-	@SuppressWarnings({ "unchecked", "rawtypes" })
-	@Override
-	public void addCreativeItems(ArrayList itemList) {
-		itemList.add(new ItemStack(this));
-	}
-
 	@Override
 	@SideOnly(Side.CLIENT)
 	public void registerBlockIcons(IIconRegister par1IconRegister)
diff --git a/common/buildcraft/builders/BlockBlueprintLibrary.java b/common/buildcraft/builders/BlockBlueprintLibrary.java
index 89f97b47..3dc3d50c 100644
--- a/common/buildcraft/builders/BlockBlueprintLibrary.java
+++ b/common/buildcraft/builders/BlockBlueprintLibrary.java
@@ -78,12 +78,6 @@ public class BlockBlueprintLibrary extends BlockContainer {
 		}
 	}
 
-	@SuppressWarnings({ "unchecked", "rawtypes" })
-	@Override
-	public void addCreativeItems(ArrayList itemList) {
-		itemList.add(new ItemStack(this));
-	}
-
 	@Override
 	@SideOnly(Side.CLIENT)
 	public void registerBlockIcons(IIconRegister par1IconRegister)
diff --git a/common/buildcraft/builders/BlockBuilder.java b/common/buildcraft/builders/BlockBuilder.java
index 6d3940ae..41dd7365 100644
--- a/common/buildcraft/builders/BlockBuilder.java
+++ b/common/buildcraft/builders/BlockBuilder.java
@@ -119,12 +119,6 @@ public class BlockBuilder extends BlockContainer {
 		super.breakBlock(world, x, y, z, block, par6);
 	}
 
-	@SuppressWarnings({"unchecked", "rawtypes"})
-	@Override
-	public void addCreativeItems(ArrayList itemList) {
-		itemList.add(new ItemStack(this));
-	}
-
 	@Override
 	@SideOnly(Side.CLIENT)
 	public void registerBlockIcons(IIconRegister par1IconRegister) {
diff --git a/common/buildcraft/builders/BlockFiller.java b/common/buildcraft/builders/BlockFiller.java
index 82c3be42..b3219c37 100644
--- a/common/buildcraft/builders/BlockFiller.java
+++ b/common/buildcraft/builders/BlockFiller.java
@@ -99,12 +99,6 @@ public class BlockFiller extends BlockContainer {
 		super.breakBlock(world, x, y, z, block, par6);
 	}
 
-	@SuppressWarnings({ "unchecked", "rawtypes" })
-	@Override
-	public void addCreativeItems(ArrayList itemList) {
-		itemList.add(new ItemStack(this));
-	}
-
 	@Override
 	@SideOnly(Side.CLIENT)
 	public void registerBlockIcons(IIconRegister par1IconRegister) {
diff --git a/common/buildcraft/builders/BlockMarker.java b/common/buildcraft/builders/BlockMarker.java
index 3076165c..81ead8d7 100644
--- a/common/buildcraft/builders/BlockMarker.java
+++ b/common/buildcraft/builders/BlockMarker.java
@@ -140,17 +140,11 @@ public class BlockMarker extends BlockContainer {
 	private void dropTorchIfCantStay(World world, int x, int y, int z) {
 		int meta = world.getBlockMetadata(x, y, z);
 		if (!canPlaceBlockOnSide(world, x, y, z, meta)) {
-			dropBlockAsItem(world, x, y, z, BuildCraftBuilders.markerBlock.blockID, 0);
+			dropBlockAsItem(world, x, y, z, 0, 0);
 			world.setBlock(x, y, z, null);
 		}
 	}
 
-	@SuppressWarnings({"unchecked", "rawtypes"})
-	@Override
-	public void addCreativeItems(ArrayList itemList) {
-		itemList.add(new ItemStack(this));
-	}
-
 	@Override
 	@SideOnly(Side.CLIENT)
 	public void registerBlockIcons(IIconRegister iconRegister) {
diff --git a/common/buildcraft/builders/BlockPathMarker.java b/common/buildcraft/builders/BlockPathMarker.java
index 5c3a341b..0c486143 100644
--- a/common/buildcraft/builders/BlockPathMarker.java
+++ b/common/buildcraft/builders/BlockPathMarker.java
@@ -52,12 +52,6 @@ public class BlockPathMarker extends BlockMarker {
 			return super.getBlockTexture(iblockaccess, i, j, k, l);
 	}
 
-	@SuppressWarnings({ "unchecked", "rawtypes" })
-	@Override
-	public void addCreativeItems(ArrayList itemList) {
-		itemList.add(new ItemStack(this));
-	}
-
 	@Override
 	@SideOnly(Side.CLIENT)
 	public void registerBlockIcons(IIconRegister par1IconRegister)
diff --git a/common/buildcraft/builders/TileMarker.java b/common/buildcraft/builders/TileMarker.java
index 3f337ef8..71df892a 100644
--- a/common/buildcraft/builders/TileMarker.java
+++ b/common/buildcraft/builders/TileMarker.java
@@ -406,13 +406,13 @@ public class TileMarker extends TileBuildCraft implements IAreaProvider {
 			if (m.isSet()) {
 				worldObj.setBlock(m.x, m.y, m.z, null);
 
-				BuildCraftBuilders.markerBlock.dropBlockAsItem(worldObj, m.x, m.y, m.z, BuildCraftBuilders.markerBlock.blockID, 0);
+				BuildCraftBuilders.markerBlock.dropBlockAsItem(worldObj, m.x, m.y, m.z, 0, 0);
 			}
 		}
 
 		worldObj.setBlock(o.vectO.x, o.vectO.y, o.vectO.z, null);
 
-		BuildCraftBuilders.markerBlock.dropBlockAsItem(worldObj, o.vectO.x, o.vectO.y, o.vectO.z, BuildCraftBuilders.markerBlock.blockID, 0);
+		BuildCraftBuilders.markerBlock.dropBlockAsItem(worldObj, o.vectO.x, o.vectO.y, o.vectO.z, 0, 0);
 	}
 
 	@Override
diff --git a/common/buildcraft/core/InterModComms.java b/common/buildcraft/core/InterModComms.java
index 854b0bd4..dfcc2c64 100644
--- a/common/buildcraft/core/InterModComms.java
+++ b/common/buildcraft/core/InterModComms.java
@@ -10,6 +10,7 @@ package buildcraft.core;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import net.minecraft.block.Block;
 import net.minecraft.item.ItemStack;
 import net.minecraft.world.biome.BiomeGenBase;
 import buildcraft.energy.worldgen.OilPopulate;
@@ -47,10 +48,12 @@ public class InterModComms {
                 } else {
                     Integer blId = Ints.tryParse(array[0]);
                     Integer metaId = Ints.tryParse(array[1]);
+                                                          
                     if (blId == null || metaId == null) {
                         Logger.getLogger("Buildcraft").log(Level.INFO, String.format("Received an invalid add-facade request %s from mod %s", m.getStringValue(), m.getSender()));
                     } else {
-                        ItemFacade.addFacade(new ItemStack(blId, 1, metaId));
+                    	Block block = (Block) Block.blockRegistry.getObjectById(blId);
+                        ItemFacade.addFacade(new ItemStack(block, 1, metaId));
                     }
                 }
             } else if (m.isItemStackMessage()) {
@@ -65,8 +68,8 @@ public class InterModComms {
         try {
             String biomeID = m.getStringValue().trim();
             int id = Integer.valueOf(biomeID);
-            if (id >= BiomeGenBase.biomeList.length) {
-                throw new IllegalArgumentException("Biome ID must be less than " + BiomeGenBase.biomeList.length);
+            if (id >= BiomeGenBase.getBiomeGenArray().length) {
+                throw new IllegalArgumentException("Biome ID must be less than " + BiomeGenBase.getBiomeGenArray().length);
             }
             OilPopulate.INSTANCE.surfaceDepositBiomes.add(id);
         } catch (Exception ex) {
@@ -79,8 +82,8 @@ public class InterModComms {
         try {
             String biomeID = m.getStringValue().trim();
             int id = Integer.valueOf(biomeID);
-            if (id >= BiomeGenBase.biomeList.length) {
-                throw new IllegalArgumentException("Biome ID must be less than " + BiomeGenBase.biomeList.length);
+            if (id >= BiomeGenBase.getBiomeGenArray().length) {
+                throw new IllegalArgumentException("Biome ID must be less than " + BiomeGenBase.getBiomeGenArray().length);
             }
             OilPopulate.INSTANCE.excludedBiomes.add(id);
         } catch (Exception ex) {
diff --git a/common/buildcraft/core/ItemBlockBuildCraft.java b/common/buildcraft/core/ItemBlockBuildCraft.java
index 31f5df78..6ca0622e 100644
--- a/common/buildcraft/core/ItemBlockBuildCraft.java
+++ b/common/buildcraft/core/ItemBlockBuildCraft.java
@@ -6,8 +6,8 @@ import net.minecraft.item.ItemStack;
 
 public class ItemBlockBuildCraft extends ItemBlock {
 
-	public ItemBlockBuildCraft(int id) {
-		super(id);
+	public ItemBlockBuildCraft() {
+		super();
 	}
 
 	@Override
diff --git a/common/buildcraft/core/TickHandlerCoreClient.java b/common/buildcraft/core/TickHandlerCoreClient.java
index 30dfc977..b405ebfa 100644
--- a/common/buildcraft/core/TickHandlerCoreClient.java
+++ b/common/buildcraft/core/TickHandlerCoreClient.java
@@ -1,26 +1,29 @@
 package buildcraft.core;
 
 import buildcraft.core.proxy.CoreProxy;
-import cpw.mods.fml.common.ITickHandler;
-import cpw.mods.fml.common.TickType;
+
 import java.util.EnumSet;
+
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import cpw.mods.fml.common.gameevent.TickEvent;
+import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
 import net.minecraft.entity.player.EntityPlayer;
 
-public class TickHandlerCoreClient implements ITickHandler {
+public class TickHandlerCoreClient {
 
 	private boolean nagged;
 
-	@Override
-	public void tickStart(EnumSet<TickType> type, Object... tickData) {
-	}
+	@SideOnly(Side.CLIENT)
+	@SubscribeEvent
+	public void tickEnd(PlayerTickEvent evt) {
 
-	@Override
-	public void tickEnd(EnumSet<TickType> type, Object... tickData) {
-
-		if (nagged)
+		if (nagged) {
 			return;
+		}
 
-		EntityPlayer player = (EntityPlayer) tickData[0];
+		EntityPlayer player = evt.player;
 
 		// if(!Config.disableVersionCheck) {
 
@@ -37,15 +40,4 @@ public class TickHandlerCoreClient implements ITickHandler {
 
 		nagged = true;
 	}
-
-	@Override
-	public EnumSet<TickType> ticks() {
-		return EnumSet.of(TickType.PLAYER);
-	}
-
-	@Override
-	public String getLabel() {
-		return "BuildCraft - Player update tick";
-	}
-
 }
diff --git a/common/buildcraft/core/TileBuildCraft.java b/common/buildcraft/core/TileBuildCraft.java
index 5fc46dd7..60bea7fb 100644
--- a/common/buildcraft/core/TileBuildCraft.java
+++ b/common/buildcraft/core/TileBuildCraft.java
@@ -84,7 +84,7 @@ public abstract class TileBuildCraft extends TileEntity implements ISynchronized
 
 	public void onBlockPlacedBy(EntityLivingBase entity, ItemStack stack) {
 		if (entity instanceof EntityPlayer)
-			owner = ((EntityPlayer) entity).username;
+			owner = ((EntityPlayer) entity).getDisplayName();
 	}
 
 	public void destroy() {
diff --git a/common/buildcraft/core/blueprints/BptBase.java b/common/buildcraft/core/blueprints/BptBase.java
index 819419d8..4eec73ce 100644
--- a/common/buildcraft/core/blueprints/BptBase.java
+++ b/common/buildcraft/core/blueprints/BptBase.java
@@ -14,6 +14,7 @@ import buildcraft.core.Box;
 import buildcraft.core.Version;
 import buildcraft.core.proxy.CoreProxy;
 import buildcraft.core.utils.BCLog;
+
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
@@ -25,6 +26,8 @@ import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.io.UnsupportedEncodingException;
 
+import net.minecraft.block.Block;
+
 public abstract class BptBase {
 
 	BptSlot contents[][][];
@@ -57,15 +60,15 @@ public abstract class BptBase {
 		anchorZ = 0;
 	}
 
-	public void setBlockId(int x, int y, int z, int blockId) {
-		if (contents[x][y][z] == null) {
+	public void setBlock(int x, int y, int z, Block block) {
+		/*if (contents[x][y][z] == null) {
 			contents[x][y][z] = new BptSlot();
 			contents[x][y][z].x = x;
 			contents[x][y][z].y = y;
 			contents[x][y][z].z = z;
 		}
 
-		contents[x][y][z].blockId = blockId;
+		contents[x][y][z].blockId = blockId;*/
 	}
 
 	public void rotateLeft(BptContext context) {
diff --git a/common/buildcraft/core/blueprints/BptBlueprint.java b/common/buildcraft/core/blueprints/BptBlueprint.java
index e69ee97b..41df5223 100644
--- a/common/buildcraft/core/blueprints/BptBlueprint.java
+++ b/common/buildcraft/core/blueprints/BptBlueprint.java
@@ -366,8 +366,8 @@ public class BptBlueprint extends BptBase {
 	}
 
 	@Override
-	public void setBlockId(int x, int y, int z, int blockId) {
-		super.setBlockId(x, y, z, blockId);
+	public void setBlock(int x, int y, int z, Block block) {
+		super.setBlock(x, y, z, block);
 	}
 
 	@Override
diff --git a/common/buildcraft/core/fluids/FluidUtils.java b/common/buildcraft/core/fluids/FluidUtils.java
index 68ec94a0..4f3f62c1 100644
--- a/common/buildcraft/core/fluids/FluidUtils.java
+++ b/common/buildcraft/core/fluids/FluidUtils.java
@@ -73,7 +73,7 @@ public class FluidUtils {
 
 	public static Block getFluidBlock(Fluid fluid, boolean moving) {
 		if (fluid == FluidRegistry.WATER)
-			return moving ? Blocks.flowing_lava : Blocks.water;
+			return moving ? Blocks.flowing_water : Blocks.water;
 		if (fluid == FluidRegistry.LAVA)
 			return moving ? Blocks.flowing_lava : Blocks.lava;
 		return fluid.getBlock();
diff --git a/common/buildcraft/core/fluids/TankManager.java b/common/buildcraft/core/fluids/TankManager.java
index 3de658cc..0bc36878 100644
--- a/common/buildcraft/core/fluids/TankManager.java
+++ b/common/buildcraft/core/fluids/TankManager.java
@@ -9,14 +9,18 @@
 package buildcraft.core.fluids;
 
 import com.google.common.collect.ForwardingList;
+
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import io.netty.buffer.ByteBuf;
+
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+
 import net.minecraft.nbt.NBTTagCompound;
 import net.minecraftforge.common.util.ForgeDirection;
 import net.minecraftforge.fluids.Fluid;
@@ -109,7 +113,7 @@ public class TankManager<T extends Tank> extends ForwardingList<T> implements IF
 		}
 	}
 
-	public void writeData(DataOutputStream data) throws IOException {
+	public void writeData(ByteBuf data) {
 		for (Tank tank : tanks) {
 			FluidStack fluidStack = tank.getFluid();
 			if (fluidStack != null && fluidStack.getFluid() != null) {
@@ -123,7 +127,7 @@ public class TankManager<T extends Tank> extends ForwardingList<T> implements IF
 	}
 
 	@SideOnly(Side.CLIENT)
-	public void readData(DataInputStream data) throws IOException {
+	public void readData(ByteBuf data) {
 		for (Tank tank : tanks) {
 			int fluidId = data.readShort();
 			if (fluidId > 0) {
diff --git a/common/buildcraft/core/gui/buttons/GuiBetterButton.java b/common/buildcraft/core/gui/buttons/GuiBetterButton.java
index 790243db..95ab5803 100644
--- a/common/buildcraft/core/gui/buttons/GuiBetterButton.java
+++ b/common/buildcraft/core/gui/buttons/GuiBetterButton.java
@@ -63,9 +63,10 @@ public class GuiBetterButton extends GuiButton implements IToolTipProvider {
 
 	@Override
 	public void drawButton(Minecraft minecraft, int mouseX, int mouseY) {
-		if (!drawButton) {
+		if (!visible) {
 			return;
 		}
+		
 		FontRenderer fontrenderer = minecraft.fontRenderer;
 		bindButtonTextures(minecraft);
 		GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
@@ -92,7 +93,7 @@ public class GuiBetterButton extends GuiButton implements IToolTipProvider {
 
 	@Override
 	public boolean isToolTipVisible() {
-		return drawButton;
+		return visible;
 	}
 
 	@Override
diff --git a/common/buildcraft/core/gui/buttons/GuiMultiButton.java b/common/buildcraft/core/gui/buttons/GuiMultiButton.java
index 3bc4ea36..03cca2e4 100644
--- a/common/buildcraft/core/gui/buttons/GuiMultiButton.java
+++ b/common/buildcraft/core/gui/buttons/GuiMultiButton.java
@@ -30,9 +30,10 @@ public class GuiMultiButton extends GuiBetterButton {
 
 	@Override
 	public void drawButton(Minecraft minecraft, int x, int y) {
-		if (!drawButton) {
+		if (!visible) {
 			return;
 		}
+		
 		FontRenderer fontrenderer = minecraft.fontRenderer;
 		bindButtonTextures(minecraft);
 		GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
diff --git a/common/buildcraft/core/inventory/InvUtils.java b/common/buildcraft/core/inventory/InvUtils.java
index 8d3daef0..b9b42bd9 100644
--- a/common/buildcraft/core/inventory/InvUtils.java
+++ b/common/buildcraft/core/inventory/InvUtils.java
@@ -233,8 +233,8 @@ public class InvUtils {
 				adjacent = chest.adjacentChestZNeg;
 			}
 
-			if (chest.adjacentChestZPosition != null) {
-				adjacent = chest.adjacentChestZPosition;
+			if (chest.adjacentChestZPos != null) {
+				adjacent = chest.adjacentChestZPos;
 			}
 
 			if (adjacent != null) {
diff --git a/common/buildcraft/core/network/PacketGuiReturn.java b/common/buildcraft/core/network/PacketGuiReturn.java
index bf524cc8..8c90e7e3 100644
--- a/common/buildcraft/core/network/PacketGuiReturn.java
+++ b/common/buildcraft/core/network/PacketGuiReturn.java
@@ -48,7 +48,7 @@ public class PacketGuiReturn extends BuildCraftPacket {
 		} else if (obj instanceof Entity) {
 			Entity entity = (Entity) obj;
 			data.writeBoolean(false);
-			data.writeInt(entity.entityId);
+			data.writeInt(entity.getEntityId());
 		} else
 			return;
 		obj.writeGuiData(data);
diff --git a/common/buildcraft/core/proxy/CoreProxy.java b/common/buildcraft/core/proxy/CoreProxy.java
index ac5b82b2..4d0e5d61 100644
--- a/common/buildcraft/core/proxy/CoreProxy.java
+++ b/common/buildcraft/core/proxy/CoreProxy.java
@@ -230,6 +230,6 @@ public class CoreProxy {
 	 * server channels instead.
 	 */
 	public EntityPlayer getPlayerFromNetHandler (INetHandler hander) {
-		return ((NetHandlerPlayServer) hander).field_147369_b;
+		return ((NetHandlerPlayServer) hander).playerEntity;
 	}
 }
diff --git a/common/buildcraft/core/render/RenderEntityBlock.java b/common/buildcraft/core/render/RenderEntityBlock.java
index 2aa15f27..e46459d1 100644
--- a/common/buildcraft/core/render/RenderEntityBlock.java
+++ b/common/buildcraft/core/render/RenderEntityBlock.java
@@ -12,6 +12,7 @@ import buildcraft.core.EntityBlock;
 import java.util.Arrays;
 
 import net.minecraft.block.Block;
+import net.minecraft.client.renderer.RenderBlocks;
 import net.minecraft.client.renderer.Tessellator;
 import net.minecraft.client.renderer.entity.Render;
 import net.minecraft.client.renderer.texture.TextureMap;
@@ -27,6 +28,7 @@ import org.lwjgl.opengl.GL11;
 public class RenderEntityBlock extends Render {
 
 	public static RenderEntityBlock INSTANCE = new RenderEntityBlock();
+	protected RenderBlocks renderBlocks;
 
 	@Override
 	protected ResourceLocation getEntityTexture(Entity entity) {
@@ -121,6 +123,7 @@ public class RenderEntityBlock extends Render {
 	}
 
 	private RenderEntityBlock() {
+		renderBlocks = field_147909_c;
 	}
 
 	@Override
diff --git a/common/buildcraft/core/utils/BlockUtil.java b/common/buildcraft/core/utils/BlockUtil.java
index 7640586c..93a23239 100644
--- a/common/buildcraft/core/utils/BlockUtil.java
+++ b/common/buildcraft/core/utils/BlockUtil.java
@@ -43,12 +43,12 @@ public class BlockUtil {
 		if (block == null)
 			return null;
 
-		if (block.isAirBlock(world, i, j, k))
+		if (block.isAir(world, i, j, k))
 			return null;
 
 		int meta = world.getBlockMetadata(i, j, k);
 
-		ArrayList<ItemStack> dropsList = block.getBlockDropped(world, i, j, k, meta, 0);
+		ArrayList<ItemStack> dropsList = block.getDrops(world, i, j, k, meta, 0);
 		float dropChance = ForgeEventFactory.fireBlockHarvesting(dropsList, world, block, i, j, k, meta, 0, 1.0F, false, CoreProxy.proxy.getBuildCraftPlayer(world));
 
 		ArrayList<ItemStack> returnList = new ArrayList<ItemStack>();
@@ -87,7 +87,7 @@ public class BlockUtil {
 	}
 
 	public static boolean isAnObstructingBlock(Block block, World world, int x, int y, int z) {
-		if (block == null || block.isAirBlock(world, x, y, z))
+		if (block == null || block.isAir(world, x, y, z))
 			return false;
 		return true;
 	}
@@ -97,7 +97,7 @@ public class BlockUtil {
 	}
 
 	public static boolean canChangeBlock(Block block, World world, int x, int y, int z) {
-		if (block == null || block.isAirBlock(world, x, y, z))
+		if (block == null || block.isAir(world, x, y, z))
 			return true;
 
 		if (block.getBlockHardness(world, x, y, z) < 0)
@@ -117,7 +117,7 @@ public class BlockUtil {
 	}
 
 	public static boolean isSoftBlock(Block block, World world, int x, int y, int z) {
-		return block == null || BuildCraftAPI.softBlocks[blockID] || block.isAirBlock(world, x, y, z);
+		return block == null || BuildCraftAPI.softBlocks.contains(block) || block.isAir(world, x, y, z);
 	}
 
 	/**
diff --git a/common/buildcraft/energy/BptBlockEngine.java b/common/buildcraft/energy/BptBlockEngine.java
index 55e796f2..2c8ba58b 100644
--- a/common/buildcraft/energy/BptBlockEngine.java
+++ b/common/buildcraft/energy/BptBlockEngine.java
@@ -42,7 +42,7 @@ public class BptBlockEngine extends BptBlock {
 
 	@Override
 	public void buildBlock(BptSlotInfo slot, IBptContext context) {
-		context.world().setBlock(slot.x, slot.y, slot.z, slot.blockId, slot.meta,1);
+		//context.world().setBlock(slot.x, slot.y, slot.z, slot.blockId, slot.meta,1);
 
 		TileEngine engine = (TileEngine) context.world().getTileEntity(slot.x, slot.y, slot.z);
 
diff --git a/common/buildcraft/energy/BucketHandler.java b/common/buildcraft/energy/BucketHandler.java
index 2a348656..9938428b 100644
--- a/common/buildcraft/energy/BucketHandler.java
+++ b/common/buildcraft/energy/BucketHandler.java
@@ -18,7 +18,7 @@ import net.minecraft.item.Item;
 import net.minecraft.item.ItemStack;
 import net.minecraft.util.MovingObjectPosition;
 import net.minecraft.world.World;
-import net.minecraftforge.event.Event.Result;
+import cpw.mods.fml.common.eventhandler.Event.Result;
 import net.minecraftforge.event.entity.player.FillBucketEvent;
 
 public class BucketHandler {
diff --git a/common/buildcraft/energy/TileEngine.java b/common/buildcraft/energy/TileEngine.java
index 89786e29..9436ee16 100644
--- a/common/buildcraft/energy/TileEngine.java
+++ b/common/buildcraft/energy/TileEngine.java
@@ -284,7 +284,7 @@ public abstract class TileEngine extends TileBuildCraft implements IPowerRecepto
 			if ((!pipesOnly || tile instanceof IPipeTile) && isPoweredTile(tile, o)) {
 				orientation = o;
 				worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
-				worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, worldObj.getBlockId(xCoord, yCoord, zCoord));
+				worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, worldObj.getBlock(xCoord, yCoord, zCoord));
 
 				return true;
 			}
diff --git a/common/buildcraft/factory/BlockAutoWorkbench.java b/common/buildcraft/factory/BlockAutoWorkbench.java
index adcdebea..19ff1746 100644
--- a/common/buildcraft/factory/BlockAutoWorkbench.java
+++ b/common/buildcraft/factory/BlockAutoWorkbench.java
@@ -68,11 +68,6 @@ public class BlockAutoWorkbench extends BlockBuildCraft {
 		return new TileAutoWorkbench();
 	}
 
-	@SuppressWarnings({ "unchecked", "rawtypes" })
-	@Override
-	public void addCreativeItems(ArrayList itemList) {
-		itemList.add(new ItemStack(this));
-	}
 	@Override
 	@SideOnly(Side.CLIENT)
 	public void registerBlockIcons(IIconRegister par1IconRegister)
diff --git a/common/buildcraft/factory/BlockFloodGate.java b/common/buildcraft/factory/BlockFloodGate.java
index 73034be4..a39b5798 100644
--- a/common/buildcraft/factory/BlockFloodGate.java
+++ b/common/buildcraft/factory/BlockFloodGate.java
@@ -92,12 +92,6 @@ public class BlockFloodGate extends BlockBuildCraft {
 		}
 	}
 
-	@SuppressWarnings({"unchecked", "rawtypes"})
-	@Override
-	public void addCreativeItems(ArrayList itemList) {
-		itemList.add(new ItemStack(this));
-	}
-
 	@Override
 	@SideOnly(Side.CLIENT)
 	public void registerBlockIcons(IIconRegister par1IconRegister) {
diff --git a/common/buildcraft/factory/BlockHopper.java b/common/buildcraft/factory/BlockHopper.java
index ee480e16..a7b6cfda 100644
--- a/common/buildcraft/factory/BlockHopper.java
+++ b/common/buildcraft/factory/BlockHopper.java
@@ -67,12 +67,6 @@ public class BlockHopper extends BlockBuildCraft {
 		return true;
 	}
 
-	@SuppressWarnings({"unchecked", "rawtypes"})
-	@Override
-	public void addCreativeItems(ArrayList itemList) {
-		itemList.add(new ItemStack(this));
-	}
-
 	@Override
 	@SideOnly(Side.CLIENT)
 	public void registerBlockIcons(IIconRegister par1IconRegister) {
diff --git a/common/buildcraft/factory/BlockMiningWell.java b/common/buildcraft/factory/BlockMiningWell.java
index ff1cb8d5..cd66d308 100644
--- a/common/buildcraft/factory/BlockMiningWell.java
+++ b/common/buildcraft/factory/BlockMiningWell.java
@@ -85,12 +85,6 @@ public class BlockMiningWell extends BlockBuildCraft {
 		return new TileMiningWell();
 	}
 
-	@SuppressWarnings({ "unchecked", "rawtypes" })
-	@Override
-	public void addCreativeItems(ArrayList itemList) {
-		itemList.add(new ItemStack(this));
-	}
-
 	@Override
 	@SideOnly(Side.CLIENT)
 	public void registerBlockIcons(IIconRegister par1IconRegister)
diff --git a/common/buildcraft/factory/BlockPump.java b/common/buildcraft/factory/BlockPump.java
index b5cb2a6a..683a04ab 100644
--- a/common/buildcraft/factory/BlockPump.java
+++ b/common/buildcraft/factory/BlockPump.java
@@ -93,12 +93,6 @@ public class BlockPump extends BlockBuildCraft {
 		}
 	}
 
-	@SuppressWarnings({"unchecked", "rawtypes"})
-	@Override
-	public void addCreativeItems(ArrayList itemList) {
-		itemList.add(new ItemStack(this));
-	}
-
 	@Override
 	@SideOnly(Side.CLIENT)
 	public void registerBlockIcons(IIconRegister par1IconRegister) {
diff --git a/common/buildcraft/factory/BlockQuarry.java b/common/buildcraft/factory/BlockQuarry.java
index 2217e157..cc260ba3 100644
--- a/common/buildcraft/factory/BlockQuarry.java
+++ b/common/buildcraft/factory/BlockQuarry.java
@@ -125,11 +125,11 @@ public class BlockQuarry extends BlockBuildCraft {
 	}
 
 	@Override
-	public ArrayList<ItemStack> getBlockDropped(World world, int x, int y, int z, int metadata, int fortune) {
+	public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
 		if (BuildCraftFactory.quarryOneTimeUse) {
 			return new ArrayList<ItemStack>();
 		}
-		return super.getBlockDropped(world, x, y, z, metadata, fortune);
+		return super.getDrops(world, x, y, z, metadata, fortune);
 	}
 
 	@Override
diff --git a/common/buildcraft/factory/BlockRefinery.java b/common/buildcraft/factory/BlockRefinery.java
index 78c2bebf..6dad53cf 100644
--- a/common/buildcraft/factory/BlockRefinery.java
+++ b/common/buildcraft/factory/BlockRefinery.java
@@ -135,13 +135,7 @@ public class BlockRefinery extends BlockContainer {
 
 		return true;
 	}
-
-	@SuppressWarnings({"unchecked", "rawtypes"})
-	@Override
-	public void addCreativeItems(ArrayList itemList) {
-		itemList.add(new ItemStack(this));
-	}
-
+	
 	@Override
 	@SideOnly(Side.CLIENT)
 	public void registerBlockIcons(IIconRegister par1IconRegister) {
diff --git a/common/buildcraft/factory/BlockTank.java b/common/buildcraft/factory/BlockTank.java
index 64c1c888..ce2747a0 100644
--- a/common/buildcraft/factory/BlockTank.java
+++ b/common/buildcraft/factory/BlockTank.java
@@ -80,7 +80,7 @@ public class BlockTank extends BlockContainer {
 			case 1:
 				return textureTop;
 			default:
-				if (iblockaccess.getBlockId(i, j - 1, k) == blockID)
+				if (iblockaccess.getBlock(i, j - 1, k) == this)
 					return textureStackedSide;
 				else
 					return textureBottomSide;
@@ -146,12 +146,6 @@ public class BlockTank extends BlockContainer {
 		return super.shouldSideBeRendered(world, x, y, z, side);
 	}
 
-	@SuppressWarnings({"unchecked", "rawtypes"})
-	@Override
-	public void addCreativeItems(ArrayList itemList) {
-		itemList.add(new ItemStack(this));
-	}
-
 	@Override
 	@SideOnly(Side.CLIENT)
 	public void registerBlockIcons(IIconRegister par1IconRegister) {
diff --git a/common/buildcraft/factory/BptBlockTank.java b/common/buildcraft/factory/BptBlockTank.java
index 4ba90ca4..682476ae 100644
--- a/common/buildcraft/factory/BptBlockTank.java
+++ b/common/buildcraft/factory/BptBlockTank.java
@@ -18,7 +18,7 @@ public class BptBlockTank extends BptBlock {
 
 	@Override
 	public void buildBlock(BptSlotInfo slot, IBptContext context) {
-		context.world().setBlock(slot.x, slot.y, slot.z, slot.blockId, slot.meta,1);
+		//context.world().setBlock(slot.x, slot.y, slot.z, slot.blockId, slot.meta,1);
 	}
 
 }
diff --git a/common/buildcraft/factory/TileFloodGate.java b/common/buildcraft/factory/TileFloodGate.java
index 092f2df9..fc29e601 100644
--- a/common/buildcraft/factory/TileFloodGate.java
+++ b/common/buildcraft/factory/TileFloodGate.java
@@ -100,7 +100,7 @@ public class TileFloodGate extends TileBuildCraft implements IFluidHandler {
 	private boolean placeFluid(int x, int y, int z, Fluid fluid) {
 		Block block = worldObj.getBlock(x, y, z);
 		if (canPlaceFluidAt(block, x, y, z)) {
-			boolean placed = worldObj.setBlock(x, y, z, FluidUtils.getFluidBlockId(fluid, true));
+			boolean placed = worldObj.setBlock(x, y, z, FluidUtils.getFluidBlock(fluid, true));
 			if (placed) {
 				queueAdjacent(x, y, z);
 				expandQueue();
diff --git a/common/buildcraft/factory/TilePump.java b/common/buildcraft/factory/TilePump.java
index b0419f19..ae59027c 100644
--- a/common/buildcraft/factory/TilePump.java
+++ b/common/buildcraft/factory/TilePump.java
@@ -30,6 +30,7 @@ import buildcraft.core.network.PacketUpdate;
 import buildcraft.core.proxy.CoreProxy;
 import buildcraft.core.utils.BlockUtil;
 import buildcraft.core.utils.Utils;
+import io.netty.buffer.ByteBuf;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
@@ -296,7 +297,7 @@ public class TilePump extends TileBuildCraft implements IMachine, IPowerReceptor
 	}
 
 	private boolean isPumpableFluid(int x, int y, int z) {
-		Fluid fluid = BlockUtil.getFluid(worldObj.getBlockId(x, y, z));
+		Fluid fluid = BlockUtil.getFluid(worldObj.getBlock(x, y, z));
 		if (fluid == null)
 			return false;
 		if (!isFluidAllowed(fluid))
@@ -378,10 +379,10 @@ public class TilePump extends TileBuildCraft implements IMachine, IPowerReceptor
 	public PacketPayload getPacketPayload() {
 		PacketPayloadStream payload = new PacketPayloadStream(new PacketPayloadStream.StreamWriter() {
 			@Override
-			public void writeData(DataOutputStream data) throws IOException {
-				data.writeInt(aimY);
-				data.writeFloat((float) tubeY);
-				data.writeBoolean(powered);
+			public void writeData(ByteBuf buf) {
+				buf.writeInt(aimY);
+				buf.writeFloat((float) tubeY);
+				buf.writeBoolean(powered);
 			}
 		});
 
@@ -391,7 +392,7 @@ public class TilePump extends TileBuildCraft implements IMachine, IPowerReceptor
 	@Override
 	public void handleUpdatePacket(PacketUpdate packet) throws IOException {
 		PacketPayloadStream payload = (PacketPayloadStream) packet.payload;
-		DataInputStream data = payload.stream;
+		ByteBuf data = payload.stream;
 		aimY = data.readInt();
 		tubeY = data.readFloat();
 		powered = data.readBoolean();
diff --git a/common/buildcraft/factory/TileQuarry.java b/common/buildcraft/factory/TileQuarry.java
index f88d5172..f32142d3 100644
--- a/common/buildcraft/factory/TileQuarry.java
+++ b/common/buildcraft/factory/TileQuarry.java
@@ -619,29 +619,29 @@ public class TileQuarry extends TileBuildCraft implements IMachine, IPowerRecept
 		for (int i = 0; i < bluePrint.sizeX; ++i) {
 			for (int j = 0; j < bluePrint.sizeY; ++j) {
 				for (int k = 0; k < bluePrint.sizeZ; ++k) {
-					bluePrint.setBlockId(i, j, k, 0);
+					bluePrint.setBlock(i, j, k, null);
 				}
 			}
 		}
 
 		for (int it = 0; it < 2; it++) {
 			for (int i = 0; i < bluePrint.sizeX; ++i) {
-				bluePrint.setBlockId(i, it * (box.sizeY() - 1), 0, BuildCraftFactory.frameBlock.blockID);
-				bluePrint.setBlockId(i, it * (box.sizeY() - 1), bluePrint.sizeZ - 1, BuildCraftFactory.frameBlock.blockID);
+				bluePrint.setBlock(i, it * (box.sizeY() - 1), 0, BuildCraftFactory.frameBlock);
+				bluePrint.setBlock(i, it * (box.sizeY() - 1), bluePrint.sizeZ - 1, BuildCraftFactory.frameBlock);
 			}
 
 			for (int k = 0; k < bluePrint.sizeZ; ++k) {
-				bluePrint.setBlockId(0, it * (box.sizeY() - 1), k, BuildCraftFactory.frameBlock.blockID);
-				bluePrint.setBlockId(bluePrint.sizeX - 1, it * (box.sizeY() - 1), k, BuildCraftFactory.frameBlock.blockID);
+				bluePrint.setBlock(0, it * (box.sizeY() - 1), k, BuildCraftFactory.frameBlock);
+				bluePrint.setBlock(bluePrint.sizeX - 1, it * (box.sizeY() - 1), k, BuildCraftFactory.frameBlock);
 
 			}
 		}
 
 		for (int h = 1; h < box.sizeY(); ++h) {
-			bluePrint.setBlockId(0, h, 0, BuildCraftFactory.frameBlock.blockID);
-			bluePrint.setBlockId(0, h, bluePrint.sizeZ - 1, BuildCraftFactory.frameBlock.blockID);
-			bluePrint.setBlockId(bluePrint.sizeX - 1, h, 0, BuildCraftFactory.frameBlock.blockID);
-			bluePrint.setBlockId(bluePrint.sizeX - 1, h, bluePrint.sizeZ - 1, BuildCraftFactory.frameBlock.blockID);
+			bluePrint.setBlock(0, h, 0, BuildCraftFactory.frameBlock);
+			bluePrint.setBlock(0, h, bluePrint.sizeZ - 1, BuildCraftFactory.frameBlock);
+			bluePrint.setBlock(bluePrint.sizeX - 1, h, 0, BuildCraftFactory.frameBlock);
+			bluePrint.setBlock(bluePrint.sizeX - 1, h, bluePrint.sizeZ - 1, BuildCraftFactory.frameBlock);
 		}
 
 		bluePrintBuilder = new BptBuilderBlueprint(bluePrint, worldObj, box.xMin, yCoord, box.zMin);
diff --git a/common/buildcraft/factory/TileRefinery.java b/common/buildcraft/factory/TileRefinery.java
index 2cefce30..deced7de 100644
--- a/common/buildcraft/factory/TileRefinery.java
+++ b/common/buildcraft/factory/TileRefinery.java
@@ -25,6 +25,7 @@ import buildcraft.core.network.PacketPayload;
 import buildcraft.core.network.PacketPayloadStream;
 import buildcraft.core.network.PacketUpdate;
 import buildcraft.core.proxy.CoreProxy;
+import io.netty.buffer.ByteBuf;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
@@ -362,7 +363,7 @@ public class TileRefinery extends TileBuildCraft implements IFluidHandler, IPowe
 	public PacketPayload getPacketPayload() {
 		PacketPayload payload = new PacketPayloadStream(new PacketPayloadStream.StreamWriter() {
 			@Override
-			public void writeData(DataOutputStream data) throws IOException {
+			public void writeData(ByteBuf data) {
 				data.writeFloat(animationSpeed);
 				tankManager.writeData(data);
 			}
@@ -372,7 +373,7 @@ public class TileRefinery extends TileBuildCraft implements IFluidHandler, IPowe
 
 	@Override
 	public void handleUpdatePacket(PacketUpdate packet) throws IOException {
-		DataInputStream stream = ((PacketPayloadStream) packet.payload).stream;
+		ByteBuf stream = ((PacketPayloadStream) packet.payload).stream;
 		animationSpeed = stream.readFloat();
 		tankManager.readData(stream);
 	}
diff --git a/common/buildcraft/factory/TileTank.java b/common/buildcraft/factory/TileTank.java
index 4d14055b..4a004f2f 100644
--- a/common/buildcraft/factory/TileTank.java
+++ b/common/buildcraft/factory/TileTank.java
@@ -17,6 +17,7 @@ import buildcraft.core.network.PacketPayload;
 import buildcraft.core.network.PacketPayloadStream;
 import buildcraft.core.network.PacketUpdate;
 import buildcraft.core.proxy.CoreProxy;
+import io.netty.buffer.ByteBuf;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
@@ -69,7 +70,7 @@ public class TileTank extends TileBuildCraft implements IFluidHandler {
 	public PacketPayload getPacketPayload() {
 		PacketPayload payload = new PacketPayloadStream(new PacketPayloadStream.StreamWriter() {
 			@Override
-			public void writeData(DataOutputStream data) throws IOException {
+			public void writeData(ByteBuf data) {
 				tankManager.writeData(data);
 			}
 		});
@@ -78,7 +79,7 @@ public class TileTank extends TileBuildCraft implements IFluidHandler {
 
 	@Override
 	public void handleUpdatePacket(PacketUpdate packet) throws IOException {
-		DataInputStream stream = ((PacketPayloadStream) packet.payload).stream;
+		ByteBuf stream = ((PacketPayloadStream) packet.payload).stream;
 		tankManager.readData(stream);
 	}
 
diff --git a/common/buildcraft/factory/network/PacketHandlerFactory.java b/common/buildcraft/factory/network/PacketHandlerFactory.java
index 7f598494..eba22fc0 100644
--- a/common/buildcraft/factory/network/PacketHandlerFactory.java
+++ b/common/buildcraft/factory/network/PacketHandlerFactory.java
@@ -63,11 +63,11 @@ public class PacketHandlerFactory extends BuildCraftChannelHandler {
 
 	private void onRefinerySelect(EntityPlayer playerEntity, PacketUpdate packet) throws IOException {
 
-		TileRefinery tile = getRefinery(playerEntity.getWorldObj(), packet.posX, packet.posY, packet.posZ);
+		TileRefinery tile = getRefinery(playerEntity.worldObj, packet.posX, packet.posY, packet.posZ);
 		if (tile == null || packet.payload == null)
 			return;
 	
-		DataInputStream stream = ((PacketPayloadStream)packet.payload).stream;
+		ByteBuf stream = ((PacketPayloadStream)packet.payload).stream;
 
 		tile.setFilter(stream.readByte(), FluidRegistry.getFluid(stream.readShort()));
 	}
diff --git a/common/buildcraft/silicon/BlockLaser.java b/common/buildcraft/silicon/BlockLaser.java
index 04ab9b64..8cfdbe9c 100644
--- a/common/buildcraft/silicon/BlockLaser.java
+++ b/common/buildcraft/silicon/BlockLaser.java
@@ -77,12 +77,6 @@ public class BlockLaser extends BlockContainer {
 		return meta;
 	}
 
-	@SuppressWarnings({"unchecked", "rawtypes"})
-	@Override
-	public void addCreativeItems(ArrayList itemList) {
-		itemList.add(new ItemStack(this));
-	}
-
 	@Override
 	@SideOnly(Side.CLIENT)
 	public void registerBlockIcons(IIconRegister par1IconRegister) {
diff --git a/common/buildcraft/silicon/TileAdvancedCraftingTable.java b/common/buildcraft/silicon/TileAdvancedCraftingTable.java
index ac8519ab..e4de8905 100644
--- a/common/buildcraft/silicon/TileAdvancedCraftingTable.java
+++ b/common/buildcraft/silicon/TileAdvancedCraftingTable.java
@@ -27,6 +27,7 @@ import buildcraft.core.utils.Utils;
 
 import com.google.common.collect.Lists;
 
+import java.util.Arrays;
 import java.util.EnumSet;
 import java.util.List;
 
@@ -67,7 +68,7 @@ public class TileAdvancedCraftingTable extends TileLaserTableBase implements IIn
 
 		public int[] oreIDs = new int[9];
 
-		public CraftingGrid() {
+		public CraftingGrid() {			
 			super(9, "CraftingSlots", 1);
 			Arrays.fill(oreIDs, -1);
 		}
diff --git a/common/buildcraft/transport/BlockFilteredBuffer.java b/common/buildcraft/transport/BlockFilteredBuffer.java
index 81bf97eb..c8424961 100644
--- a/common/buildcraft/transport/BlockFilteredBuffer.java
+++ b/common/buildcraft/transport/BlockFilteredBuffer.java
@@ -64,12 +64,6 @@ public class BlockFilteredBuffer extends BlockBuildCraft {
 		return true;
 	}
 
-	@SuppressWarnings({"unchecked", "rawtypes"})
-	@Override
-	public void addCreativeItems(ArrayList itemList) {
-		itemList.add(new ItemStack(this));
-	}
-
 	@Override
 	@SideOnly(Side.CLIENT)
 	public void registerBlockIcons(IIconRegister par1IconRegister) {
diff --git a/common/buildcraft/transport/BlockGenericPipe.java b/common/buildcraft/transport/BlockGenericPipe.java
index b1d58269..ce303d4e 100644
--- a/common/buildcraft/transport/BlockGenericPipe.java
+++ b/common/buildcraft/transport/BlockGenericPipe.java
@@ -113,7 +113,7 @@ public class BlockGenericPipe extends BlockBuildCraft {
 	}
 
 	@Override
-	public boolean canBeReplacedByLeaves(World world, int x, int y, int z) {
+	public boolean canBeReplacedByLeaves(IBlockAccess world, int x, int y, int z) {
 		return false;
 	}
 
@@ -510,7 +510,7 @@ public class BlockGenericPipe extends BlockBuildCraft {
 	}
 
 	@Override
-	public ArrayList<ItemStack> getBlockDropped(World world, int x, int y, int z, int metadata, int fortune) {
+	public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
 
 		if (CoreProxy.proxy.isRenderWorld(world))
 			return null;
@@ -526,9 +526,9 @@ public class BlockGenericPipe extends BlockBuildCraft {
 			}
 
 			if (pipe != null) {
-				if (pipe.itemID > 0) {
+				if (pipe.item != null) {
 					pipe.dropContents();
-					list.add(new ItemStack(pipe.itemID, 1, damageDropped(metadata)));
+					list.add(new ItemStack(pipe.item, 1, damageDropped(metadata)));
 				}
 			}
 		}
@@ -559,23 +559,23 @@ public class BlockGenericPipe extends BlockBuildCraft {
 			}
 
 			if (pipe != null) {
-				int k1 = pipe.itemID;
+				Item k1 = pipe.item;
 
-				if (k1 > 0) {
+				if (k1 != null) {
 					pipe.dropContents();
-					dropBlockAsItem_do(world, i, j, k, new ItemStack(k1, 1, damageDropped(l)));
+					dropBlockAsItem(world, i, j, k, new ItemStack(k1, 1, damageDropped(l)));
 				}
 			}
 		}
 	}
 
 	@Override
-	public int idDropped(int meta, Random rand, int dmg) {
-		// Returns 0 to be safe - the id does not depend on the meta
-		return 0;
+	public Item getItemDropped(int meta, Random rand, int dmg) {
+		// Returns null to be safe - the id does not depend on the meta
+		return null;
 	}
 
-	@SideOnly(Side.CLIENT)
+	/*@SideOnly(Side.CLIENT)
 	@Override
 	public int idPicked(World world, int i, int j, int k) {
 		Pipe pipe = getPipe(world, i, j, k);
@@ -584,7 +584,7 @@ public class BlockGenericPipe extends BlockBuildCraft {
 			return 0;
 		else
 			return pipe.itemID;
-	}
+	}*/
 
 	@SideOnly(Side.CLIENT)
 	@Override
@@ -642,7 +642,7 @@ public class BlockGenericPipe extends BlockBuildCraft {
 	public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float xOffset, float yOffset, float zOffset) {
 		super.onBlockActivated(world, x, y, z, player, side, xOffset, yOffset, zOffset);
 
-		world.notifyBlocksOfNeighborChange(x, y, z, BuildCraftTransport.genericPipeBlock.blockID);
+		world.notifyBlocksOfNeighborChange(x, y, z, BuildCraftTransport.genericPipeBlock);
 
 		Pipe pipe = getPipe(world, x, y, z);
 
@@ -799,7 +799,7 @@ public class BlockGenericPipe extends BlockBuildCraft {
 
 	private boolean addFacade(EntityPlayer player, Pipe pipe, ForgeDirection side) {
 		ItemStack stack = player.getCurrentEquippedItem();
-		if (pipe.container.addFacade(side, ItemFacade.getBlockId(stack), ItemFacade.getMetaData(stack))) {
+		if (pipe.container.addFacade(side, ItemFacade.getBlock(stack), ItemFacade.getMetaData(stack))) {
 			if (!player.capabilities.isCreativeMode) {
 				stack.stackSize--;
 			}
@@ -871,7 +871,7 @@ public class BlockGenericPipe extends BlockBuildCraft {
 	@SuppressWarnings({"all"})
 	@SideOnly(Side.CLIENT)
 	@Override
-	public IIcon getBlockTexture(IBlockAccess iblockaccess, int x, int y, int z, int side) {
+	public IIcon getIcon(IBlockAccess iblockaccess, int x, int y, int z, int side) {
 		TileEntity tile = iblockaccess.getTileEntity(x, y, z);
 		if (!(tile instanceof TileGenericPipe))
 			return null;
@@ -937,18 +937,18 @@ public class BlockGenericPipe extends BlockBuildCraft {
 	}
 
 	/* Registration ******************************************************** */
-	public static Map<Integer, Class<? extends Pipe>> pipes = new HashMap<Integer, Class<? extends Pipe>>();
+	public static Map<Item, Class<? extends Pipe>> pipes = new HashMap<Item, Class<? extends Pipe>>();
 	static long lastRemovedDate = -1;
 	public static Map<BlockIndex, Pipe> pipeRemoved = new HashMap<BlockIndex, Pipe>();
 
-	public static ItemPipe registerPipe(int key, Class<? extends Pipe> clas) {
-		ItemPipe item = new ItemPipe(key);
+	public static ItemPipe registerPipe(Class<? extends Pipe> clas) {
+		ItemPipe item = new ItemPipe();
 		item.setBlockName("buildcraftPipe." + clas.getSimpleName().toLowerCase(Locale.ENGLISH));
 		GameRegistry.registerItem(item, item.getUnlocalizedName());
 
-		pipes.put(item.itemID, clas);
+		pipes.put(item, clas);
 
-		Pipe dummyPipe = createPipe(item.itemID);
+		Pipe dummyPipe = createPipe(item);
 		if (dummyPipe != null) {
 			item.setPipeIconIndex(dummyPipe.getIconIndexForItem());
 			TransportProxy.proxy.setIconProviderFromPipe(item, dummyPipe);
@@ -960,7 +960,7 @@ public class BlockGenericPipe extends BlockBuildCraft {
 		return pipes.containsKey(key);
 	}
 
-	public static Pipe createPipe(int key) {
+	public static Pipe createPipe(Item key) {
 
 		try {
 			Class<? extends Pipe> pipe = pipes.get(key);
@@ -1018,7 +1018,7 @@ public class BlockGenericPipe extends BlockBuildCraft {
 			return;
 		}
 		BuildCraftTransport.instance.wireIconProvider.registerIcons(iconRegister);
-		for (int i : pipes.keySet()) {
+		for (Item i : pipes.keySet()) {
 			Pipe dummyPipe = createPipe(i);
 			if (dummyPipe != null) {
 				dummyPipe.getIconProvider().registerIcons(iconRegister);
@@ -1058,7 +1058,7 @@ public class BlockGenericPipe extends BlockBuildCraft {
 	 */
 	@SideOnly(Side.CLIENT)
 	@Override
-	public boolean addBlockHitEffects(World worldObj, MovingObjectPosition target, EffectRenderer effectRenderer) {
+	public boolean addHitEffects(World worldObj, MovingObjectPosition target, EffectRenderer effectRenderer) {
 		int x = target.blockX;
 		int y = target.blockY;
 		int z = target.blockZ;
@@ -1123,7 +1123,7 @@ public class BlockGenericPipe extends BlockBuildCraft {
 	 */
 	@SideOnly(Side.CLIENT)
 	@Override
-	public boolean addBlockDestroyEffects(World worldObj, int x, int y, int z, int meta, EffectRenderer effectRenderer) {
+	public boolean addDestroyEffects(World worldObj, int x, int y, int z, int meta, EffectRenderer effectRenderer) {
 		Pipe pipe = getPipe(worldObj, x, y, z);
 		if (pipe == null)
 			return false;
diff --git a/common/buildcraft/transport/ItemFacade.java b/common/buildcraft/transport/ItemFacade.java
index c2e1d33a..12099a01 100644
--- a/common/buildcraft/transport/ItemFacade.java
+++ b/common/buildcraft/transport/ItemFacade.java
@@ -48,16 +48,16 @@ public class ItemFacade extends ItemBuildCraft {
 	@Override
 	public String getItemDisplayName(ItemStack itemstack) {
 		String name = super.getItemDisplayName(itemstack);
-		int decodedBlockId = ItemFacade.getBlockId(itemstack);
+		Block decodedBlock = ItemFacade.getBlock(itemstack);
 		int decodedMeta = ItemFacade.getMetaData(itemstack);
-		if (decodedBlockId < Block.blocksList.length && Block.blocksList[decodedBlockId] != null && Block.blocksList[decodedBlockId].getRenderType() == 31) {
+		if (decodedBlock != null && decodedBlock.getRenderType() == 31) {
 			decodedMeta &= 0x3;
 		}
-		ItemStack newStack = new ItemStack(decodedBlockId, 1, decodedMeta);
-		if (Item.itemsList[decodedBlockId] != null) {
+		ItemStack newStack = new ItemStack(decodedBlock, 1, decodedMeta);
+		if (Item.getItemFromBlock(decodedBlock) != null) {
 			name += ": " + CoreProxy.proxy.getItemDisplayName(newStack);
 		} else {
-			name += " < BROKEN (" + decodedBlockId + ":" + decodedMeta + " )>";
+			name += " < BROKEN (" + decodedBlock.getLocalizedName() + ":" + decodedMeta + " )>";
 		}
 		return name;
 	}
@@ -89,7 +89,7 @@ public class ItemFacade extends ItemBuildCraft {
 			return false;
 		TileGenericPipe pipeTile = (TileGenericPipe) tile;
 
-		if (pipeTile.addFacade(ForgeDirection.getOrientation(side).getOpposite(), ItemFacade.getBlockId(stack), ItemFacade.getMetaData(stack))) {
+		if (pipeTile.addFacade(ForgeDirection.getOrientation(side).getOpposite(), ItemFacade.getBlock(stack), ItemFacade.getMetaData(stack))) {
 			if (!player.capabilities.isCreativeMode) {
 				stack.stackSize--;
 			}
@@ -140,15 +140,19 @@ public class ItemFacade extends ItemBuildCraft {
 	}
 
 	public static int getMetaData(ItemStack stack) {
-		if (stack.hasTagCompound() && stack.getTagCompound().hasKey("meta"))
+		if (stack.hasTagCompound() && stack.getTagCompound().hasKey("meta")) {
 			return stack.getTagCompound().getInteger("meta");
-		return stack.getItemDamage() & 0x0000F;
+		} else {
+			return stack.getItemDamage() & 0x0000F;
+		}
 	}
 
-	public static int getBlockId(ItemStack stack) {
-		if (stack.hasTagCompound() && stack.getTagCompound().hasKey("id"))
-			return stack.getTagCompound().getInteger("id");
-		return ((stack.getItemDamage() & 0xFFF0) >>> 4);
+	public static Block getBlock(ItemStack stack) {
+		if (stack.hasTagCompound() && stack.getTagCompound().hasKey("id")) {
+			return (Block) Block.blockRegistry.getObjectById(stack.getTagCompound().getInteger("id"));
+		} else {
+			return (Block) Block.blockRegistry.getObjectById((stack.getItemDamage() & 0xFFF0) >>> 4);
+		}
 	}
 
 	@Override
@@ -192,15 +196,15 @@ public class ItemFacade extends ItemBuildCraft {
 			ItemStack slotmatch = null;
 			for (int i = 0; i < inventorycrafting.getSizeInventory(); i++) {
 				ItemStack slot = inventorycrafting.getStackInSlot(i);
-				if (slot != null && slot.getItem() == ItemFacade.this.itemID && slotmatch == null) {
+				if (slot != null && slot.getItem() == ItemFacade.this && slotmatch == null) {
 					slotmatch = slot;
 				} else if (slot != null) {
 					slotmatch = NO_MATCH;
 				}
 			}
 			if (slotmatch != null && slotmatch != NO_MATCH) {
-				int blockId = ItemFacade.getBlockId(slotmatch);
-				return blockId < Block.blocksList.length && Block.blocksList[blockId] != null && Block.blocksList[blockId].getRenderType() == 31;
+				Block block = ItemFacade.getBlock(slotmatch);
+				return block != null && block.getRenderType() == 31;
 			}
 
 			return false;
@@ -211,27 +215,25 @@ public class ItemFacade extends ItemBuildCraft {
 			ItemStack slotmatch = null;
 			for (int i = 0; i < inventorycrafting.getSizeInventory(); i++) {
 				ItemStack slot = inventorycrafting.getStackInSlot(i);
-				if (slot != null && slot.getItem() == ItemFacade.this.itemID && slotmatch == null) {
+				if (slot != null && slot.getItem() == ItemFacade.this && slotmatch == null) {
 					slotmatch = slot;
 				} else if (slot != null) {
 					slotmatch = NO_MATCH;
 				}
 			}
 			if (slotmatch != null && slotmatch != NO_MATCH) {
-				int blockId = ItemFacade.getBlockId(slotmatch);
+				Block block = ItemFacade.getBlock(slotmatch);
 				int blockMeta = ItemFacade.getMetaData(slotmatch);
-				if (blockId >= Block.blocksList.length)
-					return null;
-				Block bl = Block.blocksList[blockId];
-				// No Meta
-				if (bl != null && bl.getRenderType() == 31 && (blockMeta & 0xC) == 0)
-					return getStack(bl, (blockMeta & 0x3) | 4);
+				
+				
+				if (block != null && block.getRenderType() == 31 && (blockMeta & 0xC) == 0)
+					return getStack(block, (blockMeta & 0x3) | 4);
 				// Meta | 4 = true
-				if (bl != null && bl.getRenderType() == 31 && (blockMeta & 0x8) == 0)
-					return getStack(bl, (blockMeta & 0x3) | 8);
+				if (block != null && block.getRenderType() == 31 && (blockMeta & 0x8) == 0)
+					return getStack(block, (blockMeta & 0x3) | 8);
 				// Meta | 8 = true
-				if (bl != null && bl.getRenderType() == 31 && (blockMeta & 0x4) == 0)
-					return getStack(bl, (blockMeta & 0x3));
+				if (block != null && block.getRenderType() == 31 && (blockMeta & 0x4) == 0)
+					return getStack(block, (blockMeta & 0x3));
 			}
 			return null;
 		}
@@ -261,9 +263,9 @@ public class ItemFacade extends ItemBuildCraft {
 
 	public static ItemStack getStack(Block block, int metadata) {
 		ItemStack stack = new ItemStack(BuildCraftTransport.facadeItem, 1, 0);
-		NBTTagCompound nbt = new NBTTagCompound("tag");
-		nbt.setInteger("meta", metadata);
-		nbt.setInteger("id", blockID);
+		NBTTagCompound nbt = new NBTTagCompound();
+		nbt.setInteger("meta", metadata);		
+		nbt.setInteger("id", Block.blockRegistry.getIDForObject(block));
 		stack.setTagCompound(nbt);
 		return stack;
 	}
diff --git a/common/buildcraft/transport/ItemPipe.java b/common/buildcraft/transport/ItemPipe.java
index 5e48d025..e091f1d7 100644
--- a/common/buildcraft/transport/ItemPipe.java
+++ b/common/buildcraft/transport/ItemPipe.java
@@ -45,7 +45,7 @@ public class ItemPipe extends ItemBuildCraft implements IItemPipe {
 		if (worldBlock == Blocks.snow) {
 			side = 1;
 		} else if (worldBlock != Blocks.vine && worldBlock != Blocks.tallgrass && worldBlock != Blocks.deadbush
-				&& (worldBlock == null || !worldBlock.isBlockReplaceable(world, i, j, k))) {
+				&& (worldBlock == null || !worldBlock.isReplaceable(world, i, j, k))) {
 			if (side == 0) {
 				j--;
 			}
@@ -66,27 +66,31 @@ public class ItemPipe extends ItemBuildCraft implements IItemPipe {
 			}
 		}
 
-		if (itemstack.stackSize == 0)
+		if (itemstack.stackSize == 0) {
 			return false;
-		if (world.canPlaceEntityOnSide(blockID, i, j, k, false, side, entityplayer, itemstack)) {
-
+		}
+		
+		if (world.canPlaceEntityOnSide(block, i, j, k, false, side, entityplayer, itemstack)) {
 			Pipe pipe = BlockGenericPipe.createPipe(itemID);
+			
 			if (pipe == null) {
 				BCLog.logger.log(Level.WARNING, "Pipe failed to create during placement at {0},{1},{2}", new Object[]{i, j, k});
 				return true;
 			}
-			if (BlockGenericPipe.placePipe(pipe, world, i, j, k, blockID, 0)) {
-
-				Block.blocksList[blockID].onBlockPlacedBy(world, i, j, k, entityplayer, itemstack);
+			
+			if (BlockGenericPipe.placePipe(pipe, world, i, j, k, block, 0)) {
+				block.onBlockPlacedBy(world, i, j, k, entityplayer, itemstack);
 				world.playSoundEffect(i + 0.5F, j + 0.5F, k + 0.5F,
 						block.stepSound.getPlaceSound(),
 						(block.stepSound.getVolume() + 1.0F) / 2.0F,
 						block.stepSound.getPitch() * 0.8F);
 				itemstack.stackSize--;
 			}
+			
 			return true;
-		} else
+		} else {
 			return false;
+		}
 	}
 
 	@SideOnly(Side.CLIENT)
diff --git a/common/buildcraft/transport/Pipe.java b/common/buildcraft/transport/Pipe.java
index 5630bffe..2066c0b8 100644
--- a/common/buildcraft/transport/Pipe.java
+++ b/common/buildcraft/transport/Pipe.java
@@ -21,14 +21,17 @@ import buildcraft.transport.gates.GateFactory;
 import buildcraft.transport.pipes.events.PipeEvent;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+
 import java.lang.reflect.Method;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.Map;
 import java.util.Random;
+
 import net.minecraft.entity.Entity;
 import net.minecraft.entity.EntityLivingBase;
 import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
 import net.minecraft.item.ItemStack;
 import net.minecraft.nbt.NBTTagCompound;
 import net.minecraft.tileentity.TileEntity;
@@ -40,7 +43,7 @@ public abstract class Pipe<T extends PipeTransport> implements IDropControlInven
 	public int[] signalStrength = new int[]{0, 0, 0, 0};
 	public TileGenericPipe container;
 	public final T transport;
-	public final int itemID;
+	public final Item item;
 	private boolean internalUpdateScheduled = false;
 	public boolean[] wireSet = new boolean[]{false, false, false, false};
 	public Gate gate;
@@ -49,9 +52,9 @@ public abstract class Pipe<T extends PipeTransport> implements IDropControlInven
 	public SafeTimeTracker actionTracker = new SafeTimeTracker();
 	private static Map<Class<? extends Pipe>, Map<Class<? extends PipeEvent>, EventHandler>> eventHandlers = new HashMap<Class<? extends Pipe>, Map<Class<? extends PipeEvent>, EventHandler>>();
 
-	public Pipe(T transport, int itemID) {
+	public Pipe(T transport, Item item) {
 		this.transport = transport;
-		this.itemID = itemID;
+		this.item = item;
 
 		if (!networkWrappers.containsKey(this.getClass())) {
 			networkWrappers
@@ -409,12 +412,12 @@ public abstract class Pipe<T extends PipeTransport> implements IDropControlInven
 	}
 
 	protected void notifyBlocksOfNeighborChange(ForgeDirection side) {
-		container.getWorldObj().notifyBlocksOfNeighborChange(container.xCoord + side.offsetX, container.yCoord + side.offsetY, container.zCoord + side.offsetZ, BuildCraftTransport.genericPipeBlock.blockID);
+		container.getWorldObj().notifyBlocksOfNeighborChange(container.xCoord + side.offsetX, container.yCoord + side.offsetY, container.zCoord + side.offsetZ, BuildCraftTransport.genericPipeBlock);
 	}
 
 	protected void updateNeighbors(boolean needSelf) {
 		if (needSelf) {
-			container.getWorldObj().notifyBlocksOfNeighborChange(container.xCoord, container.yCoord, container.zCoord, BuildCraftTransport.genericPipeBlock.blockID);
+			container.getWorldObj().notifyBlocksOfNeighborChange(container.xCoord, container.yCoord, container.zCoord, BuildCraftTransport.genericPipeBlock);
 		}
 		for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) {
 			notifyBlocksOfNeighborChange(side);
diff --git a/common/buildcraft/transport/TileGenericPipe.java b/common/buildcraft/transport/TileGenericPipe.java
index 80129394..6d9c4ef6 100644
--- a/common/buildcraft/transport/TileGenericPipe.java
+++ b/common/buildcraft/transport/TileGenericPipe.java
@@ -106,7 +106,7 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, IFlui
 	private boolean pipeBound = false;
 	private boolean resyncGateExpansions = false;
 	public int redstoneInput = 0;
-	private int[] facadeBlocks = new int[ForgeDirection.VALID_DIRECTIONS.length];
+	private Block[] facadeBlocks = new int[ForgeDirection.VALID_DIRECTIONS.length];
 	private int[] facadeMeta = new int[ForgeDirection.VALID_DIRECTIONS.length];
 	private boolean[] plugs = new boolean[ForgeDirection.VALID_DIRECTIONS.length];
 
@@ -274,8 +274,8 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, IFlui
 
 		// Facades
 		for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) {
-			int blockId = this.facadeBlocks[direction.ordinal()];
-			renderState.facadeMatrix.setFacade(direction, blockId, this.facadeMeta[direction.ordinal()]);
+			Block block = this.facadeBlocks[direction.ordinal()];
+			renderState.facadeMatrix.setFacade(direction, block, this.facadeMeta[direction.ordinal()]);
 		}
 
 		//Plugs
@@ -589,16 +589,16 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, IFlui
 		refreshRenderState = true;
 	}
 
-	public boolean addFacade(ForgeDirection direction, int blockid, int meta) {
+	public boolean addFacade(ForgeDirection direction, Block block, int meta) {
 		if (this.getWorldObj().isRemote)
 			return false;
-		if (this.facadeBlocks[direction.ordinal()] == blockid)
+		if (this.facadeBlocks[direction.ordinal()] == block)
 			return false;
 
 		if (hasFacade(direction))
 			dropFacadeItem(direction);
 
-		this.facadeBlocks[direction.ordinal()] = blockid;
+		this.facadeBlocks[direction.ordinal()] = block;
 		this.facadeMeta[direction.ordinal()] = meta;
 		worldObj.notifyBlockChange(this.xCoord, this.yCoord, this.zCoord, getBlock());
 		scheduleRenderUpdate();
@@ -610,7 +610,7 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, IFlui
 			return false;
 		if (this.getWorldObj().isRemote)
 			return renderState.facadeMatrix.getFacadeBlockId(direction) != 0;
-		return (this.facadeBlocks[direction.ordinal()] != 0);
+		return (this.facadeBlocks[direction.ordinal()] != null);
 	}
 
 	private void dropFacadeItem(ForgeDirection direction) {
@@ -622,7 +622,7 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, IFlui
 			return false;
 		if (!worldObj.isRemote) {
 			dropFacadeItem(direction);
-			this.facadeBlocks[direction.ordinal()] = 0;
+			this.facadeBlocks[direction.ordinal()] = null;
 			this.facadeMeta[direction.ordinal()] = 0;
 			worldObj.notifyBlockChange(this.xCoord, this.yCoord, this.zCoord, getBlock());
 			scheduleRenderUpdate();
diff --git a/common/buildcraft/transport/blueprints/BptBlockPipe.java b/common/buildcraft/transport/blueprints/BptBlockPipe.java
index 59c4811e..f615e907 100644
--- a/common/buildcraft/transport/blueprints/BptBlockPipe.java
+++ b/common/buildcraft/transport/blueprints/BptBlockPipe.java
@@ -68,10 +68,12 @@ public class BptBlockPipe extends BptBlock {
 	public boolean isValid(BptSlotInfo slot, IBptContext context) {
 		Pipe pipe = BlockGenericPipe.getPipe(context.world(), slot.x, slot.y, slot.z);
 
-		if (BlockGenericPipe.isValid(pipe))
-			return pipe.itemID == slot.cpt.getInteger("pipeId");
-		else
-			return false;
+		//if (BlockGenericPipe.isValid(pipe))
+		//	return pipe.itemID == slot.cpt.getInteger("pipeId");
+		//else
+		//	return false;
+		
+		return false;
 	}
 
 	@Override
@@ -87,12 +89,12 @@ public class BptBlockPipe extends BptBlock {
 	public void buildBlock(BptSlotInfo slot, IBptContext context) {
 		int pipeId = slot.cpt.getInteger("pipeId");
 
-		Pipe pipe = BlockGenericPipe.createPipe(pipeId);
+		//Pipe pipe = BlockGenericPipe.createPipe(pipeId);
 
-		for (int i = 0; i < pipe.wireSet.length; ++i)
-			if (slot.cpt.hasKey("wire" + i)) {
-				pipe.wireSet[i] = true;
-			}
+		//for (int i = 0; i < pipe.wireSet.length; ++i)
+		//	if (slot.cpt.hasKey("wire" + i)) {
+		//		pipe.wireSet[i] = true;
+		//	}
 
 //		if (slot.cpt.hasKey("gate")) {
 //			// / TODO: Does not save/load custom gates
@@ -137,7 +139,7 @@ public class BptBlockPipe extends BptBlock {
 		Pipe pipe = BlockGenericPipe.getPipe(context.world(), x, y, z);
 
 		if (BlockGenericPipe.isValid(pipe)) {
-			bptSlot.cpt.setInteger("pipeId", pipe.itemID);
+			//bptSlot.cpt.setInteger("pipeId", pipe.itemID);
 
 			for (int i = 0; i < pipe.wireSet.length; ++i)
 				if (pipe.wireSet[i]) {
diff --git a/common/buildcraft/transport/network/PacketFluidUpdate.java b/common/buildcraft/transport/network/PacketFluidUpdate.java
index e84833fa..4bba54ca 100644
--- a/common/buildcraft/transport/network/PacketFluidUpdate.java
+++ b/common/buildcraft/transport/network/PacketFluidUpdate.java
@@ -64,7 +64,7 @@ public class PacketFluidUpdate extends PacketCoordinates {
 		colorRenderCache = transLiq.colorRenderCache;
 
 		byte[] dBytes = new byte[2];
-		data.read(dBytes);
+		data.readBytes(dBytes);
 		delta = fromByteArray(dBytes);
 
 		// System.out.printf("read %d, %d, %d = %s, %s%n", posX, posY, posZ, Arrays.toString(dBytes), delta);
@@ -90,7 +90,7 @@ public class PacketFluidUpdate extends PacketCoordinates {
 
 		byte[] dBytes = toByteArray(delta);
 		// System.out.printf("write %d, %d, %d = %s, %s%n", posX, posY, posZ, Arrays.toString(dBytes), delta);
-		data.write(dBytes);
+		data.writeBytes(dBytes);
 
 		for (ForgeDirection dir : ForgeDirection.values()) {
 			FluidStack liquid = renderCache[dir.ordinal()];
diff --git a/common/buildcraft/transport/pipes/PipeFluidsCobblestone.java b/common/buildcraft/transport/pipes/PipeFluidsCobblestone.java
index 20206c9b..d0110d7f 100644
--- a/common/buildcraft/transport/pipes/PipeFluidsCobblestone.java
+++ b/common/buildcraft/transport/pipes/PipeFluidsCobblestone.java
@@ -14,12 +14,13 @@ import buildcraft.transport.PipeIconProvider;
 import buildcraft.transport.PipeTransportFluids;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraftforge.common.util.ForgeDirection;
 
 public class PipeFluidsCobblestone extends Pipe {
 
-	public PipeFluidsCobblestone(int itemID) {
-		super(new PipeTransportFluids(), itemID);
+	public PipeFluidsCobblestone(Item item) {
+		super(new PipeTransportFluids(), item);
 	}
 
 	@Override
diff --git a/common/buildcraft/transport/pipes/PipeFluidsGold.java b/common/buildcraft/transport/pipes/PipeFluidsGold.java
index 8354f0b0..c17e1602 100644
--- a/common/buildcraft/transport/pipes/PipeFluidsGold.java
+++ b/common/buildcraft/transport/pipes/PipeFluidsGold.java
@@ -14,12 +14,13 @@ import buildcraft.transport.PipeIconProvider;
 import buildcraft.transport.PipeTransportFluids;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraftforge.common.util.ForgeDirection;
 
 public class PipeFluidsGold extends Pipe<PipeTransportFluids> {
 
-	public PipeFluidsGold(int itemID) {
-		super(new PipeTransportFluids(), itemID);
+	public PipeFluidsGold(Item item) {
+		super(new PipeTransportFluids(), item);
 
 		transport.flowRate = 40;
 		transport.travelDelay = 4;
diff --git a/common/buildcraft/transport/pipes/PipeFluidsIron.java b/common/buildcraft/transport/pipes/PipeFluidsIron.java
index 33de7d99..9cd56977 100644
--- a/common/buildcraft/transport/pipes/PipeFluidsIron.java
+++ b/common/buildcraft/transport/pipes/PipeFluidsIron.java
@@ -21,6 +21,7 @@ import buildcraft.transport.triggers.ActionPipeDirection;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
 import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
 import net.minecraft.tileentity.TileEntity;
 import net.minecraftforge.common.util.ForgeDirection;
 import net.minecraftforge.fluids.IFluidHandler;
@@ -46,8 +47,8 @@ public class PipeFluidsIron extends Pipe<PipeTransportFluids> {
 		}
 	};
 
-	public PipeFluidsIron(int itemID) {
-		super(new PipeTransportFluids(), itemID);
+	public PipeFluidsIron(Item item) {
+		super(new PipeTransportFluids(), item);
 	}
 
 	@Override
diff --git a/common/buildcraft/transport/pipes/PipeFluidsSandstone.java b/common/buildcraft/transport/pipes/PipeFluidsSandstone.java
index a8f992e0..246baebb 100644
--- a/common/buildcraft/transport/pipes/PipeFluidsSandstone.java
+++ b/common/buildcraft/transport/pipes/PipeFluidsSandstone.java
@@ -7,6 +7,7 @@
  */
 package buildcraft.transport.pipes;
 
+import net.minecraft.item.Item;
 import net.minecraft.tileentity.TileEntity;
 import net.minecraftforge.common.util.ForgeDirection;
 import net.minecraftforge.fluids.FluidStack;
@@ -23,8 +24,8 @@ import cpw.mods.fml.relauncher.SideOnly;
 
 public class PipeFluidsSandstone extends Pipe<PipeTransportFluids> implements IPipeTransportFluidsHook, IPipeConnectionForced {
 
-	public PipeFluidsSandstone(int itemID) {
-		super(new PipeTransportFluids(), itemID);
+	public PipeFluidsSandstone(Item item) {
+		super(new PipeTransportFluids(), item);
 	}
 
 	@Override
diff --git a/common/buildcraft/transport/pipes/PipeFluidsStone.java b/common/buildcraft/transport/pipes/PipeFluidsStone.java
index 7ffed323..7a8d6e4c 100644
--- a/common/buildcraft/transport/pipes/PipeFluidsStone.java
+++ b/common/buildcraft/transport/pipes/PipeFluidsStone.java
@@ -14,12 +14,13 @@ import buildcraft.transport.PipeIconProvider;
 import buildcraft.transport.PipeTransportFluids;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraftforge.common.util.ForgeDirection;
 
 public class PipeFluidsStone extends Pipe {
 
-	public PipeFluidsStone(int itemID) {
-		super(new PipeTransportFluids(), itemID);
+	public PipeFluidsStone(Item item) {
+		super(new PipeTransportFluids(), item);
 		// ((PipeTransportFluids) transport).flowRate = 40;
 	}
 
diff --git a/common/buildcraft/transport/pipes/PipeFluidsVoid.java b/common/buildcraft/transport/pipes/PipeFluidsVoid.java
index 24206dff..24b6e8d5 100644
--- a/common/buildcraft/transport/pipes/PipeFluidsVoid.java
+++ b/common/buildcraft/transport/pipes/PipeFluidsVoid.java
@@ -15,13 +15,14 @@ import buildcraft.transport.PipeIconProvider;
 import buildcraft.transport.PipeTransportFluids;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraftforge.common.util.ForgeDirection;
 import net.minecraftforge.fluids.FluidStack;
 
 public class PipeFluidsVoid extends Pipe implements IPipeTransportFluidsHook {
 
-	public PipeFluidsVoid(int itemID) {
-		super(new PipeTransportFluids(), itemID);
+	public PipeFluidsVoid(Item item) {
+		super(new PipeTransportFluids(), item);
 	}
 
 	@Override
diff --git a/common/buildcraft/transport/pipes/PipeFluidsWood.java b/common/buildcraft/transport/pipes/PipeFluidsWood.java
index 69e020be..59ce439b 100644
--- a/common/buildcraft/transport/pipes/PipeFluidsWood.java
+++ b/common/buildcraft/transport/pipes/PipeFluidsWood.java
@@ -22,6 +22,7 @@ import buildcraft.transport.PipeTransportFluids;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
 import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
 import net.minecraft.tileentity.TileEntity;
 import net.minecraft.world.World;
 import net.minecraftforge.common.util.ForgeDirection;
@@ -51,8 +52,8 @@ public class PipeFluidsWood extends Pipe<PipeTransportFluids> implements IPowerR
 		}
 	};
 
-	public PipeFluidsWood(int itemID) {
-		super(new PipeTransportFluids(), itemID);
+	public PipeFluidsWood(Item item) {
+		super(new PipeTransportFluids(), item);
 
 		powerHandler = new PowerHandler(this, Type.MACHINE);
 		powerHandler.configure(1, 100, 1, 250);
diff --git a/common/buildcraft/transport/pipes/PipeItemsCobblestone.java b/common/buildcraft/transport/pipes/PipeItemsCobblestone.java
index dac45cb7..e27843f1 100644
--- a/common/buildcraft/transport/pipes/PipeItemsCobblestone.java
+++ b/common/buildcraft/transport/pipes/PipeItemsCobblestone.java
@@ -14,12 +14,13 @@ import buildcraft.transport.PipeIconProvider;
 import buildcraft.transport.PipeTransportItems;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraftforge.common.util.ForgeDirection;
 
 public class PipeItemsCobblestone extends Pipe {
 
-	public PipeItemsCobblestone(int itemID) {
-		super(new PipeTransportItems(), itemID);
+	public PipeItemsCobblestone(Item item) {
+		super(new PipeTransportItems(), item);
 	}
 
 	@Override
diff --git a/common/buildcraft/transport/pipes/PipeItemsDaizuli.java b/common/buildcraft/transport/pipes/PipeItemsDaizuli.java
index 7f9fa24e..0047d4ac 100644
--- a/common/buildcraft/transport/pipes/PipeItemsDaizuli.java
+++ b/common/buildcraft/transport/pipes/PipeItemsDaizuli.java
@@ -57,8 +57,8 @@ public class PipeItemsDaizuli extends Pipe<PipeTransportItems> {
 		}
 	};
 
-	public PipeItemsDaizuli(int itemID) {
-		super(new PipeTransportItems(), itemID);
+	public PipeItemsDaizuli(Item item) {
+		super(new PipeTransportItems(), item);
 
 		transport.allowBouncing = true;
 	}
diff --git a/common/buildcraft/transport/pipes/PipeItemsDiamond.java b/common/buildcraft/transport/pipes/PipeItemsDiamond.java
index 0efcf76a..ec237ca7 100644
--- a/common/buildcraft/transport/pipes/PipeItemsDiamond.java
+++ b/common/buildcraft/transport/pipes/PipeItemsDiamond.java
@@ -15,6 +15,7 @@ import java.util.LinkedList;
 import net.minecraft.block.Block;
 import net.minecraft.entity.player.EntityPlayer;
 import net.minecraft.inventory.IInventory;
+import net.minecraft.item.Item;
 import net.minecraft.item.ItemStack;
 import net.minecraft.nbt.NBTBase;
 import net.minecraft.nbt.NBTTagCompound;
@@ -38,8 +39,8 @@ public class PipeItemsDiamond extends Pipe<PipeTransportItems> implements IClien
 
 	private SimpleInventory filters = new SimpleInventory(54, "Filters", 1);
 
-	public PipeItemsDiamond(int itemID) {
-		super(new PipeTransportItems(), itemID);
+	public PipeItemsDiamond(Item item) {
+		super(new PipeTransportItems(), item);
 	}
 
 	public IInventory getFilters() {
diff --git a/common/buildcraft/transport/pipes/PipeItemsGold.java b/common/buildcraft/transport/pipes/PipeItemsGold.java
index 7f201b9e..738def06 100644
--- a/common/buildcraft/transport/pipes/PipeItemsGold.java
+++ b/common/buildcraft/transport/pipes/PipeItemsGold.java
@@ -18,12 +18,13 @@ import buildcraft.transport.TravelingItem;
 import buildcraft.transport.pipes.events.PipeEventItem;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraftforge.common.util.ForgeDirection;
 
 public class PipeItemsGold extends Pipe {
 
-	public PipeItemsGold(int itemID) {
-		super(new PipeTransportItems(), itemID);
+	public PipeItemsGold(Item item) {
+		super(new PipeTransportItems(), item);
 	}
 
 	@Override
diff --git a/common/buildcraft/transport/pipes/PipeItemsIron.java b/common/buildcraft/transport/pipes/PipeItemsIron.java
index 716abf28..8c147182 100644
--- a/common/buildcraft/transport/pipes/PipeItemsIron.java
+++ b/common/buildcraft/transport/pipes/PipeItemsIron.java
@@ -17,10 +17,13 @@ import buildcraft.transport.TileGenericPipe;
 import buildcraft.transport.triggers.ActionPipeDirection;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+
 import java.util.LinkedList;
 import java.util.Map;
+
 import net.minecraft.entity.player.EntityPlayer;
 import net.minecraft.inventory.IInventory;
+import net.minecraft.item.Item;
 import net.minecraft.tileentity.TileEntity;
 import net.minecraftforge.common.util.ForgeDirection;
 
@@ -45,8 +48,8 @@ public class PipeItemsIron extends Pipe<PipeTransportItems> {
 		}
 	};
 
-	public PipeItemsIron(int itemID) {
-		super(new PipeTransportItems(), itemID);
+	public PipeItemsIron(Item item) {
+		super(new PipeTransportItems(), item);
 
 		transport.allowBouncing = true;
 	}
diff --git a/common/buildcraft/transport/pipes/PipeItemsLapis.java b/common/buildcraft/transport/pipes/PipeItemsLapis.java
index 4e3f6c21..2c53747d 100644
--- a/common/buildcraft/transport/pipes/PipeItemsLapis.java
+++ b/common/buildcraft/transport/pipes/PipeItemsLapis.java
@@ -31,8 +31,8 @@ import net.minecraftforge.common.util.ForgeDirection;
 
 public class PipeItemsLapis extends Pipe<PipeTransportItems> {
 
-	public PipeItemsLapis(int itemID) {
-		super(new PipeTransportItems(), itemID);
+	public PipeItemsLapis(Item item) {
+		super(new PipeTransportItems(), item);
 	}
 
 	@Override
diff --git a/common/buildcraft/transport/pipes/PipeItemsObsidian.java b/common/buildcraft/transport/pipes/PipeItemsObsidian.java
index 09490ea1..b8cea000 100644
--- a/common/buildcraft/transport/pipes/PipeItemsObsidian.java
+++ b/common/buildcraft/transport/pipes/PipeItemsObsidian.java
@@ -27,12 +27,15 @@ import buildcraft.transport.pipes.events.PipeEventItem;
 import buildcraft.transport.utils.TransportUtils;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+
 import java.util.Arrays;
 import java.util.List;
+
 import net.minecraft.entity.Entity;
 import net.minecraft.entity.item.EntityItem;
 import net.minecraft.entity.item.EntityMinecartChest;
 import net.minecraft.entity.projectile.EntityArrow;
+import net.minecraft.init.Items;
 import net.minecraft.item.Item;
 import net.minecraft.item.ItemStack;
 import net.minecraft.util.AxisAlignedBB;
@@ -45,8 +48,8 @@ public class PipeItemsObsidian extends Pipe<PipeTransportItems> implements IPowe
 	private int[] entitiesDropped;
 	private int entitiesDroppedIndex = 0;
 
-	public PipeItemsObsidian(int itemID) {
-		super(new PipeTransportItems(), itemID);
+	public PipeItemsObsidian(Item item) {
+		super(new PipeTransportItems(), item);
 
 		entitiesDropped = new int[32];
 		Arrays.fill(entitiesDropped, -1);
@@ -224,7 +227,7 @@ public class PipeItemsObsidian extends Pipe<PipeTransportItems> implements IPowe
 				}
 			} else if (entity instanceof EntityArrow) {
 				powerHandler.useEnergy(distance, distance, true);
-				stack = new ItemStack(Item.arrow, 1);
+				stack = new ItemStack(Items.arrow, 1);
 				CoreProxy.proxy.removeEntity(entity);
 			}
 
@@ -241,7 +244,7 @@ public class PipeItemsObsidian extends Pipe<PipeTransportItems> implements IPowe
 			entitiesDroppedIndex = 0;
 		else
 			entitiesDroppedIndex++;
-		entitiesDropped[entitiesDroppedIndex] = event.entity.entityId;
+		entitiesDropped[entitiesDroppedIndex] = event.entity.getEntityId();
 	}
 
 	public boolean canSuck(Entity entity, int distance) {
@@ -254,7 +257,7 @@ public class PipeItemsObsidian extends Pipe<PipeTransportItems> implements IPowe
 				return false;
 
 			for (int i = 0; i < entitiesDropped.length; ++i) {
-				if (item.entityId == entitiesDropped[i])
+				if (item.getEntityId() == entitiesDropped[i])
 					return false;
 			}
 
diff --git a/common/buildcraft/transport/pipes/PipeItemsQuartz.java b/common/buildcraft/transport/pipes/PipeItemsQuartz.java
index 64a781ef..f0e97ba9 100644
--- a/common/buildcraft/transport/pipes/PipeItemsQuartz.java
+++ b/common/buildcraft/transport/pipes/PipeItemsQuartz.java
@@ -17,12 +17,13 @@ import buildcraft.transport.TravelingItem;
 import buildcraft.transport.pipes.events.PipeEventItem;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraftforge.common.util.ForgeDirection;
 
 public class PipeItemsQuartz extends Pipe {
 
-	public PipeItemsQuartz(int itemID) {
-		super(new PipeTransportItems(), itemID);
+	public PipeItemsQuartz(Item item) {
+		super(new PipeTransportItems(), item);
 
 	}
 
diff --git a/common/buildcraft/transport/pipes/PipeItemsSandstone.java b/common/buildcraft/transport/pipes/PipeItemsSandstone.java
index 3d947e9c..bfcd991d 100644
--- a/common/buildcraft/transport/pipes/PipeItemsSandstone.java
+++ b/common/buildcraft/transport/pipes/PipeItemsSandstone.java
@@ -7,6 +7,7 @@
  */
 package buildcraft.transport.pipes;
 
+import net.minecraft.item.Item;
 import net.minecraft.tileentity.TileEntity;
 import net.minecraftforge.common.util.ForgeDirection;
 import buildcraft.BuildCraftTransport;
@@ -21,8 +22,8 @@ import cpw.mods.fml.relauncher.SideOnly;
 
 public class PipeItemsSandstone extends Pipe implements IPipeConnectionForced {
 
-	public PipeItemsSandstone(int itemID) {
-		super(new PipeTransportItems(), itemID);
+	public PipeItemsSandstone(Item item) {
+		super(new PipeTransportItems(), item);
 	}
 
 	@Override
diff --git a/common/buildcraft/transport/pipes/PipeItemsStone.java b/common/buildcraft/transport/pipes/PipeItemsStone.java
index 0a720fed..063aa2db 100644
--- a/common/buildcraft/transport/pipes/PipeItemsStone.java
+++ b/common/buildcraft/transport/pipes/PipeItemsStone.java
@@ -17,12 +17,13 @@ import buildcraft.transport.TravelingItem;
 import buildcraft.transport.pipes.events.PipeEventItem;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraftforge.common.util.ForgeDirection;
 
 public class PipeItemsStone extends Pipe {
 
-	public PipeItemsStone(int itemID) {
-		super(new PipeTransportItems(), itemID);
+	public PipeItemsStone(Item item) {
+		super(new PipeTransportItems(), item);
 	}
 
 	@Override
diff --git a/common/buildcraft/transport/pipes/PipeItemsVoid.java b/common/buildcraft/transport/pipes/PipeItemsVoid.java
index e90a8599..229f3faa 100644
--- a/common/buildcraft/transport/pipes/PipeItemsVoid.java
+++ b/common/buildcraft/transport/pipes/PipeItemsVoid.java
@@ -15,12 +15,13 @@ import buildcraft.transport.PipeTransportItems;
 import buildcraft.transport.pipes.events.PipeEventItem;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraftforge.common.util.ForgeDirection;
 
 public class PipeItemsVoid extends Pipe<PipeTransportItems> {
 
-	public PipeItemsVoid(int itemID) {
-		super(new PipeTransportItems(), itemID);
+	public PipeItemsVoid(Item item) {
+		super(new PipeTransportItems(), item);
 	}
 
 	@Override
diff --git a/common/buildcraft/transport/pipes/PipeItemsWood.java b/common/buildcraft/transport/pipes/PipeItemsWood.java
index 325130d5..2366bf9e 100644
--- a/common/buildcraft/transport/pipes/PipeItemsWood.java
+++ b/common/buildcraft/transport/pipes/PipeItemsWood.java
@@ -28,6 +28,7 @@ import cpw.mods.fml.relauncher.SideOnly;
 import net.minecraft.entity.player.EntityPlayer;
 import net.minecraft.inventory.IInventory;
 import net.minecraft.inventory.ISidedInventory;
+import net.minecraft.item.Item;
 import net.minecraft.item.ItemStack;
 import net.minecraft.tileentity.TileEntity;
 import net.minecraftforge.common.util.ForgeDirection;
@@ -50,8 +51,8 @@ public class PipeItemsWood extends Pipe<PipeTransportItems> implements IPowerRec
 		}
 	};
 
-	public PipeItemsWood(int itemID) {
-		super(new PipeTransportItems(), itemID);
+	public PipeItemsWood(Item item) {
+		super(new PipeTransportItems(), item);
 
 		powerHandler = new PowerHandler(this, Type.MACHINE);
 		powerHandler.configure(1, 64.1f, 1, 64.1f);
diff --git a/common/buildcraft/transport/pipes/PipePowerCobblestone.java b/common/buildcraft/transport/pipes/PipePowerCobblestone.java
index 156ffa9c..2cc726b5 100644
--- a/common/buildcraft/transport/pipes/PipePowerCobblestone.java
+++ b/common/buildcraft/transport/pipes/PipePowerCobblestone.java
@@ -14,12 +14,13 @@ import buildcraft.transport.PipeIconProvider;
 import buildcraft.transport.PipeTransportPower;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraftforge.common.util.ForgeDirection;
 
 public class PipePowerCobblestone extends Pipe<PipeTransportPower> {
 
-	public PipePowerCobblestone(int itemID) {
-		super(new PipeTransportPower(), itemID);
+	public PipePowerCobblestone(Item item) {
+		super(new PipeTransportPower(), item);
 		transport.initFromPipe(getClass());
 	}
 
diff --git a/common/buildcraft/transport/pipes/PipePowerDiamond.java b/common/buildcraft/transport/pipes/PipePowerDiamond.java
index 92df3f5b..8afc0001 100644
--- a/common/buildcraft/transport/pipes/PipePowerDiamond.java
+++ b/common/buildcraft/transport/pipes/PipePowerDiamond.java
@@ -14,12 +14,13 @@ import buildcraft.transport.PipeIconProvider;
 import buildcraft.transport.PipeTransportPower;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraftforge.common.util.ForgeDirection;
 
 public class PipePowerDiamond extends Pipe<PipeTransportPower> {
 
-	public PipePowerDiamond(int itemID) {
-		super(new PipeTransportPower(), itemID);
+	public PipePowerDiamond(Item item) {
+		super(new PipeTransportPower(), item);
 		transport.initFromPipe(getClass());
 	}
 
diff --git a/common/buildcraft/transport/pipes/PipePowerGold.java b/common/buildcraft/transport/pipes/PipePowerGold.java
index 60a082ba..28d8626e 100644
--- a/common/buildcraft/transport/pipes/PipePowerGold.java
+++ b/common/buildcraft/transport/pipes/PipePowerGold.java
@@ -14,12 +14,13 @@ import buildcraft.transport.PipeIconProvider;
 import buildcraft.transport.PipeTransportPower;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraftforge.common.util.ForgeDirection;
 
 public class PipePowerGold extends Pipe<PipeTransportPower> {
 
-	public PipePowerGold(int itemID) {
-		super(new PipeTransportPower(), itemID);
+	public PipePowerGold(Item item) {
+		super(new PipeTransportPower(), item);
 		transport.initFromPipe(getClass());
 	}
 
diff --git a/common/buildcraft/transport/pipes/PipePowerIron.java b/common/buildcraft/transport/pipes/PipePowerIron.java
index 5fff4ca2..c1913451 100644
--- a/common/buildcraft/transport/pipes/PipePowerIron.java
+++ b/common/buildcraft/transport/pipes/PipePowerIron.java
@@ -54,8 +54,8 @@ public class PipePowerIron extends Pipe<PipeTransportPower> {
 		}
 	}
 
-	public PipePowerIron(int itemID) {
-		super(new PipeTransportPower(), itemID);
+	public PipePowerIron(Item item) {
+		super(new PipeTransportPower(), item);
 		transport.initFromPipe(getClass());
 	}
 
diff --git a/common/buildcraft/transport/pipes/PipePowerQuartz.java b/common/buildcraft/transport/pipes/PipePowerQuartz.java
index 49b2ad87..0ea4e62b 100644
--- a/common/buildcraft/transport/pipes/PipePowerQuartz.java
+++ b/common/buildcraft/transport/pipes/PipePowerQuartz.java
@@ -14,12 +14,13 @@ import buildcraft.transport.PipeIconProvider;
 import buildcraft.transport.PipeTransportPower;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraftforge.common.util.ForgeDirection;
 
 public class PipePowerQuartz extends Pipe<PipeTransportPower> {
 
-	public PipePowerQuartz(int itemID) {
-		super(new PipeTransportPower(), itemID);
+	public PipePowerQuartz(Item item) {
+		super(new PipeTransportPower(), item);
 		transport.initFromPipe(getClass());
 	}
 
diff --git a/common/buildcraft/transport/pipes/PipePowerStone.java b/common/buildcraft/transport/pipes/PipePowerStone.java
index 810bc4c7..a830f64b 100644
--- a/common/buildcraft/transport/pipes/PipePowerStone.java
+++ b/common/buildcraft/transport/pipes/PipePowerStone.java
@@ -14,12 +14,13 @@ import buildcraft.transport.PipeIconProvider;
 import buildcraft.transport.PipeTransportPower;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraftforge.common.util.ForgeDirection;
 
 public class PipePowerStone extends Pipe<PipeTransportPower> {
 
-	public PipePowerStone(int itemID) {
-		super(new PipeTransportPower(), itemID);
+	public PipePowerStone(Item item) {
+		super(new PipeTransportPower(), item);
 		transport.initFromPipe(getClass());
 	}
 
diff --git a/common/buildcraft/transport/pipes/PipePowerWood.java b/common/buildcraft/transport/pipes/PipePowerWood.java
index 7cea5426..09888b58 100644
--- a/common/buildcraft/transport/pipes/PipePowerWood.java
+++ b/common/buildcraft/transport/pipes/PipePowerWood.java
@@ -20,6 +20,7 @@ import buildcraft.transport.PipeIconProvider;
 import buildcraft.transport.PipeTransportPower;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraft.nbt.NBTTagCompound;
 import net.minecraftforge.common.util.ForgeDirection;
 
@@ -31,8 +32,8 @@ public class PipePowerWood extends Pipe<PipeTransportPower> implements IPowerRec
 	private boolean[] powerSources = new boolean[6];
 	private boolean full;
 
-	public PipePowerWood(int itemID) {
-		super(new PipeTransportPower(), itemID);
+	public PipePowerWood(Item item) {
+		super(new PipeTransportPower(), item);
 
 		powerHandler = new PowerHandler(this, Type.PIPE);
 		initPowerProvider();
diff --git a/common/buildcraft/transport/pipes/PipeStructureCobblestone.java b/common/buildcraft/transport/pipes/PipeStructureCobblestone.java
index c04b84e6..72ea650d 100644
--- a/common/buildcraft/transport/pipes/PipeStructureCobblestone.java
+++ b/common/buildcraft/transport/pipes/PipeStructureCobblestone.java
@@ -7,12 +7,13 @@ import buildcraft.transport.PipeIconProvider;
 import buildcraft.transport.PipeTransportStructure;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.item.Item;
 import net.minecraftforge.common.util.ForgeDirection;
 
 public class PipeStructureCobblestone extends Pipe {
 
-	public PipeStructureCobblestone(int itemID) {
-		super(new PipeTransportStructure(), itemID);
+	public PipeStructureCobblestone(Item item) {
+		super(new PipeTransportStructure(), item);
 	}
 
 	@Override
diff --git a/common/buildcraft/transport/utils/FacadeMatrix.java b/common/buildcraft/transport/utils/FacadeMatrix.java
index e001b411..ed2941fa 100644
--- a/common/buildcraft/transport/utils/FacadeMatrix.java
+++ b/common/buildcraft/transport/utils/FacadeMatrix.java
@@ -42,7 +42,7 @@ public class FacadeMatrix {
 
 	public void writeData(DataOutputStream data) throws IOException {
 		for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) {
-			data.writeShort(_blocks[i]);
+			data.writeShort(Block.blockRegistry.getIDForObject(_blocks[i]));
 			data.writeByte(_blockMetas[i]);
 		}
 	}
@@ -50,8 +50,11 @@ public class FacadeMatrix {
 	public void readData(DataInputStream data) throws IOException {
 		for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) {
 			short id = data.readShort();
-			if (_blocks[i] != id) {
-				_blocks[i] = id;
+			
+			Block block = (Block) Block.blockRegistry.getObjectById(id);
+			
+			if (_blocks[i] != block) {
+				_blocks[i] = block;
 				dirty = true;
 			}
 			byte meta = data.readByte();