If you have a completely open sandbox game, griefing shouldn't be a problem, your players should always have access to a solution which should solve the problem. For example, if there is a guy blocking a doorway and nobody can get through, do your players have to tools to move him? To kill him? Teleport him somewhere else?
If not then you may need some kind of moderation where he can be reported and a 'power player' who may have the power to do something about it.
Eve Online is a good example, there is very low moderation and this actively encourages piracy and villainy (you can see some of their exploits on YouTube) however the Corporations in the game can always take steps to deal with them, if they get too big. So the problem never gets out of hand.
I agree with Inferiarum, your players should be well rewarded for playing together and completing goals. If the reward for killing 500 monsters is a teleport scroll, you have just solved the griefing problem, no? Lets say a greifer gets hold of a teleport scroll, he blasts you away to another continent - then what? He has only trolled one person out of however-many completed the 500 monster kill quest.
However, cheating, by using glitches, scripts, aimbots etc is something entirely different and is much harder to deal with.
If you have a grid (say 50x50) and 10 land types (eg tree, grass, bush, water) etc
Drop a random 'seed' items at each corner (0,0 50,0 0,50 and 50,50)
This is the starting-point for the iterative subdivision routine, which is in two steps:
The diamond step: Taking a square of four points, generate a random value at the square midpoint, where the two diagonals meet. The midpoint value is calculated by averaging the four corner values, plus a random amount. This gives you diamonds when you have multiple squares arranged in a grid. The square step: Taking each diamond of four points, generate a random value at the center of the diamond. Calculate the midpoint value by averaging the corner values, plus a random amount generated in the same range as used for the diamond step. This gives you squares again.
This web site explains it
Instead of assigning height values, you are assigning terrain types. The types would logically follow on from each other, so 0 might be grass, 1 might be a small bush, 2 a large bush, 3 a tree, 4 a tree in water, 5 a swamp, 6 water etc. Then when you generate your map you would have patches of similar terrain eg a forest surrounded by bushes, a lake surrounded by marsh etc
So you would end up with something like this but instead of a height map, a terrain map
The old 8-bit games used bitmaps representing a wall from every different view. The image on screen is then pasted together, using these pre-drawn walls, to give a 3d image. Enemies, items etc are scaled depending on how far away they are from the player. More modern games use a 3d engine which just replicates the view, but in real 3d. My own game uses 3d blocks which are placed within a level to make a maze. However movement is restricted to 1 unit 'steps' and the view is restricted to 90 degree views, making it 'feel' like an old-school game, even though there is no reason why you couldn't run around the maze and view it from any angle.