Feature generation/1.19.3-0.3
This page covers Voluminous Energy's feature generation for 1.19.3 (0.3 and 0.4), 1.19.4, 1.20 and 1.20.1 (0.4). The world generation data is identical in all of these releases. For the 0.5 train, see 0.5 Alpha 1 and 0.5 Alpha 2.
Technical background
Starting in 1.19.3 dynamic registries are no longer conventionally done in code and must be done in JSON files (ignoring datagen). This means that mods shouldn't really have ConfiguredFeature<?,?> or PlacedFeature objects anymore as a part of their codebase as it should be done data-driven in JSON files.
Voluminous Energy has moved all its configured features to JSON files under /worldgen/configured_feature. While placed features should similarly go under their respective folder in worldgen, Voluminous Energy exclusively relies on its VEAndedMultiBiomeModifier to dynamically generate PlacedFeature objects at runtime. Though, this may be considered bad practice since these placement objects aren't registered. Despite this, they still work when injected into biomes when Forge runs Biome Modifiers.
All of this data can be overridden with a datapack using the same file paths.
Biome modifiers
Reading the biome modifier table
Each biome modifier is a JSON file in data/voluminousenergy/forge/biome_modifier/ using Voluminous Energy's anded_biome_modifier:
- Whitelisted biome tags: a biome must be in every listed tag.
- Blacklisted biome tags: a biome in any listed tag is skipped.
- Count: placement attempts per chunk.
- Rarity: each attempt only goes ahead on average once every rarity chunks. 0 and 1 both mean every time.
- Triangular placement: if enabled, heights between the anchors are biased towards the middle of the range, as with vanilla's diamond and redstone. Otherwise they are uniform.
- Bottom/Top anchor: absolute Y levels.
| JSON entry | Feature | Whitelisted biome tags (all required) | Blacklisted biome tags (any excludes) | Triangular placement | Count | Bottom anchor | Top anchor | Rarity | Generation step |
|---|---|---|---|---|---|---|---|---|---|
bauxite_deposit_overworld | voluminousenergy:bauxite_deposit | minecraft:is_overworld | None | Yes | 1 | 10 | 60 | 64 | Underground Decoration |
bauxite_ore_beach | voluminousenergy:bauxite_ore_blob | minecraft:is_beach | None | Yes | 8 | 62 | 92 | 0 | Underground Ores |
bauxite_ore_mountain_high | voluminousenergy:bauxite_ore_blob | minecraft:is_mountain | forge:is_snowy | Yes | 9 | 208 | 256 | 0 | Underground Ores |
bauxite_ore_mountain_low | voluminousenergy:bauxite_ore_blob | minecraft:is_mountain | forge:is_snowy | Yes | 10 | 96 | 140 | 0 | Underground Ores |
bauxite_ore_mountain_medium | voluminousenergy:bauxite_ore_blob | minecraft:is_mountain | forge:is_snowy | Yes | 6 | 144 | 196 | 0 | Underground Ores |
bauxite_ore_overworld | voluminousenergy:bauxite_ore_blob | minecraft:is_overworld | None | No | 10 | 10 | 60 | 0 | Underground Ores |
cinnabar_deposit_overworld | voluminousenergy:cinnabar_deposit | minecraft:is_overworld | None | Yes | 1 | -64 | 320 | 56 | Underground Decoration |
cinnabar_ore_beach | voluminousenergy:cinnabar_ore_blob | minecraft:is_beach | None | Yes | 2 | 62 | 92 | 1 | Underground Ores |
cinnabar_ore_mountains | voluminousenergy:cinnabar_ore_blob | minecraft:is_mountain | None | Yes | 7 | 102 | 292 | 0 | Underground Ores |
cinnabar_ore_overworld | voluminousenergy:cinnabar_ore_blob | minecraft:is_overworld | None | No | 9 | -64 | 320 | 0 | Underground Ores |
copper_deposit_overworld | voluminousenergy:copper_deposit | minecraft:is_overworld | None | Yes | 1 | -16 | 112 | 26 | Underground Decoration |
eighzo_deposit_end | voluminousenergy:eighzo_deposit | minecraft:is_end | None | Yes | 1 | 10 | 36 | 192 | Underground Decoration |
eighzo_ore_end | voluminousenergy:eighzo_ore_blob | minecraft:is_end | None | No | 3 | 10 | 36 | 0 | Underground Ores |
galena_deposit_overworld | voluminousenergy:galena_deposit | minecraft:is_overworld | None | Yes | 1 | -48 | 12 | 78 | Underground Decoration |
galena_ore_overworld | voluminousenergy:galena_ore_blob | minecraft:is_overworld | None | No | 3 | -48 | 12 | 0 | Underground Ores |
gold_deposit_overworld | voluminousenergy:gold_deposit | minecraft:is_overworld | None | Yes | 1 | -64 | -48 | 112 | Underground Decoration |
iron_deposit_overworld | voluminousenergy:iron_deposit | minecraft:is_overworld | None | Yes | 1 | -64 | 74 | 56 | Underground Decoration |
oil_geyser_overworld | voluminousenergy:oil_geyser | minecraft:is_overworld | None | No | 1 | -64 | 320 | 144 | Fluid Springs |
rice_crop_overworld | voluminousenergy:rice_crop | minecraft:is_overworld | minecraft:is_ocean | No | 4 | 55 | 320 | 0 | Vegetal Decoration |
rutile_deposit_overworld | voluminousenergy:rutile_deposit | minecraft:is_overworld | None | Yes | 1 | -64 | -48 | 128 | Underground Decoration |
rutile_ore_overworld | voluminousenergy:rutile_ore_blob | minecraft:is_overworld | None | No | 3 | -64 | -32 | 0 | Underground Ores |
saltpeter_ore_badlands | voluminousenergy:saltpeter_ore_blob | minecraft:is_badlands | minecraft:is_beachforge:is_water | Yes | 1 | 55 | 77 | 10 | Underground Ores |
saltpeter_ore_hot_sandy | voluminousenergy:saltpeter_ore_blob | forge:is_hotforge:is_sandy | minecraft:is_beachforge:is_water | No | 4 | 55 | 320 | 0 | Underground Ores |
surface_oil_lake_overworld | voluminousenergy:surface_oil_lake | minecraft:is_overworld | None | No | 1 | -64 | 320 | 208 | Lakes |
underground_oil_lakes_overworld | voluminousenergy:underground_oil_lake | minecraft:is_overworld | None | No | 1 | -64 | 320 | 5 | Lakes |
Ore blob features
| JSON entry | Targets (block placed in replaceable tag) | Size | Discard chance on air exposure |
|---|---|---|---|
bauxite_ore_blob | Bauxite Ore in minecraft:stone_ore_replaceablesDeepslate Bauxite Ore in minecraft:deepslate_ore_replaceables | 8 | 0.0 |
cinnabar_ore_blob | Cinnabar Ore in minecraft:stone_ore_replaceablesDeepslate Cinnabar Ore in minecraft:deepslate_ore_replaceables | 6 | 0.0 |
eighzo_ore_blob | Eighzo Ore in forge:ore_bearing_ground/end_stone | 4 | 0.5 |
galena_ore_blob | Galena Ore in minecraft:stone_ore_replaceablesDeepslate Galena Ore in minecraft:deepslate_ore_replaceables | 6 | 0.0 |
rutile_ore_blob | Rutile Ore in minecraft:stone_ore_replaceablesDeepslate Rutile Ore in minecraft:deepslate_ore_replaceables | 4 | 0.75 |
saltpeter_ore_blob | Saltpeter Ore in forge:ore_bearing_ground/sand/colorless_sandRed Saltpeter Ore in forge:ore_bearing_ground/sand/red_sand | 33 | 0.0 |
Ore deposit features
Ore deposits are lake-shaped pockets: the inside is the raw block of the resource, and the edge is the ore block where it meets stone. If "Disallow surface ore deposits" is enabled in the common config, deposits are not placed where they can see the sky.
| JSON entry | Outer ore block | Core (raw) block |
|---|---|---|
bauxite_deposit | Bauxite Ore | Raw Bauxite Block |
cinnabar_deposit | Cinnabar Ore | Raw Cinnabar Block |
copper_deposit | Copper Ore | Raw Copper Block |
eighzo_deposit | Eighzo Ore | Raw Eighzo Block |
galena_deposit | Galena Ore | Raw Galena Block |
gold_deposit | Gold Ore | Raw Gold Block |
iron_deposit | Iron Ore | Raw Iron Block |
rutile_deposit | Rutile Ore | Raw Rutile Block |
Crude Oil and Rice features
Crude Oil lakes come in a surface and an underground variant, which are placed separately so that lakes appear on the surface reasonably often. Geysers are tall columns of Crude Oil.
| JSON entry | Feature type | Fluid / block | Perimeter (shell) blocks |
|---|---|---|---|
oil_geyser | voluminousenergy:ve_geyser_feature | Crude Oil | None |
rice_crop | voluminousenergy:ve_rice_feature | Rice Crop | None |
surface_oil_lake | voluminousenergy:ve_bsc_surface_lake_feature | Crude Oil | None |
underground_oil_lake | voluminousenergy:ve_bsc_underground_lakes_feature | Crude Oil | None |