GlowstoneMC/Glowstone — pull request #471 by gratimax (2014-10-22 06:15:38+00:00)
Title: [WIP] World generator

Hey all. I've been working on a cleanroom world generator for Glowstone, and have made progress already. I'm in the process of refactoring the first foresty biome's code. Here's the latest progress:

(Both use Glowstone's current tree populators. I will most likely switch these out with some better ones)

Here's the primary goals I wish to do with this project:

1. Create a generator that feels familiar compared to the Minecraft generator. It should not be completely different.
2. Design a generator that improves on the Minecraft generator in some aspects like biome realism.
3. Write the generator 'nicely'. This means that it should be easy to read and easy to extend and modify.

A current goal is _NOT_ Minecraft generator emulation/compatibility. Seeds generated with this generator are very different from ones with the Minecraft generator. It is possible that later I can create a plugin that uses the Minecraft generator(although currently this is on very unstable legal ground).

This PR currently adds jlibnoise. I will soon probably completely change up this library to make it adhere more to java(and more awesome and fluent), and to serve as a better basis for a world generator. I will also probably program a simplex noise implementation in the jlibnoise library for faster noisemap generation.

I'm currently building a map of biomes based on [real-world biomes](http://www.ucmp.berkeley.edu/glossary/gloss5/biome/) based on temperature and humidity, similar to Minecraft. I will design it so that biomes are in about-equal proportions as opposed to the disproportionality of the default Minecraft biomes. This map will intersect with another low-frequency perlin noisemap to determine oceans and mountains. I have not yet decided how to do rivers or caves(but caves will most likely be done with the [perlin worms](http://libnoise.sourceforge.net/examples/worms/index.html) method).

If any of you wish to help out, I strongly recommend checking out this library: http://libnoise.sourceforge.net/. It's a C library for noise, but the documentation is absolutely outstanding. I would check out [the libnoise complex planet example](http://libnoise.sourceforge.net/examples/complexplanet/index.html) as well.