From 6d74d09c9daac6939525a909ab1401ebe8a174b7 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Sat, 23 Feb 2013 12:34:01 -0500 Subject: [PATCH] =?UTF-8?q?Added=20support=20for=20spawning=20small=20fir?= =?UTF-8?q?=20trees=20in=20snow=20biomes.=20=20Made=20jungletrees=20and=20?= =?UTF-8?q?palms=20require=20at=20least=20+15=C2=B0C=20to=20grow.=20=20Thi?= =?UTF-8?q?s=20is=20supposed=20to=20keep=20them=20away=20from=20snow=20bio?= =?UTF-8?q?mes,=20but=20the=20engine=20doesn't=20let=20me=20tell=20the=20s?= =?UTF-8?q?now=20mod=20to=20always=20run=20first.=20=20Also=20please=20not?= =?UTF-8?q?e=20that=20due=20to=20the=20load=20that=20snow=20biomes=20+=20m?= =?UTF-8?q?oretrees=20adds=20to=20the=20map=20generator,=20well...=20stuff?= =?UTF-8?q?=20will=20look=20cut=20off,=20broken,=20etc.=20due=20to=20bugs?= =?UTF-8?q?=20in=20the=20map=20generator.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- biome_defs.lua | 64 ++++++++++++++++++++++++++++++------------------- init.lua | 62 +++++++++++++++++++++++------------------------ tree_biomes.txt | 5 ++-- 3 files changed, 72 insertions(+), 59 deletions(-) diff --git a/biome_defs.lua b/biome_defs.lua index c3b8957..b92c2d6 100644 --- a/biome_defs.lua +++ b/biome_defs.lua @@ -18,7 +18,7 @@ moretrees.palm_biome = { near_nodes = {"default:water_source"}, near_nodes_size = 15, near_nodes_count = 10, - temp_min = 0.15, + temp_min = 0.25, temp_max = -0.15, rarity = 50, max_count = 10, @@ -76,30 +76,6 @@ moretrees.birch_biome = { max_count = 10, } -moretrees.spruce_biome = { - surface = "default:dirt_with_grass", - avoid_nodes = moretrees.avoidnodes, - avoid_radius = 10, - seed_diff = 335, - min_elevation = 20, - temp_min = 0.9, - temp_max = 0.7, - rarity = 50, - max_count = 5, -} - -moretrees.pine_biome = { - surface = "default:dirt_with_grass", - avoid_nodes = moretrees.avoidnodes, - avoid_radius = 10, - seed_diff = 336, - near_nodes = {"default:water_source"}, - near_nodes_size = 15, - near_nodes_count = 5, - rarity = 50, - max_count = 10, -} - moretrees.willow_biome = { surface = "default:dirt_with_grass", avoid_nodes = moretrees.avoidnodes, @@ -136,6 +112,7 @@ moretrees.jungletree_biome = { seed_diff = 329, min_elevation = -5, max_elevation = 10, + temp_min = 0.25, near_nodes = {"default:water_source"}, near_nodes_size = 20, near_nodes_count = 7, @@ -143,6 +120,30 @@ moretrees.jungletree_biome = { max_count = 10, } +moretrees.spruce_biome = { + surface = "default:dirt_with_grass", + avoid_nodes = moretrees.avoidnodes, + avoid_radius = 10, + seed_diff = 335, + min_elevation = 20, + temp_min = 0.9, + temp_max = 0.7, + rarity = 50, + max_count = 5, +} + +moretrees.pine_biome = { + surface = "default:dirt_with_grass", + avoid_nodes = moretrees.avoidnodes, + avoid_radius = 10, + seed_diff = 336, + near_nodes = {"default:water_source"}, + near_nodes_size = 15, + near_nodes_count = 5, + rarity = 50, + max_count = 10, +} + moretrees.fir_biome = { surface = "default:dirt_with_grass", avoid_nodes = moretrees.avoidnodes, @@ -154,3 +155,16 @@ moretrees.fir_biome = { rarity = 50, max_count = 10, } + +moretrees.fir_biome_snow = { + surface = {"snow:dirt_with_snow", "snow:snow"}, + below_nodes = {"default:dirt", "default:dirt_with_grass", "snow:dirt_with_snow"}, + avoid_nodes = moretrees.avoidnodes, + avoid_radius = 10, + seed_diff = 359, + rarity = 50, + max_count = 10, + check_air = false, + delete_above = true, + spawn_replace_node = true +} diff --git a/init.lua b/init.lua index 74b15dc..894c1c9 100644 --- a/init.lua +++ b/init.lua @@ -45,6 +45,8 @@ plantslib:register_generate_plant(moretrees.spruce_biome, "moretrees:grow_spruce plantslib:register_generate_plant(moretrees.jungletree_biome, "moretrees:grow_jungletree") plantslib:register_generate_plant(moretrees.fir_biome, "moretrees:grow_fir") +plantslib:register_generate_plant(moretrees.fir_biome_snow, "moretrees:grow_fir_snow") + -- Code to spawn a birch tree function moretrees:grow_birch(pos) @@ -121,7 +123,7 @@ function moretrees:grow_jungletree(pos) minetest.env:spawn_tree(pos, moretrees.jungletree_model) end --- code to spawn fir trees (formerly "conifers") +-- code to spawn fir trees function moretrees:grow_fir(pos) if math.random(2) == 1 then @@ -137,6 +139,9 @@ function moretrees:grow_fir(pos) moretrees.fir_model.rules_b = moretrees.ct_rules_b2 end + moretrees.fir_model.iterations = 7 + moretrees.fir_model.random_level = 5 + minetest.env:remove_node(pos) local leaves = minetest.env:find_nodes_in_area({x = pos.x, y = pos.y, z = pos.z}, {x = pos.x, y = pos.y+5, z = pos.z}, "default:leaves") for leaf in ipairs(leaves) do @@ -145,38 +150,31 @@ function moretrees:grow_fir(pos) minetest.env:spawn_tree(pos,moretrees.fir_model) end --- Should we remove all the trees above the conifers altitude? +-- same thing, but a smaller version that grows only in snow biomes -if moretrees.firs_remove_default_trees == true then - minetest.register_abm({ - nodenames = { - "default:tree", - "default:leaves" - }, - interval = moretrees.firs_remove_interval, - chance = moretrees.firs_remove_chance, - - action = function(pos, node, _, _) - if minetest.env:get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name == "air" - and pos.y >= CONIFERS_ALTITUDE - then - minetest.env:add_node(pos , {name = "air"}) - end - end - }) +function moretrees:grow_fir_snow(pos) + if math.random(2) == 1 then + moretrees.fir_model.leaves="moretrees:fir_leaves" + else + moretrees.fir_model.leaves="moretrees:fir_leaves_bright" + end + if math.random(2) == 1 then + moretrees.fir_model.rules_a = moretrees.ct_rules_a1 + moretrees.fir_model.rules_b = moretrees.ct_rules_b1 + else + moretrees.fir_model.rules_a = moretrees.ct_rules_a2 + moretrees.fir_model.rules_b = moretrees.ct_rules_b2 + end + + moretrees.fir_model.iterations = 2 + moretrees.fir_model.random_level = 2 + + minetest.env:remove_node(pos) + local leaves = minetest.env:find_nodes_in_area({x = pos.x, y = pos.y, z = pos.z}, {x = pos.x, y = pos.y+5, z = pos.z}, "default:leaves") + for leaf in ipairs(leaves) do + minetest.env:remove_node(leaves[leaf]) + end + minetest.env:spawn_tree(pos,moretrees.fir_model) end --- snow biomes mod uses this code to make biomes: --- --- local perlin1 = env:get_perlin(112,3, 0.5, 150) --- local test = perlin1:get2d({x=pos.x, y=pos.z}) --- if smooth and (test > 0.73 or (test > 0.43 and math.random(0,29) > (0.73 - test) * 100 )) then --- in_biome = true --- elseif not smooth and test > 0.53 then --- in_biome = true --- end --- --- We'll just save this for possible later use ;-) --- - print("[Moretrees] Loaded (2013-02-11)") diff --git a/tree_biomes.txt b/tree_biomes.txt index e7d4c17..456b00e 100644 --- a/tree_biomes.txt +++ b/tree_biomes.txt @@ -2,9 +2,10 @@ Elevation Temperature Nearness to Nearby What nodes Perlin Avoid Tree type (m) (approx., °C) some node water to spawn on seed diff radius ----------------------------------------------------------------------------------------------------------------------- -jungle tree - 5 to +10 n/a water, 20 10 dirt_with_grass 329 5 +jungle tree - 5 to +10 above +15 water, 20 10 dirt_with_grass 329 5 fir above +25 -20 to +10 n/a n/a dirt_with_grass 359 8 -palm - 1 to + 1 +18 to +32 water, 15 10 sand 330 5 +firs on snow above +15 -20 to +10 n/a n/a snow:snow 359 8 +palm - 1 to + 1 +15 to +32 water, 15 10 sand 330 5 apple + 1 to +10 +23 to +32 n/a n/a dirt_with grass 331 15 oak 0 to +10 + 4 to +16 n/a n/a dirt_with grass 332 15 sequoia 0 to +10 -30 to +50 n/a n/a dirt_with grass 333 10