private List<Boolean> getRegionData(CoordXZ region) {
		List<Boolean> data = regionChunkExistence.get(region);
		if (data != null)
			return data;

		// data for the specified region isn't loaded yet, so init it as empty
		// and try to find the file and load the data
		data = new ArrayList<Boolean>(1024);
		for (int i = 0; i < 1024; i++) {
			data.add(Boolean.FALSE);
		}

		for (int i = 0; i < regionFiles.length; i++) {
			CoordXZ coord = regionFileCoordinates(i);
			// is this region file the one we're looking for?
			if (!coord.equals(region))
				continue;

			@SuppressWarnings("unused")
			int counter = 0;
			try {
				RandomAccessFile regionData = new RandomAccessFile(
						this.regionFile(i), "r");
				// first 4096 bytes of region file consists of 4-byte int
				// pointers to chunk data in the file (32*32 chunks = 1024; 1024
				// chunks * 4 bytes each = 4096)
				for (int j = 0; j < 1024; j++) {
					// if chunk pointer data is 0, chunk doesn't exist yet;
					// otherwise, it does
					if (regionData.readInt() != 0)
						data.set(j, true);
					counter++;
				}
				regionData.close();
			} catch (FileNotFoundException ex) {
				sendMessage("Error! Could not open region file to find generated chunks: "
						+ this.regionFile(i).getName());
			} catch (IOException ex) {
				sendMessage("Error! Could not read region file to find generated chunks: "
						+ this.regionFile(i).getName());
			}
		}
		regionChunkExistence.put(region, data);
		// testImage(region, data);
		return data;
	}