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,
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,
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,
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,
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
+}
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)
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
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
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)")
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