OpenCubicChunks / CubicWorldGen

Customizable CubicChunks world generation
MIT License
54 stars 23 forks source link

CustomCubic: Lava in caves #27

Open Barteks2x opened 7 years ago

Barteks2x commented 7 years ago

Currently caves have no lava.

What would be a good way to implement it that woudln't make all caves below a certain point always completely filled with lava?

ghost commented 7 years ago

Maybe air blocks could stop generating at or below a certain chunk Y level and be replaced with lava.

I think it would also be more realistic to add an option to generate all blocks below a certain point as lava.

Something like a possible solution: if (cube.coords.getY() > maxLavaGenCubeY) { generateChunk(arguments); /*(?)*/ } else { generateWithLava(arguments); /*(?)*/ }

Barteks2x commented 7 years ago

The problem with just filling everything below certain level with lava is that such caves would be almost useless. Noone would ever dig there.. So it might just as well not exist.

Quizer9O8 commented 7 years ago

Just make lava appear at -256. This will make it reasonable and a challenge to get that deep. As long as there is a config to control at which level lava will appear

BaccarWozat commented 7 years ago

Magma tables usually start a few kilometers down at least (the geological survey pages I've read say 8-16km). And that's not continuous, just in certain areas (usually under volcanoes).

Then there is the inevitable bedrock depth, which varies even more. I'm not advocating having entire layers of it, but perhaps a small amount in some places, far enough down that one isn't going to have one's build ruined by it, and able to be dug around. Maybe 10-15km.

Another possibility would be to run something like the Deeper Caves mod, which has all kinds of terrain gen at different "depths". It might be possible to adapt it to CC, but it does involve some structures on one level so maybe not.

Quizer9O8 commented 7 years ago

RTG does spawn in mega structures like volcanoes. These lava tubes will reach all the way to bedrock in Vanilla. This would be an easy way to get your lava from the surface instead of digging down. Maybe it's time to make RTG compatible with CC?

ghost commented 7 years ago

Another idea: Before the lava level, or the bottom of the world's crust, bedrock could spawn like dirt, in large boulders.

Maybe netherrack, and magma blocks would spawn that way below lava level.

These are just ideas, I am not going to immediately attempt to find an implementation for them.

Barteks2x commented 7 years ago

My general idea was to have individual cave systems more and more filled with lava as you go deeper. The only real issue with that is cave intersections. There is no way to know for sure where one cave intersects another while generating them (at least not at chunk boundaries).

The goal of CustomCubic terrain generator isn't to have realizstic world generation. It's supposed to be mostly port of vanilla, with some enchancements to make it a bit less annoying with cubic chunks (like changing the way lava generates).

ghost commented 7 years ago

Maybe random points on air blocks that become more frequent at lower levels could spread lava, creating separate points on all sides but the top that spread until they reach a solid block. After they have spread, they would delete themselves but leave the lava. If the next chunk was not loaded, maybe a boolean in the object would be set to true, preventing them from spreading and maybe checking the chunks around them whenever a chunk loads. (edited. I meant "load", not "generate".)

Barteks2x commented 7 years ago

What if such point generates around already generated but not currently loaded chunks?

ghost commented 7 years ago

I am not sure if this would work or not, but maybe there could be a place where the Nether generates as a cubic biome. Maybe it could also be in smaller caverns, but I like the idea of looking into a seemingly endless pit of scorched rock with lava pouring into it. One thing that could help with a solution for the lava problem in the Nether could be adding lava lakes.

Barteks2x commented 7 years ago

This should be done as separate mod, not cubic chunks.

MrEldritch commented 6 years ago

What about having lava spawn sort of like ores, in "blobs" or "pockets"? So instead of simply replacing all air with lava below Y = 11, you would have this patchy, three-dimensional swiss-cheesy kind of imaginary volume from bedrock to Y = 11 (or wherever the user sets the "lava level") that acts like a mask, replacing air inside the volume with lava and leaving air outside the volume untouched.

You could even have the density of lava vs air increase as you move below the lava generation ceiling to the bottom of the world, so you start out as mostly-air with big puddles of lava fill and transitioning to mostly-lava with occasional air pockets. Kind of like this structure: image

Barteks2x commented 6 years ago

The problem with that is that in general it's hard to make the transitions work reasonably... Minecraft not really dealing with updating liquids placed in the early generation step doesn't help.

GeorgeTR1 commented 6 years ago

In my experience, the generation of water lakes in caves works just fine. Lava lakes also do generate on occasion, but they are just as rare as lava lakes on the surface. Couldn't you make all water lakes below y=11 (or whatever layer) have a 50% chance of being filled with lava instead? Or would this not work because of what would happen if a lava lake and a water lake intersected?

Barteks2x commented 6 years ago

Lava lakes are nowhere near the same thing.

ghost commented 6 years ago

I would like to have the deepest of depths still be survival-friendly. In other words, have a decent part of the caves still workable. Perhaps having the floor of more and more caves have lava in them, making it worth it to explore them if the player has a water bucket handy.

muzikbike commented 5 years ago

Can lava be removed from ravines for the time being? I find the generation to sometimes be buggy when intersecting caves and it also can't be configured to be off.