From 4884f1e51a23ff10bbf67b29cd30445ddb965261 Mon Sep 17 00:00:00 2001 From: FaceDeer Date: Wed, 13 Jul 2022 22:01:50 -0600 Subject: [PATCH] add spawn functions to some trees that didn't have them --- df_primordial_items/giant_fern.lua | 14 ++++++--- df_primordial_items/jungle_mushroom.lua | 2 +- df_primordial_items/primordial_mushroom.lua | 11 ++++--- df_trees/spindlestem.lua | 35 +++++++++++---------- 4 files changed, 36 insertions(+), 26 deletions(-) diff --git a/df_primordial_items/giant_fern.lua b/df_primordial_items/giant_fern.lua index 67d5b1d..282dfe3 100644 --- a/df_primordial_items/giant_fern.lua +++ b/df_primordial_items/giant_fern.lua @@ -301,12 +301,16 @@ minetest.register_node("df_primordial_items:fern_sapling", { end if minetest.get_node_light(pos) > 6 then - local fern = df_primordial_items.get_fern_schematic() - local rotation = rotations[math.random(1,#rotations)] - minetest.set_node(pos, {name="air"}) -- clear sapling so fern can replace it - mapgen_helper.place_schematic(pos, fern, rotation) + df_primordial_items.spawn_giant_fern(pos) else minetest.get_node_timer(pos):start(df_trees.config.tree_min_growth_delay) end end, -}) \ No newline at end of file +}) + +df_primordial_items.spawn_giant_fern = function(pos) + local fern = df_primordial_items.get_fern_schematic() + local rotation = rotations[math.random(1,#rotations)] + minetest.set_node(pos, {name="air"}) -- clear sapling so fern can replace it + mapgen_helper.place_schematic(pos, fern, rotation) +end \ No newline at end of file diff --git a/df_primordial_items/jungle_mushroom.lua b/df_primordial_items/jungle_mushroom.lua index ae8e985..6270a9a 100644 --- a/df_primordial_items/jungle_mushroom.lua +++ b/df_primordial_items/jungle_mushroom.lua @@ -124,7 +124,6 @@ minetest.register_node("df_primordial_items:jungle_mushroom_sapling", { if df_farming and df_farming.kill_if_sunlit(pos) then return end - minetest.set_node(pos, {name="air"}) df_primordial_items.spawn_jungle_mushroom(pos) end, }) @@ -135,6 +134,7 @@ local c_cap_2 = minetest.get_content_id("df_primordial_items:jungle_mushroom_cap local c_air = minetest.get_content_id("air") df_primordial_items.spawn_jungle_mushroom = function(pos) + minetest.set_node(pos, {name="air"}) local x, y, z = pos.x, pos.y, pos.z local stem_height = math.random(1,3) local cap_radius = math.random(2,3) diff --git a/df_primordial_items/primordial_mushroom.lua b/df_primordial_items/primordial_mushroom.lua index 88ae053..37cc4c4 100644 --- a/df_primordial_items/primordial_mushroom.lua +++ b/df_primordial_items/primordial_mushroom.lua @@ -725,10 +725,13 @@ minetest.register_node("df_primordial_items:mush_sapling", { if df_farming and df_farming.kill_if_sunlit(pos) then return end - local mushroom = df_primordial_items.get_primordial_mushroom() - local rotation = (math.random(1,4)-1)*90 - minetest.set_node(pos, {name="air"}) -- clear sapling so mushroom can replace it - mapgen_helper.place_schematic(pos, mushroom, rotation) + df_primordial_items.spawn_primordial_mushroom(pos) end, }) +df_primordial_items.spawn_primordial_mushroom = function(pos) + local mushroom = df_primordial_items.get_primordial_mushroom() + local rotation = (math.random(1,4)-1)*90 + minetest.set_node(pos, {name="air"}) -- clear sapling so mushroom can replace it + mapgen_helper.place_schematic(pos, mushroom, rotation) +end \ No newline at end of file diff --git a/df_trees/spindlestem.lua b/df_trees/spindlestem.lua index 3003af1..90f35fa 100644 --- a/df_trees/spindlestem.lua +++ b/df_trees/spindlestem.lua @@ -287,25 +287,28 @@ minetest.register_node("df_trees:spindlestem_seedling", { if df_farming and df_farming.kill_if_sunlit(pos) then return end - - local cap_item = minetest.get_name_from_content_id(get_spindlestem_cap_type(pos)) - local node = minetest.get_node(pos) - minetest.set_node(pos, {name=cap_item, param2 = node.param2}) - local meta = minetest.get_meta(pos) - local disp = {x=3, y=3, z=3} - local nearby = minetest.find_nodes_in_area(vector.add(pos, disp), vector.subtract(pos, disp), {"group:spindlestem"}) - local count = #nearby - local height = math.random(1,3) - if count > 10 then height = height + 2 end -- if there are a lot of nearby spindlestems, grow taller - if height > 0 then - local delay = growth_delay() - meta:set_int("spindlestem_to_grow", height) - meta:set_int("spindlestem_delay", delay) - minetest.get_node_timer(pos):start(delay) - end + df_trees.spawn_spindlestem(pos) end, }) +df_trees.spawn_spindlestem = function(pos) + local cap_item = minetest.get_name_from_content_id(get_spindlestem_cap_type(pos)) + local node = minetest.get_node(pos) + minetest.set_node(pos, {name=cap_item, param2 = node.param2}) + local disp = {x=3, y=3, z=3} + local nearby = minetest.find_nodes_in_area(vector.add(pos, disp), vector.subtract(pos, disp), {"group:spindlestem"}) + local count = #nearby + local height = math.random(1,3) + if count > 10 then height = height + 2 end -- if there are a lot of nearby spindlestems, grow taller + if height > 0 then + local delay = growth_delay() + local meta = minetest.get_meta(pos) + meta:set_int("spindlestem_to_grow", height) + meta:set_int("spindlestem_delay", delay) + minetest.get_node_timer(pos):start(delay) + end +end + register_spindlestem_type("white", S("White"), "FFFFFF", 0) register_spindlestem_type("red", S("Red"), "FFC3C3", 3, "color_red") register_spindlestem_type("green", S("Green"), "C3FFC3", 4, "color_green")