LWJGL/Slick Spawning objects/overlapping

Hey all java developers i am new to OpenGL and fairly ok in java its self but i cant figure this one out atm i have a for loop that keeps creating objects i want it to only create the needed objects once then stop but since its in the game loop it keeps repeating and at the moment theres nothing wrong with it because its a small area of blocks im spawning but if it does this on a larger scale terrain it will slow down FPS a hole lot here is the for loop in my game loop

for(int i = 0; i < 20; i++)
			{ 
				BlockID.add(i);
				BlocksCreated += i;
				System.out.println("BlockID["+i+"]");
				CubeObject.Spawn(i+2,0,0);
				CubeObject.Spawn(0,0,i+2);
				CubeObject.Spawn(0,i+2,0);
			}

EDIT: I forgot to add this befor this is my hole gameloop

public static void GameLoop()
	{
		Camera cam = new Camera(70,(float)Display.getWidth()/(float)Display.getHeight(),0.3f,1000);
		while(!Display.isCloseRequested())
		{
			cam.CameraMovmentInputs();
			DisplayHandler.ClearBuffers();
			cam.useView();
			for(int i = 0; i < 20; i+=2)
			{ 
				BlocksCreated++;
				BlockID.add(BlocksCreated);
				System.out.println("BlockID["+i+"]");
				CubeObject.dirtcracked.bind();
				CubeObject.Spawn(i+2,0,0);
				CubeObject.SpawnLine(i, 2);
				CubeObject.SpawnLine(i, 4);
				CubeObject.SpawnLine(i, 6);
				//CubeObject.grass.bind();
				//CubeObject.Spawn(0,0,i+2);
				//CubeObject.grassdead.bind();
				//CubeObject.Spawn(0,i+2,0);
			}
			
			Display.update();
		}
		
	}

the CubeObject.Spawn is basically a java file with vertex points and all i do is translate them and create a new instance of that object.
any help would be awesome :slight_smile: since im new advice would be great as well.
Thanks and sorry for my poor english