public ResourceGrid(int width, int height, int voxel_size) {
		super(width, height, voxel_size);

		resource_density = new int[voxels.length][voxels[0].length];
		locked = new boolean[voxels.length][voxels[0].length];
		avoid_resources = new HeightMapGradient(width, height, voxel_size);

		clumps = new LinkedList<ResourceClump>();

		for (int i = 0; i < voxels.length; i++) {
			for (int j = 0; j < voxels[i].length; j++) {
				voxels[i][j] = 0;
			}
		}

		for (int x = 0; x < width; x += width / 5) {
			for (int y = 0; y < height; y += height / 5) {
				int cx = (int) (Math.random() * width / 5 + x);
				int cy = (int) (Math.random() * height / 5 + y);
				int radius = (int) (height / 10);
				clumps.add(new ResourceClump(cx, cy, radius, FOOD));
			}
		}

		for (int i = 0; i < 3; i++) {
			int cx = (int) (Math.random() * width);
			int cy = (int) (Math.random() * height);
			int radius = (int) (100 + Math.random() * 50);
			clearCircle(cx, cy, radius);
		}

		int cx = (int) (width / 2);
		int cy = (int) (height / 2);
		int radius = (int) (100 + Math.random() * 50);
		clearCircle(cx, cy, radius);

		for (int i = 0; i < 6; i++) {
			cx = (int) (Math.random() * width);
			cy = (int) (Math.random() * height);
			radius = (int) (50 + Math.random() * 50);
			clumps.add(new ResourceClump(cx, cy, radius, MINERALS));
		}

		Iterator<ResourceClump> clumpit = clumps.iterator();
		while (clumpit.hasNext()) {
			ResourceClump c = clumpit.next();
			if (c.num_voxels < 1) {
				c.removeForce();
				clumpit.remove();
			}
		}
	}