OK, I fiddled with the code a bit. It seems that these lines in the end are the cause of the problem: myReliefmap = getRescaledReliefmap(myReliefmap, heightRange.min, heightRange.max); // This is risky since it might bring players on another height! setReliefmap(myReliefmap); You basically lower the grounds where there are trees into the water area. Your placers and constraints are working properly. I commented them out, deleted the extra "setReliefmap(myReliefmap);" in other parts of the code, and it worked. It seems that you should change the way you generate the map a bit to fix it.