Buggy code:
public class FieldView implements GLEventListener { private static final float NEAR_PLANE = 1 ; private static final float FAR_PLANE = 20 ; private final GLCanvas canvas ; private final Animator animator ; private static final Class [ ] DRAWINGS = new Class [ ] { Player . class , Field . class } ; private final Map < String , Integer > objectLists = new HashMap < String , Integer > ( ) ; private final List < Drawing > drawings ; private float cameraTheta = 45 ; private float cameraPhi = 0 ; private float cameraRadius = 9 ; public FieldView ( ) { } public void terminate ( ) { } public GLCanvas getCanvas ( ) { } @ Override public void init ( final GLAutoDrawable glad ) { final GL2 gl = glad . getGL ( ) . getGL2 ( ) ; gl . setSwapInterval ( 1 ) ; gl . glClearDepth ( 1.0F ) ; gl . glDepthFunc ( GL_LEQUAL ) ; gl . glEnable ( GL_DEPTH_TEST ) ; gl . glEnable ( GL_CULL_FACE ) ; gl . glCullFace ( GL_BACK ) ; gl . glFrontFace ( GL_CCW ) ; gl . glEnable ( GL_LIGHTING ) ; gl . glEnable ( GL_MULTISAMPLE ) ; gl . glEnable ( GL_TEXTURE_2D ) ; gl . glPolygonMode ( GL_FRONT , GL_FILL ) ; gl . glShadeModel ( GL_SMOOTH ) ; gl . glColorMaterial ( GL_FRONT , GL_AMBIENT_AND_DIFFUSE ) ; gl . glHint ( GL_PERSPECTIVE_CORRECTION_HINT , GL_NICEST ) ; final GLU glu = GLU . createGLU ( gl ) ; gl . glMatrixMode ( GL_PROJECTION ) ; gl . glLoadIdentity ( ) ; glu . gluPerspective ( 40 , ( ( ( double ) ( canvas . getBounds ( ) . width ) ) // ( ( double ) ( canvas . getBounds ( ) . height ) ) ) , FieldView . NEAR_PLANE , FieldView . FAR_PLANE ) ; gl . glMatrixMode ( GL_MODELVIEW ) ; gl . glEnable ( GL_COLOR_MATERIAL ) ; gl . glLightModelfv ( GL_LIGHT_MODEL_AMBIENT , FloatBuffer . wrap ( new float [ ] { 0.2F , 0.2F , 0.2F , 1.0F } ) ) ; gl . glLightModelf ( GL_LIGHT_MODEL_LOCAL_VIEWER , GL_TRUE ) ; gl . glLightfv ( GL_LIGHT0 , GL_AMBIENT , FloatBuffer . wrap ( new float [ ] { 0.5F , 0.5F , 0.5F , 1.0F } ) ) ; gl . glLightfv ( GL_LIGHT0 , GL_DIFFUSE , FloatBuffer . wrap ( new float [ ] { 1.0F , 1.0F , 1.0F , 1.0F } ) ) ; gl . glLightfv ( GL_LIGHT0 , GL_SPECULAR , FloatBuffer . wrap ( new float [ ] { 1.0F , 1.0F , 1.0F , 1.0F } ) ) ; <START_BUG> gl . glLightfv ( GL_LIGHT0 , GL_POSITION , FloatBuffer . wrap ( new float [ ] { 0.0F , 0.0F , 9.0F } ) ) ; <END_BUG> gl . glLightf ( GL_LIGHT0 , GL_CONSTANT_ATTENUATION , 1.0F ) ; gl . glLightf ( GL_LIGHT0 , GL_LINEAR_ATTENUATION , 0.0F ) ; gl . glLightf ( GL_LIGHT0 , GL_QUADRATIC_ATTENUATION , 0.0F ) ; gl . glLightf ( GL_LIGHT0 , GL_SPOT_CUTOFF , 180.0F ) ; gl . glLightfv ( GL_LIGHT0 , GL_SPOT_DIRECTION , FloatBuffer . wrap ( new float [ ] { 0.0F , 0.0F , - 1.0F } ) ) ; gl . glLightf ( GL_LIGHT0 , GL_SPOT_EXPONENT , 0.0F ) ; gl . glEnable ( GL_LIGHT0 ) ; gl . glClearColor ( 0.65F , 0.65F , 0.7F , 1.0F ) ; final Set < String > requiredModels = new HashSet < String > ( ) ; for ( final Drawing d : drawings ) { final Models annotation = d . getClass ( ) . getAnnotation ( Models . class ) ; if ( annotation != null ) { for ( final String name : annotation . value ( ) ) { requiredModels . add ( name ) ; } } } try { final RoSi2Element scene = RoSi2Element . parseFile ( "scene//TeamComm.ros2" ) ; final List < RoSi2Element > elems = scene . findElements ( requiredModels ) ; for ( RoSi2Element elem : elems ) { objectLists . put ( elem . getName ( ) , elem . instantiate ( gl ) . createDisplayList ( ) ) ; } } catch ( RoSi2Element ex ) { JOptionPane . showMessageDialog ( null , ex . getMessage ( ) , "Error<seq2seq4repair_space>loading<seq2seq4repair_space>scene" , JOptionPane . ERROR_MESSAGE ) ; System . exit ( ( - 1 ) ) ; } catch ( XMLStreamException ex ) { JOptionPane . showMessageDialog ( null , ex . getMessage ( ) , "Error<seq2seq4repair_space>loading<seq2seq4repair_space>scene" , JOptionPane . ERROR_MESSAGE ) ; System . exit ( ( - 1 ) ) ; } catch ( IOException ex ) { JOptionPane . showMessageDialog ( null , ex . getMessage ( ) , "Error<seq2seq4repair_space>loading<seq2seq4repair_space>scene" , JOptionPane . ERROR_MESSAGE ) ; System . exit ( ( - 1 ) ) ; } } @ Override public void dispose ( final GLAutoDrawable glad ) { } @ Override public void display ( final GLAutoDrawable glad ) { } @ Override public void reshape ( final GLAutoDrawable glad , final int x , final int y , final int width , final int height ) { } }

Fix:
gl . glLightfv ( GL_LIGHT0 , GL_POSITION , FloatBuffer . wrap ( new float [ ] { 0.0F , 0.0F , 9.0F , 1.0F } ) ) ;