private void produceTrees() {
		BufferedImage treesImage = null;
		if (ioflags.SAVE)
			treesImage = new BufferedImage(chunksX * MyzoGEN.DIMENSION_X, chunksY * MyzoGEN.DIMENSION_Y, BufferedImage.TYPE_INT_ARGB);
		
		Random rnd = new Random();
		int dimx = MyzoGEN.DIMENSION_X * chunksX;
		int dimy = MyzoGEN.DIMENSION_Y * chunksY;
		for (int x = 0; x < dimx; x++) {
			for (int y = 0; y < dimy; y++) {
				Tile tile = MyzoGEN.getOutput().getTile(new Point(x, y));
				if (tile != null && !tile.river && tile.tile != Tiles.WATER) {
					int chance = 0;
					if (tile.biome == Biomes.DESERT) {
						chance = 1;
					} else if (tile.biome == Biomes.SAVANNAH) {
						chance = 4;
					} else {
						chance = tile.isForestArea ? baseChanceForest : baseChanceNonForest;
						if (tile.origin.x == 670 && tile.origin.y == 95)
							System.out.println("Non forest area base chance: "+chance);
						else if (tile.origin.x == 628 && tile.origin.y == 119)
							System.out.println("Forest area base chance: "+chance);
						chance += Biomes.getVegetationModifier(tile.biome);
					}
					
					if (rnd.nextInt(100) < chance) {
						tile.object = new gTree();
						
						if (ioflags.SAVE)
							treesImage.setRGB(x, y, new Color(0, 255, 0, 255).getRGB());
					}
				}
			}
		}
		
		if (ioflags.SAVE && treesImage != null) {
			Utils.saveImage(treesImage, "output/"+name+"/overviews/trees_overview.png");
			if (details) System.out.println("Trees overview produced. It can be found in: output/"+name+"/overviews/");
		}
	}