From d7956e255e80c421bb7152b76878e9ded66b898a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 5 Jun 2022 13:32:15 +0200 Subject: [PATCH] Generalize waterplant decay --- mods/rp_default/functions.lua | 26 ++++++++++++-------------- mods/rp_default/nodes.lua | 2 ++ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/mods/rp_default/functions.lua b/mods/rp_default/functions.lua index 2526b8d..3046ed3 100644 --- a/mods/rp_default/functions.lua +++ b/mods/rp_default/functions.lua @@ -720,12 +720,12 @@ minetest.register_abm( -- seagrass dies if not underwater local plantpos = vector.add(pos, dir) local is_water = util.is_water_source_or_waterfall(plantpos) if not is_water then - if node.name == "rp_default:seagrass_on_dirt" or node.name == "rp_default:tall_seagrass_on_dirt" then - minetest.set_node(pos, {name = "rp_default:dirt"}) - elseif node.name == "rp_default:seagrass_on_swamp_dirt" or node.name == "rp_default:tall_seagrass_on_swamp_dirt" then - minetest.set_node(pos, {name = "rp_default:swamp_dirt"}) - elseif node.name == "rp_default:seagrass_on_sand" or node.name == "rp_default:tall_seagrass_on_sand" then - minetest.set_node(pos, {name = "rp_default:sand"}) + local def = minetest.registered_nodes[node.name] + if def._waterplant_base_node then + minetest.set_node(pos, {name = def._waterplant_base_node}) + else + minetest.log("error", "[rp_default] Missing _waterplant_base_node for "..node.name) + minetest.remove_node(pos) end end end @@ -754,14 +754,12 @@ minetest.register_abm( -- algae die/become smaller if not fully underwater end if height_ok < 1 then - if node.name == "rp_default:alga_on_dirt" then - minetest.set_node(pos, {name = "rp_default:dirt"}) - elseif node.name == "rp_default:alga_on_swamp_dirt" then - minetest.set_node(pos, {name = "rp_default:swamp_dirt"}) - elseif node.name == "rp_default:alga_on_sand" then - minetest.set_node(pos, {name = "rp_default:sand"}) - elseif node.name == "rp_default:alga_on_alga_block" then - minetest.set_node(pos, {name = "rp_default:alga_block"}) + local def = minetest.registered_nodes[node.name] + if def and def._waterplant_base_node then + minetest.set_node(pos, {name = def._waterplant_base_node}) + else + minetest.log("error", "[rp_default] Missing _waterplant_base_node for "..node.name) + minetest.remove_node(pos) end else local param2 = height_ok * 16 diff --git a/mods/rp_default/nodes.lua b/mods/rp_default/nodes.lua index 508f18c..e7c5cbe 100644 --- a/mods/rp_default/nodes.lua +++ b/mods/rp_default/nodes.lua @@ -1186,6 +1186,7 @@ local register_seagrass = function(plant_id, selection_box, drop, append, baseno end, _on_trim = _on_trim, _fertilized_node = _fertilized_node, + _waterplant_base_node = basenode, drop = drop, }) end @@ -1367,6 +1368,7 @@ local register_alga_on = function(append, basenode, basenode_tiles, max_height, return itemstack end, _fertilized_node = _fertilized_node, + _waterplant_base_node = basenode, }) end