Buggy code:
public class MainGameLoop { public static void main ( String [ ] args ) { DisplayManager . createDisplay ( ) ; Loader loader = new Loader ( ) ; Camera camera = new Camera ( new Vector3f ( 400 , 5 , 500 ) ) ; Light light = new Light ( new Vector3f ( 3000 , 5000 , 3000 ) , new Vector3f ( 1 , 1 , 1 ) ) ; TerrainTexture backgroundTexture = new TerrainTexture ( loader . loadTexture ( "grassy" ) ) ; TerrainTexture rTexture = new TerrainTexture ( loader . loadTexture ( "dirt" ) ) ; TerrainTexture gTexture = new TerrainTexture ( loader . loadTexture ( "pinkFlowers" ) ) ; TerrainTexture bTexture = new TerrainTexture ( loader . loadTexture ( "path" ) ) ; TerrainTexturePack texturePack = new TerrainTexturePack ( backgroundTexture , rTexture , gTexture , bTexture ) ; TerrainTexture blendMap = new TerrainTexture ( loader . loadTexture ( "blendMap" ) ) ; <START_BUG> Terrain terrain = new Terrain ( 0 , ( - 1 ) , loader , texturePack , blendMap ) ; <END_BUG> ModelData data = OBJFileLoader . loadOBJ ( "tree" ) ; RawModel treeModel = loader . loadToVAO ( data . getVertices ( ) , data . getTextureCoords ( ) , data . getNormals ( ) , data . getIndices ( ) ) ; TexturedModel tree = new TexturedModel ( treeModel , new textures . ModelTexture ( loader . loadTexture ( "tree" ) ) ) ; data = OBJFileLoader . loadOBJ ( "lowPolyTree" ) ; RawModel lowPolyTreeModel = loader . loadToVAO ( data . getVertices ( ) , data . getTextureCoords ( ) , data . getNormals ( ) , data . getIndices ( ) ) ; TexturedModel lowPolyTree = new TexturedModel ( lowPolyTreeModel , new textures . ModelTexture ( loader . loadTexture ( "tree" ) ) ) ; data = OBJFileLoader . loadOBJ ( "grassModel" ) ; RawModel grassModel = loader . loadToVAO ( data . getVertices ( ) , data . getTextureCoords ( ) , data . getNormals ( ) , data . getIndices ( ) ) ; TexturedModel grass = new TexturedModel ( grassModel , new textures . ModelTexture ( loader . loadTexture ( "grassTexture" ) ) ) ; grass . getTexture ( ) . setHasTransparency ( true ) ; grass . getTexture ( ) . setUseFakeLighting ( true ) ; data = OBJFileLoader . loadOBJ ( "fern" ) ; RawModel fernModel = loader . loadToVAO ( data . getVertices ( ) , data . getTextureCoords ( ) , data . getNormals ( ) , data . getIndices ( ) ) ; TexturedModel fern = new TexturedModel ( fernModel , new textures . ModelTexture ( loader . loadTexture ( "fern" ) ) ) ; fern . getTexture ( ) . setHasTransparency ( true ) ; fern . getTexture ( ) . setUseFakeLighting ( true ) ; data = OBJFileLoader . loadOBJ ( "grassModel" ) ; RawModel flowerModel = loader . loadToVAO ( data . getVertices ( ) , data . getTextureCoords ( ) , data . getNormals ( ) , data . getIndices ( ) ) ; TexturedModel flower = new TexturedModel ( flowerModel , new textures . ModelTexture ( loader . loadTexture ( "flower" ) ) ) ; flower . getTexture ( ) . setHasTransparency ( true ) ; flower . getTexture ( ) . setUseFakeLighting ( true ) ; List < Entity > entities = new ArrayList < Entity > ( ) ; Random random = new Random ( ) ; for ( int i = 0 ; i < 500 ; i ++ ) { entities . add ( new Entity ( tree , new Vector3f ( ( ( random . nextFloat ( ) ) * 800 ) , 0 , ( ( random . nextFloat ( ) ) * 799 ) ) , 0 , 0 , 0 , 1 ) ) ; entities . add ( new Entity ( lowPolyTree , new Vector3f ( ( ( random . nextFloat ( ) ) * 800 ) , 0 , ( ( random . nextFloat ( ) ) * 799 ) ) , 0 , 0 , 0 , 1 ) ) ; entities . add ( new Entity ( grass , new Vector3f ( ( ( random . nextFloat ( ) ) * 800 ) , 0 , ( ( random . nextFloat ( ) ) * 799 ) ) , 0 , 0 , 0 , 1 ) ) ; entities . add ( new Entity ( flower , new Vector3f ( ( ( random . nextFloat ( ) ) * 800 ) , 0 , ( ( random . nextFloat ( ) ) * 799 ) ) , 0 , 0 , 0 , 0.6F ) ) ; } MasterRenderer renderer = new MasterRenderer ( ) ; while ( ( ! ( Display . isCloseRequested ( ) ) ) && ( ! ( Keyboard . isKeyDown ( KEY_ESCAPE ) ) ) ) { camera . move ( ) ; renderer . processTerrain ( terrain ) ; for ( Entity entity : entities ) { renderer . processEntity ( entity ) ; } renderer . render ( light , camera ) ; DisplayManager . updateDisplay ( ) ; } renderer . cleanUp ( ) ; loader . cleanUp ( ) ; DisplayManager . closeDisplay ( ) ; } }

Fix:
Terrain terrain = new Terrain ( 0 , 0 , loader , texturePack , blendMap ) ;