Depth testing isn't working

Also,

@Override
public void init() throws Throwable {
	super.init();
	GL11.glClearColor(0.2f, 0.2f, 0.2f, 1);
	GL11.glClearDepth(1d);
	rootObject.init();
	
	GL11.glEnable(GL11.GL_DEPTH_TEST);
	
	ambient = new Program();
	ambient.attachShader((ShaderAsset)getLoader().getAsset("program-world-ambient-fs"));
	ambient.attachShader((ShaderAsset)getLoader().getAsset("program-world-ambient-vs"));
	ambient.link();
}

@Override
public void render() throws Throwable {
	super.render();
	GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT | GL11.GL_STENCIL_BUFFER_BIT);
	ambient.use();
	
	rootObject.render(ambient);
	
	GL11.glEnable(GL11.GL_BLEND);
	GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE);
	GL11.glDepthMask(false);
	GL11.glDepthFunc(GL11.GL_EQUAL);
	
	for(int i = 0; i < lights.size(); i++){
		lights.get(i).use();
		rootObject.render(lights.get(i).getProgram());
	}
	
	GL11.glDepthFunc(GL11.GL_LEQUAL);
	GL11.glDepthMask(true);
	GL11.glDisable(GL11.GL_BLEND);
}

Produces some wierd problems like this: