public WorldTrimTask(Server theServer, Player player, String worldName,
			int trimDistance, int chunksPerRun) {
		this.server = theServer;
		this.notifyPlayer = player;
		this.chunksPerRun = chunksPerRun;

		this.world = server.getWorld(worldName);
		if (this.world == null) {
			if (worldName.isEmpty())
				sendMessage("You must specify a world!");
			else
				sendMessage("World \"" + worldName + "\" not found!");
			this.stop();
			return;
		}

		this.border = (Config.Border(worldName) == null) ? null : Config
				.Border(worldName).copy();
		if (this.border == null) {
			sendMessage("No border found for world \"" + worldName + "\"!");
			this.stop();
			return;
		}

		this.border.setRadiusX(border.getRadiusX() + trimDistance);
		this.border.setRadiusZ(border.getRadiusZ() + trimDistance);

		worldData = WorldFileData.create(world, notifyPlayer);
		if (worldData == null) {
			this.stop();
			return;
		}

		// each region file covers up to 1024 chunks; with all operations we
		// might need to do, let's figure 3X that
		this.reportTarget = worldData.regionFileCount() * 3072;

		// queue up the first file
		if (!nextFile())
			return;

		this.readyToGo = true;
	}