private Location getRandomLocationWithRadius(String location)
			throws DestinationInvalidException {
		int xOffSet, yOffSet, zOffSet;
		Location pointLocation;
		World world;

		String point, radiusString;

		if (!location.contains("point")) {
			throw new DestinationInvalidException("No point given for '"
					+ location + "'!");
		}

		if (!location.contains("radius")) {
			throw new DestinationInvalidException("No radius given for '"
					+ location + "'!");
		}

		// Calculate start point and radius
		// point=world,x,y,z radius=1000
		String info = location.replaceAll(".*\\(|\\).*", "");

		String[] args = info.split(" ");

		if (args.length != 2)
			throw new DestinationInvalidException(
					"Not all arguments were given for '" + location + "'!");

		if (args[0].contains("point")) {
			point = args[0].replace("point=", "");
		} else {
			point = args[1].replace("point=", "");
		}

		if (args[0].contains("radius")) {
			radiusString = args[0].replace("radius=", "");
		} else {
			radiusString = args[1].replace("radius=", "");
		}

		String[] pointInfo = point.split(",");
		int radius = Integer.parseInt(radiusString);

		if (pointInfo.length != 4)
			throw new DestinationInvalidException(
					"Not all arguments were given in '" + point + "' for '"
							+ location + "'!");
		if (plugin.getServer().getWorld(pointInfo[0]) == null) {
			throw new DestinationInvalidException("World '" + pointInfo[0]
					+ "' for '" + location + "' does not exist!");
		}

		world = plugin.getServer().getWorld(pointInfo[0]);

		pointLocation = new Location(world, Integer.parseInt(pointInfo[1]),
				Integer.parseInt(pointInfo[2]), Integer.parseInt(pointInfo[3]));

		// All points are calculated.
		int xLowest = pointLocation.getBlockX() - radius;
		int xBiggest = pointLocation.getBlockX() + radius;

		int xDifference = xBiggest - xLowest;

		int zLowest = pointLocation.getBlockZ() - radius;
		int zBiggest = pointLocation.getBlockZ() + radius;

		int zDifference = zBiggest - zLowest;

		xOffSet = getRandomNumberRange(0, (xDifference - 1));
		yOffSet = getRandomNumberRange(1, 250);
		zOffSet = getRandomNumberRange(0, (zDifference - 1));

		int x = xLowest + xOffSet, y = yOffSet, z = zLowest + zOffSet;

		return new Location(world, x, y, z);
	}