4
4
-- Namespace for functions
5
5
flowers = {}
6
6
7
+
7
8
-- Map Generation
8
- dofile (minetest .get_modpath (" flowers" ).. " /mapgen.lua" )
9
+ dofile (minetest .get_modpath (" flowers" ) .. " /mapgen.lua" )
10
+
9
11
10
12
-- Aliases for original flowers mod
11
13
minetest .register_alias (" flowers:flower_dandelion_white" , " flowers:dandelion_white" )
@@ -15,7 +17,9 @@ minetest.register_alias("flowers:flower_rose", "flowers:rose")
15
17
minetest .register_alias (" flowers:flower_tulip" , " flowers:tulip" )
16
18
minetest .register_alias (" flowers:flower_viola" , " flowers:viola" )
17
19
18
- -- Flower registration function
20
+
21
+ -- Flower registration
22
+
19
23
local function add_simple_flower (name , desc , box , f_groups )
20
24
-- Common flowers' groups
21
25
f_groups .snappy = 3
@@ -24,10 +28,10 @@ local function add_simple_flower(name, desc, box, f_groups)
24
28
f_groups .flora = 1
25
29
f_groups .attached_node = 1
26
30
27
- minetest .register_node (" flowers:" .. name .. " " , {
31
+ minetest .register_node (" flowers:" .. name , {
28
32
description = desc ,
29
33
drawtype = " plantlike" ,
30
- tiles = { " flowers_" .. name .. " .png" },
34
+ tiles = {" flowers_" .. name .. " .png" },
31
35
inventory_image = " flowers_" .. name .. " .png" ,
32
36
wield_image = " flowers_" .. name .. " .png" ,
33
37
sunlight_propagates = true ,
@@ -43,47 +47,104 @@ local function add_simple_flower(name, desc, box, f_groups)
43
47
})
44
48
end
45
49
46
- -- Registrations using the function above
47
50
flowers .datas = {
48
- {" dandelion_yellow " , " Yellow Dandelion " , { - 0.15 , - 0.5 , - 0.15 , 0.15 , 0.2 , 0.15 }, {color_yellow = 1 }},
49
- {" geranium " , " Blue Geranium " , { - 0.15 , - 0.5 , - 0.15 , 0.15 , 0.2 , 0.15 }, {color_blue = 1 }},
50
- {" rose " , " Rose " , { - 0.15 , - 0.5 , - 0.15 , 0.15 , 0.3 , 0.15 }, {color_red = 1 }},
51
- {" tulip " , " Orange Tulip " , { - 0.15 , - 0.5 , - 0.15 , 0.15 , 0.2 , 0.15 }, {color_orange = 1 }},
52
- {" dandelion_white " , " White dandelion " , { - 0.5 , - 0.5 , - 0.5 , 0.5 , - 0.2 , 0.5 }, {color_white = 1 }},
53
- {" viola " , " Viola " , { - 0.5 , - 0.5 , - 0.5 , 0.5 , - 0.2 , 0.5 }, {color_violet = 1 }}
51
+ {" rose " , " Rose " , {- 0.15 , - 0.5 , - 0.15 , 0.15 , 0.3 , 0.15 }, {color_red = 1 }},
52
+ {" tulip " , " Orange Tulip " , {- 0.15 , - 0.5 , - 0.15 , 0.15 , 0.2 , 0.15 }, {color_orange = 1 }},
53
+ {" dandelion_yellow " , " Yellow Dandelion " , {- 0.15 , - 0.5 , - 0.15 , 0.15 , 0.2 , 0.15 }, {color_yellow = 1 }},
54
+ {" geranium " , " Blue Geranium " , {- 0.15 , - 0.5 , - 0.15 , 0.15 , 0.2 , 0.15 }, {color_blue = 1 }},
55
+ {" viola " , " Viola " , {- 0.5 , - 0.5 , - 0.5 , 0.5 , - 0.2 , 0.5 }, {color_violet = 1 }},
56
+ {" dandelion_white " , " White dandelion " , {- 0.5 , - 0.5 , - 0.5 , 0.5 , - 0.2 , 0.5 }, {color_white = 1 }}
54
57
}
55
58
56
59
for _ ,item in pairs (flowers .datas ) do
57
60
add_simple_flower (unpack (item ))
58
61
end
59
62
63
+
64
+ -- Mushrooms
65
+
60
66
local mushrooms_datas = {
61
- {" brown" , 2 }, {" red" , - 6 }
67
+ {" brown" , 2 },
68
+ {" red" , - 6 }
62
69
}
63
70
64
71
for _ , m in pairs (mushrooms_datas ) do
65
72
local name , nut = m [1 ], m [2 ]
66
- minetest .register_node (" flowers:mushroom_" .. name , {
67
- description = string.sub (string.upper (name ), 0 , 1 )..
68
- string.sub (name , 2 ).. " Mushroom" ,
69
- tiles = {" flowers_mushroom_" .. name .. " .png" },
70
- inventory_image = " flowers_mushroom_" .. name .. " .png" ,
71
- wield_image = " flowers_mushroom_" .. name .. " .png" ,
73
+
74
+ -- Register mushrooms
75
+
76
+ minetest .register_node (" flowers:mushroom_" .. name , {
77
+ description = string.sub (string.upper (name ), 0 , 1 ) ..
78
+ string.sub (name , 2 ) .. " Mushroom" ,
79
+ tiles = {" flowers_mushroom_" .. name .. " .png" },
80
+ inventory_image = " flowers_mushroom_" .. name .. " .png" ,
81
+ wield_image = " flowers_mushroom_" .. name .. " .png" ,
72
82
drawtype = " plantlike" ,
73
83
paramtype = " light" ,
74
84
sunlight_propagates = true ,
75
85
walkable = false ,
76
86
buildable_to = true ,
77
- groups = {snappy = 3 ,flammable = 3 ,attached_node = 1 },
87
+ groups = {snappy = 3 , flammable = 3 , attached_node = 1 },
88
+ drop = {
89
+ items = {
90
+ {items = {" flowers:spores_" .. name }, rarity = 2 ,},
91
+ {items = {" flowers:spores_" .. name }, rarity = 2 ,},
92
+ {items = {" flowers:spores_" .. name }, rarity = 2 ,},
93
+ {items = {" flowers:mushroom_" .. name },},
94
+ },
95
+ },
78
96
sounds = default .node_sound_leaves_defaults (),
79
97
on_use = minetest .item_eat (nut ),
80
98
selection_box = {
81
99
type = " fixed" ,
82
100
fixed = {- 0.3 , - 0.5 , - 0.3 , 0.3 , 0 , 0.3 }
83
101
}
84
102
})
103
+
104
+ -- Register spores
105
+
106
+ minetest .register_node (" flowers:spores_" .. name , {
107
+ description = string.sub (string.upper (name ), 0 , 1 ) ..
108
+ string.sub (name , 2 ) .. " Mushroom Spores" ,
109
+ drawtype = " signlike" ,
110
+ tiles = {" flowers_spores_" .. name .. " .png" },
111
+ inventory_image = " flowers_spores_" .. name .. " .png" ,
112
+ wield_image = " flowers_spores_" .. name .. " .png" ,
113
+ paramtype = " light" ,
114
+ paramtype2 = " wallmounted" ,
115
+ sunlight_propagates = true ,
116
+ walkable = false ,
117
+ buildable_to = true ,
118
+ selection_box = {
119
+ type = " wallmounted" ,
120
+ },
121
+ groups = {dig_immediate = 3 , attached_node = 1 },
122
+ })
123
+
124
+ -- Register growth ABMs
125
+
126
+ minetest .register_abm ({
127
+ nodenames = {" flowers:spores_" .. name },
128
+ interval = 14 ,
129
+ chance = 25 ,
130
+ action = function (pos , node )
131
+ local node_under = minetest .get_node_or_nil ({x = pos .x ,
132
+ y = pos .y - 1 , z = pos .z })
133
+ if not node_under then
134
+ return
135
+ end
136
+ if minetest .get_item_group (node_under .name , " soil" ) ~= 0 and
137
+ minetest .get_node_light (pos , nil ) <= 13 then
138
+ minetest .set_node ({x = pos .x , y = pos .y , z = pos .z },
139
+ {name = " flowers:mushroom_" .. name })
140
+ end
141
+ end
142
+ })
85
143
end
86
144
145
+
146
+ -- Flower spread
147
+
87
148
minetest .register_abm ({
88
149
nodenames = {" group:flora" },
89
150
neighbors = {" default:dirt_with_grass" , " default:desert_sand" },
@@ -94,7 +155,7 @@ minetest.register_abm({
94
155
local under = minetest .get_node (pos )
95
156
pos .y = pos .y + 1
96
157
if under .name == " default:desert_sand" then
97
- minetest .set_node (pos , {name = " default:dry_shrub" })
158
+ minetest .set_node (pos , {name = " default:dry_shrub" })
98
159
elseif under .name ~= " default:dirt_with_grass" then
99
160
return
100
161
end
@@ -104,8 +165,8 @@ minetest.register_abm({
104
165
return
105
166
end
106
167
107
- local pos0 = {x = pos .x - 4 , y = pos .y - 4 , z = pos .z - 4 }
108
- local pos1 = {x = pos .x + 4 , y = pos .y + 4 , z = pos .z + 4 }
168
+ local pos0 = {x = pos .x - 4 , y = pos .y - 4 , z = pos .z - 4 }
169
+ local pos1 = {x = pos .x + 4 , y = pos .y + 4 , z = pos .z + 4 }
109
170
if # minetest .find_nodes_in_area (pos0 , pos1 , " group:flora_block" ) > 0 then
110
171
return
111
172
end
@@ -124,7 +185,7 @@ minetest.register_abm({
124
185
return
125
186
end
126
187
if minetest .get_node (seedling ).name == " air" then
127
- minetest .set_node (seedling , {name = node .name })
188
+ minetest .set_node (seedling , {name = node .name })
128
189
end
129
190
end
130
191
end ,
0 commit comments