From 33f421acdfe8b388310339368994e8f9bbb93403 Mon Sep 17 00:00:00 2001 From: FaceDeer Date: Fri, 26 Mar 2021 01:12:19 -0600 Subject: [PATCH] removal of mapgen lava from biome definitions --- init.lua | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/init.lua b/init.lua index 7483eab..ce4adab 100644 --- a/init.lua +++ b/init.lua @@ -11,6 +11,48 @@ dofile(modpath.."/hot_rock.lua") if magma_conduits.config.remove_default_lava then minetest.register_alias_force("mapgen_lava_source", "air") + + -- Newer mapgens define cave liquids in biomes. There isn't an easy way to override biomes + -- yet (https://github.com/minetest/minetest/issues/9161) so this clears and recreates all biomes. + -- decorations and ores also need to be re-registered since reregistering the biomes reassigns their + -- biome IDs. + + local registered_biomes_copy = {} + for old_biome_key, old_biome_def in pairs(minetest.registered_biomes) do + registered_biomes_copy[old_biome_key] = old_biome_def + + if old_biome_def.node_cave_liquid == "default:lava_source" then + old_biome_def.node_cave_liquid = "air" + elseif type(old_biome_def.node_cave_liquid) == "table" then + for i, liquid in ipairs(old_biome_def.node_cave_liquid) do + if liquid == "default:lava_source" then + old_biome_def.node_cave_liquid[i] = "air" + end + end + end + + end + local registered_decorations_copy = {} + for old_decoration_key, old_decoration_def in pairs(minetest.registered_decorations) do + registered_decorations_copy[old_decoration_key] = old_decoration_def + end + local registered_ores_copy = {} + for old_ore_key, old_ore_def in pairs(minetest.registered_ores) do + registered_ores_copy[old_ore_key] = old_ore_def + end + + minetest.clear_registered_ores() + minetest.clear_registered_decorations() + minetest.clear_registered_biomes() + for biome_key, new_biome_def in pairs(registered_biomes_copy) do + minetest.register_biome(new_biome_def) + end + for decoration_key, new_decoration_def in pairs(registered_decorations_copy) do + minetest.register_decoration(new_decoration_def) + end + for ore_key, new_ore_def in pairs(registered_ores_copy) do + minetest.register_ore(new_ore_def) + end end if magma_conduits.config.magma_veins then