1 minetest
.register_alias("mapgen_dandelion", "flowers:dandelion_yellow")
2 minetest
.register_alias("mapgen_rose", "flowers:rose")
4 minetest
.register_alias("mapgen_oxeye_daisy", "flowers:oxeye_daisy")
6 minetest
.register_alias("mapgen_tulip_orange", "flowers:tulip_orange")
7 minetest
.register_alias("mapgen_tulip_pink", "flowers:tulip_pink")
8 minetest
.register_alias("mapgen_tulip_red", "flowers:tulip_red")
9 minetest
.register_alias("mapgen_tulip_white", "flowers:tulip_white")
11 minetest
.register_alias("mapgen_allium", "flowers:allium")
13 minetest
.register_alias("mapgen_paeonia", "flowers:paeonia")
15 minetest
.register_alias("mapgen_houstonia", "flowers:houstonia")
17 minetest
.register_alias("mapgen_blue_orchid", "flowers:blue_orchid")
19 minetest
.register_on_generated(function(minp
, maxp
, seed
)
20 if maxp
.y
>= 3 and minp
.y
<= 0 then
22 local perlin1
= minetest
.get_perlin(436, 3, 0.6, 100)
23 -- Assume X and Z lengths are equal
25 local divs
= (maxp
.x
-minp
.x
)/divlen
+1;
28 local x0
= minp
.x
+ math
.floor((divx
+0)*divlen
)
29 local z0
= minp
.z
+ math
.floor((divz
+0)*divlen
)
30 local x1
= minp
.x
+ math
.floor((divx
+1)*divlen
)
31 local z1
= minp
.z
+ math
.floor((divz
+1)*divlen
)
32 -- Determine flowers amount from perlin noise
33 local grass_amount
= math
.floor(perlin1
:get2d({x
=x0
, y
=z0
}) * 9)
34 -- Find random positions for flowers based on this random
35 local pr
= PseudoRandom(seed
+456)
36 for i
=0,grass_amount
do
37 local x
= pr
:next(x0
, x1
)
38 local z
= pr
:next(z0
, z1
)
39 -- Find ground level (0...15)
42 if minetest
.get_node({x
=x
,y
=y
,z
=z
}).name
~= "air" then
49 local p
= {x
=x
,y
=ground_y
+1,z
=z
}
50 local nn
= minetest
.get_node(p
).name
51 -- Check if the node can be replaced
52 if minetest
.registered_nodes
[nn
] and
53 minetest
.registered_nodes
[nn
].buildable_to
then
54 nn
= minetest
.get_node({x
=x
,y
=ground_y
,z
=z
}).name
55 if nn
== "default:dirt_with_grass" then
56 --local flower_choice = pr:next(1, 11)
57 local flower_choice
= math
.random(0, 11)
58 local flower
= "default:grass"
59 if flower_choice
== 1 then
60 flower
= "flowers:dandelion_yellow"
61 minetest
.set_node(p
, {name
=flower
})
62 elseif flower_choice
== 2 then
63 flower
= "flowers:rose"
64 minetest
.set_node(p
, {name
=flower
})
65 elseif flower_choice
== 3 then
66 flower
= "flowers:oxeye_daisy"
67 minetest
.set_node(p
, {name
=flower
})
68 elseif flower_choice
== 4 then
69 flower
= "flowers:tulip_orange"
70 minetest
.set_node(p
, {name
=flower
})
71 elseif flower_choice
== 5 then
72 flower
= "flowers:tulip_pink"
73 minetest
.set_node(p
, {name
=flower
})
74 elseif flower_choice
== 6 then
75 flower
= "flowers:tulip_red"
76 minetest
.set_node(p
, {name
=flower
})
77 elseif flower_choice
== 7 then
78 flower
= "flowers:tulip_white"
79 minetest
.set_node(p
, {name
=flower
})
80 elseif flower_choice
== 8 then
81 flower
= "flowers:allium"
82 minetest
.set_node(p
, {name
=flower
})
83 elseif flower_choice
== 9 then
84 flower
= "flowers:paeonia"
85 minetest
.set_node(p
, {name
=flower
})
86 elseif flower_choice
== 10 then
87 flower
= "flowers:houstonia"
88 minetest
.set_node(p
, {name
=flower
})
89 elseif flower_choice
== 11 then
90 flower
= "flowers:blue_orchid"
91 minetest
.set_node(p
, {name
=flower
})
92 elseif flower_choice
== 12 then
93 flower
= "flowers:fern"
94 minetest
.set_node(p
, {name
=flower
})
96 flower
= "default:grass"
97 minetest
.set_node(p
, {name
=flower
})