Bukkit has 157 generator plugins. Do you really want to include 150 generators in mcserver? We can write a c++ interface that would cost the same in runtime as the current generators using shared objects. But then we would need a versioning system because miss matched c++ vtables are nasty.
The question is, are all of those 150+ generator plugins true rewrites of the generator, or do they only change some constants in the default generator, or add some rare contents? I believe most of them would work well enough within our current API.
If we needed really performant Lua generators, the proper way to go would be to write a set of C++ classes that handle the 2D and 3D arrays of NOISE_DATATYPE, and operations with them - GeneratePerlin, Multiply, Add, Threshold, etc. This way the calculation-heavy code will be in C++ while the plugins will still have the chance to use it.
I tried doing that with the c++ generators a while back and it turns out most of the generators have weird control flow that makes it difficult to express generators as a set of maps of the chunk data. However if we do go down that route it would make GPU generators a lot easier.
Yeah, they do that, and I haven't thought of a way to fix this yet. Even more spectacular when a lava lake does that

We can say its a geyser, so its a feature.
World generation = art, and art is always never wrong!
Geyser underground, yeah right

And flowing downwards

First attempt at village generator: Not so great.
![[Image: village1.jpg]](http://mc-server.xoft.cz/img/village1.jpg)
That is actually a pretty good start! Just need to fix the height...
Hmm, I go from extreme to extreme. My first village attempt had exactly 4 houses. My second village has a zillion houses:
![[Image: village2.png]](http://mc-server.xoft.cz/img/village2.png)
But at least the general shape of the roads and house placement is kinda okay, this should be possible to tweak into something useful.