summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2013-02-23 12:34:01 -0500
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2013-02-23 12:34:01 -0500
commit6d74d09c9daac6939525a909ab1401ebe8a174b7 (patch)
tree59d0cf3044cdb563c158c80ca646956f781f9cda
parentd21d4d2fb4126d08b26b5cff85ad0a0773edaaa8 (diff)
Added support for spawning small fir trees in snow biomes. Made jungletrees
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.
-rw-r--r--biome_defs.lua64
-rw-r--r--init.lua64
-rw-r--r--tree_biomes.txt5
3 files changed, 73 insertions, 60 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?
-
-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)")
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