Added support for spawning small fir trees in snow biomes. Made jungletrees
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>
Sat, 23 Feb 2013 17:34:01 +0000 (12:34 -0500)
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>
Sat, 23 Feb 2013 17:34:01 +0000 (12:34 -0500)
and palms require at least +15°C to grow.  This is supposed to keep them away
from snow biomes, but the engine doesn't let me tell the snow mod to always
run first.  Also please note that due to the load that snow biomes + moretrees
adds to the map generator, well... stuff will look cut off, broken, etc. due
to bugs in the map generator.

biome_defs.lua
init.lua
tree_biomes.txt

index c3b8957526f4e6df0a4cf2a2fa9d7a917f9cc203..b92c2d652790d68012ca842fd7e0822fa59c81a2 100644 (file)
@@ -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
+}
index 74b15dcfffd9d3040e8056d30fb0bb5e602b94b9..894c1c99ccc43451c9ae9b26531d43f67f973f23 100644 (file)
--- 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?
-
-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
-       })
-end
+-- same thing, but a smaller version that grows only in snow biomes
 
--- 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 ;-)
---
+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
 
 print("[Moretrees] Loaded (2013-02-11)")
index e7d4c17f8c376d476b910a52ca97c0c8eb5fca96..456b00e682ac43e683f89f1df167d6a66674148f 100644 (file)
@@ -2,9 +2,10 @@
                Elevation       Temperature     Nearness to     Nearby  What nodes              Perlin          Avoid\r
 Tree type         (m)          (approx., °C)  some node       water   to spawn on             seed diff       radius\r
 -----------------------------------------------------------------------------------------------------------------------\r
-jungle tree    - 5 to +10       n/a            water, 20         10    dirt_with_grass         329              5\r
+jungle tree    - 5 to +10       above +15      water, 20         10    dirt_with_grass         329              5\r
 fir             above +25      -20 to +10        n/a           n/a     dirt_with_grass         359              8\r
-palm           - 1 to + 1      +18 to +32      water, 15         10    sand                    330              5\r
+firs on snow    above +15      -20 to +10        n/a           n/a     snow:snow               359              8\r
+palm           - 1 to + 1      +15 to +32      water, 15         10    sand                    330              5\r
 apple          + 1 to +10      +23 to +32        n/a           n/a     dirt_with grass         331             15\r
 oak              0 to +10      + 4 to +16        n/a           n/a     dirt_with grass         332             15\r
 sequoia                  0 to +10      -30 to +50        n/a           n/a     dirt_with grass         333             10\r