private void newLevel() {
		msg.setMessage("Level " + level, 750);
		int spawns = (int) (level * 5.5);
		int maxRockSize = 30 - level;
		if(maxRockSize < 10)
			maxRockSize = 10;
		float minSpeed = 0.1f;
		float speedMultiplier = level*0.05f + 0.1f;
	
		Random r = new Random();
		
		//spawns
		for (int s = 0; s < spawns; s++) {
			//polygon making
			int size = r.nextInt(4) + 3;
			Polygon p = new Polygon();
			double rad;
			for(int i=0; i<size; i++){
				rad = Math.PI * 2 * ((double)(i+1)/size);
				int xMod = r.nextInt(maxRockSize/2) - maxRockSize/4;
				int yMod = r.nextInt(maxRockSize/2) - maxRockSize/4;
				xMod += xMod>0?4:-4;
				yMod += yMod>0?4:-4;
				//circular placement + modification to make it look less neat
				int x = (int) (Math.cos(rad) * maxRockSize) + xMod;
				int y = (int) (Math.sin(rad) * maxRockSize) + yMod;
				p.addPoint(x, y);
			}
			p.addPoint(p.xpoints[0], p.ypoints[0]);
			//puts coordinate start at 0, 0
			p.translate(-p.getBounds().x, -p.getBounds().y);
			
			//spawn at a wall
			int x, y;
			switch(r.nextInt(4)){
			case 0:
				x = (int)(Main.WIDTH*r.nextDouble());
				y = Main.HEIGHT;
				break;
			case 1:
				x = (int)(Main.WIDTH*r.nextDouble());
				y = -p.getBounds().height;
				break;
			case 2:
				x = Main.WIDTH;
				y = (int)(Main.HEIGHT*r.nextDouble());
				break;
			default:
				x = -p.getBounds().width;
				y = (int)(Main.HEIGHT*r.nextDouble());
			}
			
			//adds
			rocks.add(new Rock(p, x, y, minSpeed + r.nextFloat()*speedMultiplier, (float) (2 * Math.PI * r.nextDouble())));
		}
	}