Skip to content

Instantly share code, notes, and snippets.

@Apollounknowndev
Created September 18, 2023 22:24
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Apollounknowndev/67ddc76d3d57f0c53ada25a8d562353d to your computer and use it in GitHub Desktop.
Save Apollounknowndev/67ddc76d3d57f0c53ada25a8d562353d to your computer and use it in GitHub Desktop.
Below y-55 with no lava

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.

The Holy Grail: Geodes

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment