private Location getRandomLocation(String location)
			throws DestinationInvalidException {
		double random = Math.random();
		boolean above = false;
		int x, y, z;
		World world;

		// Will it be a positive or negative number
		if (random > 0.45D)
			above = true;
		else
			above = false;

		x = getRandomNumberRange(1, 10000);
		y = getRandomNumberRange(1, 250);
		z = getRandomNumberRange(1, 10000);

		if (!above) {
			// Make it a negative amount.
			x = x - (x * 2);
			z = z - (z * 2);
		}

		String worldName = location.replaceAll(".*\\(|\\).*", "");
		// No world given. Select random world
		if (worldName.trim().isEmpty() || !location.contains("(")
				|| !location.contains(")")) {
			List<World> worlds = plugin.getServer().getWorlds();

			int randomWorld = getRandomNumberRange(0, (worlds.size() - 1));
			world = worlds.get(randomWorld);
		} else {
			// World is specified. Search for world;

			if (plugin.getServer().getWorld(worldName) == null) {
				throw new DestinationInvalidException("World '" + worldName
						+ "' for '" + location + "' does not exist!");
			}

			world = plugin.getServer().getWorld(worldName);
		}

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