gt: 				if (itemStack.stackTagCompound == null) {
context: package org.halvors.electrometrics.common.item;
  
  import cpw.mods.fml.relauncher.Side;
  import cpw.mods.fml.relauncher.SideOnly;
  import net.minecraft.block.Block;
  import net.minecraft.client.settings.GameSettings;
  import net.minecraft.entity.player.EntityPlayer;
  import net.minecraft.item.ItemStack;
  import net.minecraft.nbt.NBTTagCompound;
  import net.minecraft.world.World;
  import org.halvors.electrometrics.client.key.Key;
  import org.halvors.electrometrics.client.key.KeyHandler;
  import org.halvors.electrometrics.common.base.*;
  import org.halvors.electrometrics.common.tile.TileEntity;
  import org.halvors.electrometrics.common.tile.machine.TileEntityElectricityMeter;
  import org.halvors.electrometrics.common.tile.machine.TileEntityElectricityStorage;
  import org.halvors.electrometrics.common.util.LanguageUtils;
  import org.halvors.electrometrics.common.util.energy.EnergyUtils;
  import org.halvors.electrometrics.common.util.render.Color;
  
  import java.util.List;
  
  public class ItemBlockMachine extends ItemBlockMetadata {
  	public ItemBlockMachine(Block block) {
  		super(block);
  	}
  
  	@Override
  	public String getUnlocalizedName(ItemStack itemStack) {
  		MachineType machineType = MachineType.getType(itemStack);
  
  		return machineType.getUnlocalizedName();
  	}
  
  	@Override
  	public String getItemStackDisplayName(ItemStack itemStack) {
  		MachineType machineType = MachineType.getType(itemStack);
  
  		return machineType.getLocalizedName();
  	}
  
  	@SuppressWarnings("unchecked")
  	@Override
  	@SideOnly(Side.CLIENT)
  	public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean flag) {
  		MachineType machineType = MachineType.getType(itemStack);
  
  		if (!KeyHandler.getIsKeyPressed(Key.SNEAK.getKeyBinding())) {
  			list.add(LanguageUtils.localize("tooltip.hold") + " " + Color.AQUA + GameSettings.getKeyDisplayString(Key.SNEAK.getKeyBinding().getKeyCode()) + Color.GREY + " " + LanguageUtils.localize("tooltip.forDetails") + ".");
  		} else {
  			switch (machineType) {
  				case BASIC_ELECTRICITY_METER:
  				case ADVANCED_ELECTRICITY_METER:
  				case ELITE_ELECTRICITY_METER:
  				case ULTIMATE_ELECTRICITY_METER:
  					list.add(Color.BRIGHT_GREEN + LanguageUtils.localize("tooltip.measuredEnergy") + ": " + Color.GREY + EnergyUtils.getEnergyDisplay(getElectricityCount(itemStack)));
  					list.add(Color.AQUA + LanguageUtils.localize("tooltip.storedEnergy") + ": " + Color.GREY + EnergyUtils.getEnergyDisplay(getElectricityStored(itemStack)));
  					break;
  
  				default:
  					list.add(Color.RED + LanguageUtils.localize("tooltip.noInformation"));
  					break;
  			}
  		}
  	}
  
  	@Override
  	public boolean placeBlockAt(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata) {
  		boolean placed = super.placeBlockAt(itemStack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata);
  
  		if (placed) {
  			TileEntity tileEntity = TileEntity.getTileEntity(world, x, y, z);
  
  			if (tileEntity instanceof ITier) {
  				ITier tiered = (ITier) tileEntity;
  				tiered.setTier(getTier(itemStack));
  			}
  
  			if (tileEntity instanceof IElectricTier) {
  				IElectricTier electricTiered = (IElectricTier) tileEntity;
  				electricTiered.setElectricTier(getElectricTier(itemStack));
  			}
  
  			if (tileEntity instanceof TileEntityElectricityStorage) {
  				TileEntityElectricityStorage tileEntityElectricityStorage = (TileEntityElectricityStorage) tileEntity;
  				tileEntityElectricityStorage.getStorage().setEnergyStored(getElectricityStored(itemStack));
  			}
  
  			if (tileEntity instanceof TileEntityElectricityMeter) {
  				TileEntityElectricityMeter tileEntityElectricityMeter = (TileEntityElectricityMeter) tileEntity;
  				tileEntityElectricityMeter.setElectricityCount(getElectricityCount(itemStack));
  			}
  		}
  
  		return placed;
  	}
  
  	private Tier.Base getTier(ItemStack itemStack) {
  		if (itemStack.stackTagCompound != null) {
  			return Tier.Base.values()[itemStack.stackTagCompound.getInteger("tier")];
  		}
  
  		return Tier.Base.BASIC;
  	}
  
  	public void setTier(ItemStack itemStack, Tier.Base tier) {
  		if (itemStack.stackTagCompound == null) {
  			itemStack.setTagCompound(new NBTTagCompound());
  		}
  
  		itemStack.stackTagCompound.setInteger("tier", tier.ordinal());
  	}
  
  	private Tier.Electric getElectricTier(ItemStack itemStack) {
  		if (itemStack.stackTagCompound != null) {
  			return Tier.Electric.values()[itemStack.stackTagCompound.getInteger("electricTier")];
  		}
  
  		return Tier.Electric.BASIC;
  	}
  
  	public void setElectricTier(ItemStack itemStack, Tier.Electric electricTier) {
  		if (itemStack.stackTagCompound == null) {
  			itemStack.setTagCompound(new NBTTagCompound());
  		}
  
  		itemStack.stackTagCompound.setInteger("electricTier", electricTier.ordinal());
  	}
  
  	private RedstoneControlType getRedstoneControlType(ItemStack itemStack) {
  		if (itemStack.stackTagCompound != null) {
  			return RedstoneControlType.values()[itemStack.stackTagCompound.getInteger("redstoneControlType")];
  		}
  
  		return RedstoneControlType.DISABLED;
  	}
  
  	public void setRedstoneControlType(ItemStack itemStack, RedstoneControlType redstoneControlType) {
  		if (itemStack.stackTagCompound == null) {
  			itemStack.setTagCompound(new NBTTagCompound());
  		}
  
  		itemStack.stackTagCompound.setInteger("redstoneControlType", redstoneControlType.ordinal());
  	}
  
  	private int getElectricityStored(ItemStack itemStack) {
  		MachineType machineType = MachineType.getType(itemStack);
  
  		switch (machineType) {
  			case BASIC_ELECTRICITY_METER:
  			case ADVANCED_ELECTRICITY_METER:
  			case ELITE_ELECTRICITY_METER:
  			case ULTIMATE_ELECTRICITY_METER:
  				if (itemStack.stackTagCompound != null) {
  					return itemStack.stackTagCompound.getInteger("electricityStored");
  				}
  		}
  
  		return 0;
  	}
  
  	public void setElectricityStored(ItemStack itemStack, int electricityStored) {
  		MachineType machineType = MachineType.getType(itemStack);
  
  		switch (machineType) {
  			case BASIC_ELECTRICITY_METER:
  			case ADVANCED_ELECTRICITY_METER:
  			case ELITE_ELECTRICITY_METER:
  			case ULTIMATE_ELECTRICITY_METER:
  				if (itemStack.stackTagCompound == null) {
  					itemStack.setTagCompound(new NBTTagCompound());
  				}
  
  				itemStack.stackTagCompound.setInteger("electricityStored", electricityStored);
  				break;
  		}
  	}
  
  	private double getElectricityCount(ItemStack itemStack) {
  		MachineType machineType = MachineType.getType(itemStack);
  
  		switch (machineType) {
  			case BASIC_ELECTRICITY_METER:
  			case ADVANCED_ELECTRICITY_METER:
  			case ELITE_ELECTRICITY_METER:
  			case ULTIMATE_ELECTRICITY_METER:
  				if (itemStack.stackTagCompound != null) {
  					return itemStack.stackTagCompound.getDouble("electricityCount");
  				}
  		}
  
          return 0;
  	}
  
  	public void setElectricityCount(ItemStack itemStack, double electricityCount) {
  		MachineType machineType = MachineType.getType(itemStack);
  
  		switch (machineType) {
  			case BASIC_ELECTRICITY_METER:
  			case ADVANCED_ELECTRICITY_METER:
  			case ELITE_ELECTRICITY_METER:
  			case ULTIMATE_ELECTRICITY_METER:
  