Hey hey, I am currently working on lights. I am only starting to get a basic understanding of them. And I still have to learn the mathematics behind them.
But I've come far (in my eyes atleast), I've created a light source, and defined it's "length" if you would. And also I have positioned it.
light.setParams(GL_POSITION, new Vector4f(lightPos.x, lightPos.y + 0.5f, lightPos.z, 1f));
glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 180);
glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 2f);
glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1.5f);
glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.5f);
glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.2f);
Thoose are my calls. and light.setParams is basically glLightf, but it creates a bytebuffer and converts it to a floatbuffer.

This is the output, the light source is approximately in the middle of the house, one "block/square" is 1f.
As you can see the light is leaking outside the house through the wall. And again since I haven't read up on the mathematics for this lighting process I wouldn't know what caused this.
So my question becomes, is there anyway to stop the light from leaking outside my solid primitives? I have a normal for each of the 6 faces in each "block/square".