private void produceHumidity() {
		Perlin noise = new Perlin();
		try { noise.setOctaveCount(octaves); } catch (Exception e) {e.printStackTrace();}
		noise.setFrequency(frequency);
		noise.setSeed(seed);
		
		if (details) System.out.println("Noise produced.");
		
		int dimx = MyzoGEN.DIMENSION_X * chunksX;
		int dimy = MyzoGEN.DIMENSION_Y * chunksY;
		NoiseMap tempMap = null;
		try {
			tempMap = new NoiseMap(dimx, dimy);
			NoiseMapBuilderPlane builder = new NoiseMapBuilderPlane();
			builder.setSourceModule(noise);
			builder.setDestNoiseMap(tempMap);
            builder.setDestSize(dimx, dimy);
            builder.setBounds(0, chunksX * 4, 0, chunksY*4);
            builder.build();
		} catch (Exception e) {e.printStackTrace();}
		
		for (int ii = 0; ii < dimx; ii++) {
			for (int jj = 0; jj < dimy; jj++) {
				MyzoGEN.getOutput().setHumidity(new Point(ii, jj), Utils.roundToDecimals(tempMap.getValue(ii, jj), 4));
			}
		}
		
		if (ioflags.SAVE) {
			ImageCafe image = null;
			try {
	            RendererImage render = new RendererImage();
	            image = new ImageCafe(dimx, dimy);
	            render.setSourceNoiseMap(tempMap);
	            render.setDestImage(image);
	            render.clearGradient();
	            Gradient gradient = new Gradient("humidity");
	            for (int i = 0; i < gradient.gradientPoints.length; i++) {
	            	render.addGradientPoint(gradient.gradientPoints[i], gradient.gradientColors[i]);
	            }
	            render.render();
	        } catch (ExceptionInvalidParam ex) {
	            ex.printStackTrace();
	        }
			
			BufferedImage im = Utils.imageCafeToBufferedImage(dimx, dimy, image);
			
			Utils.saveImage(im, "output/"+name+"/overviews/humidity_overview.png");
			
			if (details) System.out.println("Humidity overview produced. It can be found in: output/"+name+"/overviews/");
		}
	}