From 1727fb32bb4141d577256fb3313b43bc369384fc Mon Sep 17 00:00:00 2001 From: wsor4035 <24964441+wsor4035@users.noreply.github.com> Date: Thu, 17 Oct 2024 21:45:01 -0400 Subject: [PATCH] try out lsystem decoration --- init.lua | 62 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/init.lua b/init.lua index f4947b7..1ec4122 100644 --- a/init.lua +++ b/init.lua @@ -134,7 +134,6 @@ function translate_biome_defs(def, treename, index) if not index then index = 1 end local deco_def = { name = treename .. "_" .. index, - deco_type = "simple", place_on = def.place_on, sidelen = 16, fill_ratio = def.fill_ratio or 0.001, @@ -143,9 +142,16 @@ function translate_biome_defs(def, treename, index) y_max = def.max_elevation, spawn_by = def.spawn_by, num_spawn_by = def.num_spawn_by, - decoration = "moretrees:"..treename.."_sapling_ongen" } + if minetest.features.lsystem_decoration_type then + deco_def.deco_type = "lsystem" + deco_def.treedef = moretrees[treename .. "_model"] + else + deco_def.deco_type = "simple" + deco_def.decoration = "moretrees:"..treename.."_sapling_ongen" + end + deco_ids[#deco_ids+1] = treename .. ("_" .. index or "_1") return deco_def @@ -176,33 +182,35 @@ minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome_3, "pop minetest.register_decoration(translate_biome_defs(moretrees.poplar_small_biome, "poplar_small", 4)) minetest.register_decoration(translate_biome_defs(moretrees.poplar_small_biome_2, "poplar_small", 5)) ---[[ - this is purposefully wrapped in a on mods loaded callback to that it gets the proper ids - if other mods clear the registered decorations -]] -minetest.register_on_mods_loaded(function() - for k, v in pairs(deco_ids) do - deco_ids[k] = minetest.get_decoration_id(v) - end - minetest.set_gen_notify("decoration", deco_ids) -end) - -minetest.register_on_generated(function(minp, maxp, blockseed) - local g = minetest.get_mapgen_object("gennotify") - local locations = {} - for _, id in pairs(deco_ids) do - local deco_locations = g["decoration#" .. id] or {} - for _, pos in pairs(deco_locations) do - locations[#locations+1] = pos +if not minetest.features.lsystem_decoration_type then + --[[ + this is purposefully wrapped in a on mods loaded callback to that it gets the proper ids + if other mods clear the registered decorations + ]] + minetest.register_on_mods_loaded(function() + for k, v in pairs(deco_ids) do + deco_ids[k] = minetest.get_decoration_id(v) end - end + minetest.set_gen_notify("decoration", deco_ids) + end) - if #locations == 0 then return end - for _, pos in ipairs(locations) do - local timer = minetest.get_node_timer({x=pos.x, y=pos.y+1, z=pos.z}) - timer:start(math.random(2,10)) - end -end) + minetest.register_on_generated(function(minp, maxp, blockseed) + local g = minetest.get_mapgen_object("gennotify") + local locations = {} + for _, id in pairs(deco_ids) do + local deco_locations = g["decoration#" .. id] or {} + for _, pos in pairs(deco_locations) do + locations[#locations+1] = pos + end + end + + if #locations == 0 then return end + for _, pos in ipairs(locations) do + local timer = minetest.get_node_timer({x=pos.x, y=pos.y+1, z=pos.z}) + timer:start(math.random(2,10)) + end + end) +end -- Code to spawn a birch tree