public static void iceManipulation(Player player) {
		int radius = 25;
		List<Entity> entities = player.getNearbyEntities(radius, radius, radius);
		for (Entity entity : entities) {

			if (entity.getLocation().distanceSquared(player.getLocation()) > radius)
				continue;

			if (entity instanceof Player) {
				((Player) entity).addPotionEffect(new PotionEffect(PotionEffectType.SLOW_DIGGING, 40, 100));
				int x = entity.getLocation().getBlockX();
				int y = entity.getLocation().getBlockY();
				int z = entity.getLocation().getBlockZ();
				int[] cachedBlocks = new int[8];
				// TODO Optimize
				for (int i = 0; i < 2; i++) {
					Block b = entity.getWorld().getBlockAt(x + 1, y + i, z);
					cachedBlocks[2 * i] = b.getTypeId();
					b.setType(Material.ICE);

					b = entity.getWorld().getBlockAt(x - 1, y + i, z);
					cachedBlocks[2 * i + 1] = b.getTypeId();
					b.setType(Material.ICE);

					b = entity.getWorld().getBlockAt(x, y + i, z - 1);
					cachedBlocks[2 * i + 2] = b.getTypeId();
					b.setType(Material.ICE);

					b = entity.getWorld().getBlockAt(x, y + i, z + 1);
					cachedBlocks[2 * i + 3] = b.getTypeId();
					b.setType(Material.ICE);
				}
				new IceHandler((Player) entity, x, y, z, cachedBlocks).runTaskLater(Heroes.instance(), 40);
			}

		}
	}