diff --git a/init.lua b/init.lua index 6982a0d..0339b43 100644 --- a/init.lua +++ b/init.lua @@ -153,58 +153,60 @@ function translate_biome_defs(def, treename, index) return deco_def end -minetest.register_decoration(translate_biome_defs(moretrees.beech_biome, "beech")) -minetest.register_decoration(translate_biome_defs(moretrees.apple_tree_biome, "apple_tree")) -minetest.register_decoration(translate_biome_defs(moretrees.oak_biome, "oak")) -minetest.register_decoration(translate_biome_defs(moretrees.sequoia_biome, "sequoia")) -minetest.register_decoration(translate_biome_defs(moretrees.palm_biome, "palm")) -minetest.register_decoration(translate_biome_defs(moretrees.date_palm_biome, "date_palm", 1)) -minetest.register_decoration(translate_biome_defs(moretrees.date_palm_biome_2, "date_palm", 2)) -minetest.register_decoration(translate_biome_defs(moretrees.cedar_biome, "cedar")) -minetest.register_decoration(translate_biome_defs(moretrees.rubber_tree_biome, "rubber_tree")) -minetest.register_decoration(translate_biome_defs(moretrees.willow_biome, "willow")) -minetest.register_decoration(translate_biome_defs(moretrees.birch_biome, "birch")) -minetest.register_decoration(translate_biome_defs(moretrees.spruce_biome, "spruce")) -if minetest.get_modpath("default") then - minetest.register_decoration(translate_biome_defs(moretrees.jungletree_biome, "jungletree")) -end -minetest.register_decoration(translate_biome_defs(moretrees.fir_biome, "fir", 1)) -if minetest.get_modpath("snow") then - minetest.register_decoration(translate_biome_defs(moretrees.fir_biome_snow, "fir", 2)) -end -minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome, "poplar", 1)) -minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome_2, "poplar", 2)) -minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome_3, "poplar", 3)) -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) +if moretrees.spawn_enabled then + minetest.register_decoration(translate_biome_defs(moretrees.beech_biome, "beech")) + minetest.register_decoration(translate_biome_defs(moretrees.apple_tree_biome, "apple_tree")) + minetest.register_decoration(translate_biome_defs(moretrees.oak_biome, "oak")) + minetest.register_decoration(translate_biome_defs(moretrees.sequoia_biome, "sequoia")) + minetest.register_decoration(translate_biome_defs(moretrees.palm_biome, "palm")) + minetest.register_decoration(translate_biome_defs(moretrees.date_palm_biome, "date_palm", 1)) + minetest.register_decoration(translate_biome_defs(moretrees.date_palm_biome_2, "date_palm", 2)) + minetest.register_decoration(translate_biome_defs(moretrees.cedar_biome, "cedar")) + minetest.register_decoration(translate_biome_defs(moretrees.rubber_tree_biome, "rubber_tree")) + minetest.register_decoration(translate_biome_defs(moretrees.willow_biome, "willow")) + minetest.register_decoration(translate_biome_defs(moretrees.birch_biome, "birch")) + minetest.register_decoration(translate_biome_defs(moretrees.spruce_biome, "spruce")) + if minetest.get_modpath("default") then + minetest.register_decoration(translate_biome_defs(moretrees.jungletree_biome, "jungletree")) 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 - end + minetest.register_decoration(translate_biome_defs(moretrees.fir_biome, "fir", 1)) + if minetest.get_modpath("snow") then + minetest.register_decoration(translate_biome_defs(moretrees.fir_biome_snow, "fir", 2)) end + minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome, "poplar", 1)) + minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome_2, "poplar", 2)) + minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome_3, "poplar", 3)) + 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)) - 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) + --[[ + 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 + 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 diff --git a/settings.lua b/settings.lua index f84fd29..582001a 100644 --- a/settings.lua +++ b/settings.lua @@ -2,6 +2,7 @@ local stg = minetest.settings --spawns tree on mapgen as saplings, legacy setting moretrees.spawn_saplings = stg:get_bool("moretrees.spawn_saplings", true) +moretrees.spawn_enabled = stg:get_bool("moretrees.spawn_enabled", true) --enable plantlike drawtype for leaves moretrees.plantlike_leaves = stg:get_bool("moretrees.plantlike_leaves", false) @@ -54,4 +55,4 @@ if type(minetest.get_game_info) == "function" then moretrees.enable_planks = minetest.get_game_info().id~="voxelgarden" else moretrees.enable_planks = true -end \ No newline at end of file +end