In 1.18 there is a bug that forces lava to generate below either -55 or the sea level (whichever is lower), and the only ways to get around this up to this point required spamming features. This new method does not require this, and is 100% consistent.
Geodes have interesting properties compared to other feature types.
- Geodes can skip replacing certain blocks without the entire feature being terminated
- Geodes dont have hardcoded checks like some other more restrictive features, the only check they do do is easily bypassed
- The min/max distance from the center a geode generates is configurable (with min and max being separate fields)
- Geodes can replace ALL blocks. Air, water, and lava included.
Using this, we can configure a geode feature to generate a 16x16x16 cube of air that only replaces lava.
{
"type": "minecraft:geode",
"config": {
"blocks": {
"filling_provider": {
"type": "minecraft:simple_state_provider",
"state": {
"Name": "minecraft:air"
}
},
"inner_layer_provider": {
"type": "minecraft:simple_state_provider",
"state": {
"Name": "minecraft:air"
}
},
"alternate_inner_layer_provider": {
"type": "minecraft:simple_state_provider",
"state": {
"Name": "minecraft:air"
}
},
"middle_layer_provider": {
"type": "minecraft:simple_state_provider",
"state": {
"Name": "minecraft:air"
}
},
"outer_layer_provider": {
"type": "minecraft:simple_state_provider",
"state": {
"Name": "minecraft:air"
}
},
"inner_placements": [
{
"Name": "minecraft:air"
}
],
"cannot_replace": "#depths:everything_but_lava",
"invalid_blocks": "#minecraft:geode_invalid_blocks"
},
"layers": {
"filling": 25,
"inner_layer": 25,
"middle_layer": 25,
"outer_layer": 25
},
"crack": {
"generate_crack_chance": 0
},
"noise_multiplier": 0.0,
"use_potential_placements_chance": 0.35,
"use_alternate_layer0_chance": 0.083,
"placements_require_layer0_alternate": true,
"outer_wall_distance": 1,
"distribution_points": 5,
"point_offset": 0,
"min_gen_offset": 0,
"max_gen_offset": 15,
"invalid_blocks_threshold": 999
}
}
For each 16 layers of lava that need to be removed, one placed feature is needed. For example, this placed feature will remove all lava from -64 to -48:
{
"feature": "depths:lava_remover",
"placement": [
{
"type": "minecraft:height_range",
"height": {
"absolute": -64
}
}
]
}
Since the geode is configured to have a min_gen_offset
of 0 and a max_gen_offset
of 15, the feature doesnt need to be moved on the x/z axis at all: it already fills the whole chunk.
All that's needed is for every biome in the dimension (presumably the Overworld) to reference the placed feature and tada! No more lava.
This can in theory be extended down infinitely, all the way to y -2032.