@Override
 public void onBlockPlacedBy(
     World world, int x, int y, int z, EntityLivingBase player, ItemStack itemstack) {
   if (itemstack != null && itemstack.getItem() instanceof ItemBlockEnergyCube) {
     ItemBlockEnergyCube itemBlock = (ItemBlockEnergyCube) itemstack.getItem();
     TileEntityEnergyCube tileEntity = (TileEntityEnergyCube) world.getTileEntity(x, y, z);
     tileEntity.setEnergyStored(itemBlock.getEnergyStored(itemstack));
   }
 }
  @Override
  public ArrayList<ItemStack> getDrops(
      World world, int x, int y, int z, int metadata, int fortune) {
    ArrayList<ItemStack> ret = new ArrayList<ItemStack>();

    TileEntityEnergyCube tileEntity = (TileEntityEnergyCube) world.getTileEntity(x, y, z);

    Item item = getItemDropped(metadata, world.rand, fortune);
    if (item != null && item instanceof ItemBlockEnergyCube) {
      ItemBlockEnergyCube itemBlock = (ItemBlockEnergyCube) item;
      ItemStack itemstack = new ItemStack(itemBlock, 1, damageDropped(metadata));
      itemBlock.receiveEnergy(itemstack, tileEntity.getEnergyStored(null), false);
      ret.add(itemstack);
    }

    if (tileEntity != null) {
      for (int i = 0; i < tileEntity.getSizeInventory(); ++i) {
        ItemStack itemstack = tileEntity.getStackInSlot(i);
        if (itemstack != null) ret.add(itemstack);
      }
    }

    return ret;
  }