Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* delete packages `cn.nukkit.level.generator` and `cn.nukkit.level.biome` * add some base generator interfaces temp commit because i have to go and will need to access from home when i get there * allow generators to define a custom selection of chunks for population * add a basic superflat generator customization will come later * make the server be able to build and start again generation actually works now, as does the demo superflat generator! also added a void generator for empty worlds. * add tasks for generation and population, theoretically population should partially work now * redo `NukkitRandom` to make it be not bad, and eliminate dozens of unneeded `NukkitRandom` allocations by using `ThreadLocalRandom` * begin to implement a `ChunkManager` for population * attempt to use population chunk manager, it's broken though... this is probably the same bug that's been causing cut off trees in nukkit and pmmp for years * debug temp commit * totally remove NukkitRandom and remove all usages of BedrockRandom also add a dependency on porklib:random * since we now can save all chunks, we can make this a lot cleaner * crash when an invalid generator is configured * make chunks completely unobtainable unless they and all of their neighbors have been populated * avoid useless array allocation * implement superflat presets * initial commit for standard generator * population chunks are always 3x3 * initial block replacer interface * load block replacers from registry * begin working on a noise generator registry as well * add a biome implementation * we can now generate a world with surfaces * interpolate density values * be able to use `BiomeMap` to actually select biomes * add populator registry as well this should nearly mark the end of the api stuff * add "decorators" (basically populators, except at generation time) * add simple tree populator * make a system for matching an arbitrary number of block types with one option * make biome dictionary only contain IDs, everything else should be separate * add simple surface decorator * minor refactor (BlockMatcher to BlockFilter, add separate BlockMatcher interface) * add block layers (i'll probably have to remove this again shortly) * begin migrating to jackson for loading generator config hopefully this will be cleaner... * okay this is a hell of a lot cleaner! begin porting everything to jackson * everything except noise generation has now been ported to jackson * noise generation loads with jackson now as well * allow overriding the local seed generation to ensure consistency * theoretically be able to define biome-specific generation passes now i need to figure out how to these should be configured * actually implement biome-specific generation passes * prepare to implement vanilla noise * actually implement vanilla noise * fix up biome generation heights * break some stuff * theoretically make biome surface now be done using a block replacer instead of a decorator however, gradients appear to be quite broken * remove block replacers, because they add a lot of extra load for very little benefit (can be implemented better as decorator) * make surfaces be generated using a decorator again, but this time do it correctly * implement basic tall grass populator and a block selection mechanism * fix build * set name in LevelConverter * implement vanilla-style flower generation * make trees look nicer and add double plants * begin working on implementing a decent biome selector * temp commit * implement biome selection zoom filter * work on implementing more biome selection filters * stop trying to skid from vanilla and actually implement this myself, and it looks way better * try and fail to make rivers * something is very broken... strange artifacting along axes, doesn't seem to make any sense * fix biome selection artifacts when sampling at low resolutions * try to fix biome generation heights part 1 * try to fix biome generation heights part 2 * revert previous changes * okay now i think i'm on the right track to fixing biome elevations * ores * allow biomes to inherit from each other * partially clean up trees * re-implement population around protocol-lib changed levelchunkmanager stuff * fix build * spruce trees * partially make extreme hills ground cover correct * rename filtered to complex * make biome selection a lot like vanilla (part 1) * make biome selection a lot like vanilla (part 2) * make biome selection a lot like vanilla (part 3) this next commit will be fun... or something. * make biome selection a lot like vanilla (part 4) it wasn't as bad as expected, i guess * make biome selection a lot like vanilla (part 5) * make biome selection a lot like vanilla (part 6) this is just about done! the only thing that remains to be finalized is adding all the biome mutations, which will require me to implement them first. * fully implement mushroom island and mushroom island shore * fully implement (frozen) river, (frozen) ocean, deep ocean although they still lack newer features such as seaweed * fully implement beach, stone beach, cold beach, fix generation of extreme hills and variants * fully implement ice plains, ice plains spikes, ice mountains, fix generation of plains and sunflower plains also make decorators all be populators as well * fully implement (cold) taiga, (cold) taiga hills, (cold) taiga m * fully implement mega taiga (hills), redwood taiga (hills) also optimize tree generation quite a bit and make noise selection decorators/populators have a range with separate options for above and below * convert biome height variation from vanilla correctly * fully implement swampland (hills) * fully implement (flower) forest (hills), (tall) birch forest (hills) * fully implement roofed forest (hills) * fully implement (mutated) jungle (hills) * fully implement (mutated) desert (hills) * fully implement (mutated) savanna (plateau) also fix noise to make it use simplex instead of perlin * fully implement (mutated) mesa (plateau) also revert back to using perlin noise * add all biomes to overworld biome selector and finalize overworld preset * add fallen trees * make populators be per-block rather than per-chunk (part 1) * make populators be per-block rather than per-chunk (part 2) * some minor things - all icy biomes should generate frozen river, not just ice plains - icy biomes should also freeze water in them - add a description of how the overworld density scale values are calculated * try to implement end noise generation * something something end terrain doesn't like me * this kind of almost works... * finalize end density generation * add basic nether density source * finalize nether terrain * mostly finalize end terrain * add water/lava lakes * fix generation frequency of shrubs * partially fix empty chunks * fix empty chunks for good * clean up+optimize chunk heightmap stuff somewhat and optimize chunk locking now the heightmap not actually updated anywhere, which is arguably bad, but it wasn't actually used correctly anyway * make the default preset be correct * make generation+population a lot faster by caching biomes one chunk at a time rather than each block * make density sources generate entire swaths at a time this will make it possible to vectorize the entire thing later once https://openjdk.java.net/jeps/338 is released * make biomes actually have their own registry and eliminate "biome dictionaries" * implement "finish" pass for standard generator * fix ice/snow generation by actually using finishers correctly * stop randomly switching between the seed in config and the seed in level.dat seriously, level loading is totally broken * add an amplified preset * add optimized swath implementations for overworld and end density sources * make ice/snow generation altitude-based * fix up most of the TODOs * bake generation pass arrays once at the beginning, and use int keys in the map also fix vine generation in jungles * fix worlds config in default nukkit.yml * make property naming more consistent * reformat * don't generate surface blocks one block below sea level
- Loading branch information