public final void handleDestroy(BlockBreakEvent event)
	{
		destroy(event);
		if (event.isCancelled())
			return;
		event.setCancelled(true);
		Block block = event.getBlock();
		block.setType(Material.AIR);
		if (event.getPlayer().getGameMode() != GameMode.CREATIVE) {
			for (Iterator<ItemStack> dropped = getDrops().iterator(); dropped.hasNext(); ) {
				ItemStack item = (ItemStack)dropped.next();
				ItemStack item2 = item.clone();
				int toDrop = 0;

				if (BlockAPI.getInstance().getCustomBlock(item) != null) {

					for (int x = 0; x < BlockAPI.getCustomBlockAmount(item); x++) {
						double gen = Math.random();
						if (gen < getLootPercentageOnExplode())
							toDrop++;
					}
					item2 = BlockAPI.setCustomBlockAmount(item2, toDrop);
				} else {					
					for (int x = 0; x < item.getAmount(); x++) {
						double gen = Math.random();
						if (gen < getLootPercentageOnExplode())
							toDrop++;
					}
					item2.setAmount(toDrop);
				}
				if (toDrop>0)
					block.getWorld().dropItemNaturally(block.getLocation(), item2);
			}
		}
		removeLocation(block.getLocation());
	}