From fad79d86b7182fb697e5c88232b0bd0b5958f8ad Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Sat, 14 Sep 2013 22:44:32 -0400 Subject: [PATCH] add option to spawn saplings instead of fully-grown trees at mapgen time. Such saplings will grow very quickly into a tree, compared to a planted sapling. Defaults to spawning saplings. add custom jungle tree sapling, alias default one to that, so that moretrees will be able to grow its own jungle trees. fix tree density bug --- default_settings.txt | 7 +++++ init.lua | 59 ++++++++++++++++++++++++++--------- node_defs.lua | 73 +++++++++++++++++++++++++++++++++++++++----- saplings.lua | 42 +++++++++++++++++++++++++ 4 files changed, 160 insertions(+), 21 deletions(-) diff --git a/default_settings.txt b/default_settings.txt index e13b0aa..665222e 100644 --- a/default_settings.txt +++ b/default_settings.txt @@ -15,6 +15,13 @@ moretrees.enable_jungle_tree = true moretrees.enable_fir = true moretrees.enable_beech = false +-- set this to true to make moretrees spawn saplings at mapgen time instead +-- of fully-grown trees, which will grow into full trees very quickly. This will +-- greatly reduce mapgen lag, at the expense of having to wait several seconds for +-- the trees to grow via an ABM. + +moretrees.spawn_saplings = true + -- Set this to true to allow usage of the stairsplus mod in moreblocks moretrees.enable_stairsplus = true diff --git a/init.lua b/init.lua index 39fd4ab..0dec9e5 100644 --- a/init.lua +++ b/init.lua @@ -57,61 +57,92 @@ moretrees.cutting_tools = { } dofile(modpath.."/tree_models.lua") -dofile(modpath.."/biome_defs.lua") dofile(modpath.."/node_defs.lua") +dofile(modpath.."/biome_defs.lua") dofile(modpath.."/saplings.lua") dofile(modpath.."/crafts.lua") dofile(modpath.."/leafdecay.lua") -- tree spawning setup +if moretrees.spawn_saplings then + moretrees.spawn_beech_object = "moretrees:beech_sapling_ongen" + moretrees.spawn_apple_tree_object = "moretrees:apple_tree_sapling_ongen" + moretrees.spawn_oak_object = "moretrees:oak_sapling_ongen" + moretrees.spawn_sequoia_object = "moretrees:sequoia_sapling_ongen" + moretrees.spawn_palm_object = "moretrees:palm_sapling_ongen" + moretrees.spawn_pine_object = "moretrees:pine_sapling_ongen" + moretrees.spawn_rubber_tree_object = "moretrees:rubber_tree_sapling_ongen" + moretrees.spawn_willow_object = "moretrees:willow_sapling_ongen" + moretrees.spawn_birch_object = "moretrees:birch_sapling_ongen" + moretrees.spawn_spruce_object = "moretrees:spruce_sapling_ongen" + moretrees.spawn_jungletree_object = "moretrees:jungletree_sapling_ongen" + moretrees.spawn_fir_object = "moretrees:fir_sapling_ongen" + moretrees.spawn_fir_snow_object = "snow:sapling_pine" +else + moretrees.spawn_beech_object = moretrees.beech_model + moretrees.spawn_apple_tree_object = moretrees.apple_tree_model + moretrees.spawn_oak_object = moretrees.oak_model + moretrees.spawn_sequoia_object = moretrees.sequoia_model + moretrees.spawn_palm_object = moretrees.palm_model + moretrees.spawn_pine_object = moretrees.pine_model + moretrees.spawn_rubber_tree_object = moretrees.rubber_tree_model + moretrees.spawn_willow_object = moretrees.willow_model + moretrees.spawn_birch_object = "moretrees:grow_birch" + moretrees.spawn_spruce_object = "moretrees:grow_spruce" + moretrees.spawn_jungletree_object = "moretrees:grow_jungletree" + moretrees.spawn_fir_object = "moretrees:grow_fir" + moretrees.spawn_fir_snow_object = "moretrees:grow_fir_snow" +end + + if moretrees.enable_beech then - plantslib:register_generate_plant(moretrees.beech_biome, moretrees.beech_model) + plantslib:register_generate_plant(moretrees.beech_biome, moretrees.spawn_beech_object) end if moretrees.enable_apple_tree then - plantslib:register_generate_plant(moretrees.apple_tree_biome, moretrees.apple_tree_model) + plantslib:register_generate_plant(moretrees.apple_tree_biome, moretrees.spawn_apple_tree_object) end if moretrees.enable_oak then - plantslib:register_generate_plant(moretrees.oak_biome, moretrees.oak_model) + plantslib:register_generate_plant(moretrees.oak_biome, moretrees.spawn_oak_object) end if moretrees.enable_sequoia then - plantslib:register_generate_plant(moretrees.sequoia_biome, moretrees.sequoia_model) + plantslib:register_generate_plant(moretrees.sequoia_biome, moretrees.spawn_sequoia_object) end if moretrees.enable_palm then - plantslib:register_generate_plant(moretrees.palm_biome, moretrees.palm_model) + plantslib:register_generate_plant(moretrees.palm_biome, moretrees.spawn_palm_object) end if moretrees.enable_pine then - plantslib:register_generate_plant(moretrees.pine_biome, moretrees.pine_model) + plantslib:register_generate_plant(moretrees.pine_biome, moretrees.spawn_pine_object) end if moretrees.enable_rubber_tree then - plantslib:register_generate_plant(moretrees.rubber_tree_biome, moretrees.rubber_tree_model) + plantslib:register_generate_plant(moretrees.rubber_tree_biome, moretrees.spawn_rubber_tree_object) end if moretrees.enable_willow then - plantslib:register_generate_plant(moretrees.willow_biome, moretrees.willow_model) + plantslib:register_generate_plant(moretrees.willow_biome, moretrees.spawn_willow_object) end if moretrees.enable_birch then - plantslib:register_generate_plant(moretrees.birch_biome, "moretrees:grow_birch") + plantslib:register_generate_plant(moretrees.birch_biome, moretrees.spawn_birch_object) end if moretrees.enable_spruce then - plantslib:register_generate_plant(moretrees.spruce_biome, "moretrees:grow_spruce") + plantslib:register_generate_plant(moretrees.spruce_biome, moretrees.spawn_spruce_object) end if moretrees.enable_jungle_tree then - plantslib:register_generate_plant(moretrees.jungletree_biome, "moretrees:grow_jungletree") + plantslib:register_generate_plant(moretrees.jungletree_biome, moretrees.spawn_jungletree_object) end if moretrees.enable_fir then - plantslib:register_generate_plant(moretrees.fir_biome, "moretrees:grow_fir") - plantslib:register_generate_plant(moretrees.fir_biome_snow, "moretrees:grow_fir_snow") + plantslib:register_generate_plant(moretrees.fir_biome, moretrees.spawn_fir_object) + plantslib:register_generate_plant(moretrees.fir_biome_snow, moretrees.spawn_fir_snow_object) end -- Code to spawn a birch tree diff --git a/node_defs.lua b/node_defs.lua index b02a6a2..a71b5c3 100644 --- a/node_defs.lua +++ b/node_defs.lua @@ -27,7 +27,7 @@ for i in ipairs(moretrees.treelist) do local selbox = moretrees.treelist[i][5] local vscale = moretrees.treelist[i][6] - if treename ~= "jungletree" then -- the default game provides jungle tree nodes. + if treename ~= "jungletree" then -- the default game provides jungle tree trunk/planks nodes. minetest.register_node("moretrees:"..treename.."_trunk", { description = treedesc.." Trunk", @@ -65,6 +65,22 @@ for i in ipairs(moretrees.treelist) do sounds = default.node_sound_defaults(), }) + minetest.register_node("moretrees:"..treename.."_sapling_ongen", { + description = treedesc.." Sapling", + drawtype = "plantlike", + tiles = {"moretrees_"..treename.."_sapling.png"}, + inventory_image = "moretrees_"..treename.."_sapling.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + }, + groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,not_in_creative_inventory=1}, + sounds = default.node_sound_defaults(), + drop = "moretrees:"..treename.."_sapling" + }) + -- player will get a sapling with 1/100 chance -- player will get leaves only if he/she gets no saplings, -- this is because max_items is 1 @@ -226,9 +242,49 @@ for i in ipairs(moretrees.treelist) do }) table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_trunk") + + if moretrees.spawn_saplings then + table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_sapling") + table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_sapling_ongen") + end end --- Extra leaves for jungle trees: +-- Extra nodes for jungle trees: + +minetest.register_node("moretrees:jungletree_sapling", { + description = "Jungle Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"default_junglesapling.png"}, + inventory_image = "default_junglesapling.png", + wield_image = "default_junglesapling.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + }, + groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("moretrees:jungletree_sapling_ongen", { + description = "Jungle Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"default_junglesapling.png"}, + inventory_image = "default_junglesapling.png", + wield_image = "default_junglesapling.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + }, + groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,not_in_creative_inventory=1}, + sounds = default.node_sound_leaves_defaults(), + drop = "moretrees:jungletree_sapling" +}) local jungleleaves = {"green","yellow","red"} local jungleleavesnames = {"Green", "Yellow", "Red"} @@ -295,6 +351,13 @@ table.insert(moretrees.avoidnodes, "moretrees:jungletree_trunk") table.insert(moretrees.avoidnodes, "moretrees:fir_trunk") table.insert(moretrees.avoidnodes, "default:tree") +if moretrees.spawn_saplings then + table.insert(moretrees.avoidnodes, "snow:sapling_pine") + table.insert(moretrees.avoidnodes, "default:junglesapling") + table.insert(moretrees.avoidnodes, "moretrees:jungle_tree_sapling") + table.insert(moretrees.avoidnodes, "moretrees:jungle_tree_sapling_ongen") +end + -- "empty" (tapped) rubber tree nodes minetest.register_node("moretrees:rubber_tree_trunk_empty", { @@ -332,11 +395,7 @@ minetest.register_alias("farming_plus:rubber_leaves", "moretrees:rubber_tree_lea minetest.register_alias("farming_plus:rubber_sapling", "moretrees:rubber_tree_sapling") minetest.register_alias("technic:rubber_tree_sapling", "moretrees:rubber_tree_sapling") -minetest.register_alias("moretrees:jungletree_trunk", "default:jungletree") -minetest.register_alias("moretrees:jungletree_planks", "default:junglewood") -minetest.register_alias("moretrees:jungletree_sapling", "default:junglesapling") -minetest.register_alias("jungletree:sapling", "default:junglesapling") - +minetest.register_alias("default:junglesapling","moretrees:jungletree_sapling") minetest.register_alias("moretrees:jungletree_trunk_sideways", "moreblocks:horizontal_jungle_tree") minetest.register_alias("jungletree:leaves_green", "moretrees:jungletree_leaves_green") diff --git a/saplings.lua b/saplings.lua index 5d0af28..64c6a59 100644 --- a/saplings.lua +++ b/saplings.lua @@ -15,6 +15,15 @@ for i in ipairs(moretrees.treelist) do grow_nodes = moretrees[tree_biome].surface, grow_function = moretrees[tree_model], }) + + plantslib:grow_plants({ + grow_delay = 2, + grow_chance = 30, + grow_plant = "moretrees:"..treename.."_sapling_ongen", + grow_nodes = moretrees[tree_biome].surface, + grow_function = moretrees[tree_model], + }) + end end @@ -26,6 +35,14 @@ plantslib:grow_plants({ grow_function = "moretrees:grow_birch" }) +plantslib:grow_plants({ + grow_delay = moretrees.sapling_interval, + grow_chance = moretrees.sapling_chance, + grow_plant = "moretrees:birch_sapling_ongen", + grow_nodes = moretrees.birch_biome.surface, + grow_function = "moretrees:grow_birch" +}) + plantslib:grow_plants({ grow_delay = moretrees.sapling_interval, grow_chance = moretrees.sapling_chance, @@ -34,6 +51,14 @@ plantslib:grow_plants({ grow_function = "moretrees:grow_spruce" }) +plantslib:grow_plants({ + grow_delay = moretrees.sapling_interval, + grow_chance = moretrees.sapling_chance, + grow_plant = "moretrees:spruce_sapling_ongen", + grow_nodes = moretrees.spruce_biome.surface, + grow_function = "moretrees:grow_spruce" +}) + plantslib:grow_plants({ grow_delay = moretrees.sapling_interval, grow_chance = moretrees.sapling_chance, @@ -42,6 +67,14 @@ plantslib:grow_plants({ grow_function = "moretrees:grow_fir" }) +plantslib:grow_plants({ + grow_delay = moretrees.sapling_interval, + grow_chance = moretrees.sapling_chance, + grow_plant = "moretrees:fir_sapling_ongen", + grow_nodes = moretrees.fir_biome.surface, + grow_function = "moretrees:grow_fir" +}) + plantslib:grow_plants({ grow_delay = moretrees.sapling_interval, grow_chance = moretrees.sapling_chance, @@ -49,3 +82,12 @@ plantslib:grow_plants({ grow_nodes = moretrees.jungletree_biome.surface, grow_function = "moretrees:grow_jungletree" }) + +plantslib:grow_plants({ + grow_delay = moretrees.sapling_interval, + grow_chance = moretrees.sapling_chance, + grow_plant = "moretrees:jungletree_sapling_ongen", + grow_nodes = moretrees.jungletree_biome.surface, + grow_function = "moretrees:grow_jungletree" +}) + -- 2.30.2