Bukkit/CraftBukkit — pull request #1364 by hoqhuuep (2014-04-17 06:53:24+00:00)
Title: [B+C] Biome distribution for world generation. Adds BUKKIT-5544

## The Issue:
No way to influence biome distribution of vanilla world generation.

## Justification for this PR:
Implements the desired feature from BUKKIT-5544. Does not require changes to new NMS classes. Works very similar to ChunkGenerators so interface is familiar to users.

## PR Breakdown:
BiomeGenerator's behave for the most part just like ChunkGenerator's. They are stored in the same places. They are created by querying a plugin. They are specified by the user in bukkit.yml.

The biggest addition to CB is the CustomWorldChunkManager which extends the NMS class WorldChunkManager. This new class is used in place of the NMS one only if a BiomeGenerator plugin is being used. Therefore there should be no significant effect on servers which are not using this new feature. The implementation of CustomWorldChunkManager is largely inspired by that of the NMS one, only it allows a BiomeGenerator to be passed as a parameter to the constructor to change the biome distribution.

Big changes to Bukkit are the new abstract class BiomeGenerator which is used much like a ChunkGenerator. And there is a new method (getDefaultBiomeGenerator) on Plugin which users can override to install their BiomeGenerator, again much like ChunkGenerator.

## Testing Results and Materials:
Ran server with modifications but without changing any settings. World generation was unaffected.

Ran server with modifications and added a biome-generator to bukkit.yml for default world. Biome distribution was modified as specified in my test biome-generator (link coming).

## Relevant PR(s):
CraftBukkit PR (this PR)
Bukkit PR (link coming)

## JIRA Ticket:
https://bukkit.atlassian.net/browse/BUKKIT-5544