Per Biome Control of Caves and Canyons
SamTewksbury opened this issue ยท 6 comments
It would be nice to have per biome control of caves and canyons. Either adding a dedicated section in the BiomeConfig file that has the same options as currently found in the WorldConfig or adding them to the resource section using something like Cave() and Canyon() as an example.
Rutgerkok - That makes sense. Do ores work the same way as caves - with no graceful transition between biomes?
To expand on why I suggested this - currently, the cave generator will, on its default settings, generate a large number of caves that break the surface. This is not desirable in many cases, especially when trying to replicate more realistic terrains. To avoid this, I generally set the max height for cave generation to 8 blocks below "sea level". However, in a mountainous region I might want caves going all the way up to max height. I've seen people try to work around this by using CustomHeightControl, but when I've tried this, I always end up with issues with biome transitions and the "caves" created using that method are usually much larger than I want.
I'd be willing to slap a border on a biome to hide any bad cave transitions if it meant I could have regular caves at different heights.
Nice idea, but the generator makes caves before the biome layer is applied to the terrain.
That seems odd to me, although I am sure there is a perfectly good reason for the order of generation.
However, even if the normal caves and canyons are created before the biome is applied, by adding a Cave() and Canyon() function to the resource queue the map maker could still have much more control over their generation.
Actually, the biomes are calculated before the cave generator is called (see generate(x,z) in ChunkProviderTC). Theoretically, I could read the cave settings from the biomes.
However, cave generation operates on a chunk level while biomes operate on a column level. No transition would be made between caves of one biome to another, which would look very ugly.