1
1
-- Minetest 0.4 mod: default
2
2
-- See README.txt for licensing and other information.
3
3
4
+
4
5
-- Namespace for functions
6
+
5
7
flowers = {}
6
8
7
9
8
10
-- Map Generation
11
+
9
12
dofile (minetest .get_modpath (" flowers" ) .. " /mapgen.lua" )
10
13
11
14
15
+ --
16
+ -- Flowers
17
+ --
18
+
12
19
-- Aliases for original flowers mod
13
- minetest .register_alias (" flowers:flower_dandelion_white" , " flowers:dandelion_white" )
14
- minetest .register_alias (" flowers:flower_dandelion_yellow" , " flowers:dandelion_yellow" )
15
- minetest .register_alias (" flowers:flower_geranium" , " flowers:geranium" )
20
+
16
21
minetest .register_alias (" flowers:flower_rose" , " flowers:rose" )
17
22
minetest .register_alias (" flowers:flower_tulip" , " flowers:tulip" )
23
+ minetest .register_alias (" flowers:flower_dandelion_yellow" , " flowers:dandelion_yellow" )
24
+ minetest .register_alias (" flowers:flower_geranium" , " flowers:geranium" )
18
25
minetest .register_alias (" flowers:flower_viola" , " flowers:viola" )
26
+ minetest .register_alias (" flowers:flower_dandelion_white" , " flowers:dandelion_white" )
19
27
20
28
21
29
-- Flower registration
@@ -61,7 +69,58 @@ for _,item in pairs(flowers.datas) do
61
69
end
62
70
63
71
72
+ -- Flower spread
73
+
74
+ minetest .register_abm ({
75
+ nodenames = {" group:flora" },
76
+ neighbors = {" default:dirt_with_grass" , " default:desert_sand" },
77
+ interval = 50 ,
78
+ chance = 25 ,
79
+ action = function (pos , node )
80
+ pos .y = pos .y - 1
81
+ local under = minetest .get_node (pos )
82
+ pos .y = pos .y + 1
83
+ if under .name == " default:desert_sand" then
84
+ minetest .set_node (pos , {name = " default:dry_shrub" })
85
+ elseif under .name ~= " default:dirt_with_grass" then
86
+ return
87
+ end
88
+
89
+ local light = minetest .get_node_light (pos )
90
+ if not light or light < 13 then
91
+ return
92
+ end
93
+
94
+ local pos0 = {x = pos .x - 4 , y = pos .y - 4 , z = pos .z - 4 }
95
+ local pos1 = {x = pos .x + 4 , y = pos .y + 4 , z = pos .z + 4 }
96
+ if # minetest .find_nodes_in_area (pos0 , pos1 , " group:flora_block" ) > 0 then
97
+ return
98
+ end
99
+
100
+ local flowers = minetest .find_nodes_in_area (pos0 , pos1 , " group:flora" )
101
+ if # flowers > 3 then
102
+ return
103
+ end
104
+
105
+ local seedling = minetest .find_nodes_in_area (pos0 , pos1 , " default:dirt_with_grass" )
106
+ if # seedling > 0 then
107
+ seedling = seedling [math.random (# seedling )]
108
+ seedling .y = seedling .y + 1
109
+ light = minetest .get_node_light (seedling )
110
+ if not light or light < 13 then
111
+ return
112
+ end
113
+ if minetest .get_node (seedling ).name == " air" then
114
+ minetest .set_node (seedling , {name = node .name })
115
+ end
116
+ end
117
+ end ,
118
+ })
119
+
120
+
121
+ --
64
122
-- Mushrooms
123
+ --
65
124
66
125
local mushrooms_datas = {
67
126
{" brown" , 2 },
@@ -87,9 +146,9 @@ for _, m in pairs(mushrooms_datas) do
87
146
groups = {snappy = 3 , flammable = 3 , attached_node = 1 },
88
147
drop = {
89
148
items = {
90
- {items = {" flowers:spores_ " .. name }, rarity = 2 ,},
91
- {items = {" flowers:spores_ " .. name }, rarity = 2 ,},
92
- {items = {" flowers:spores_ " .. name }, rarity = 2 ,},
149
+ {items = {" flowers:mushroom_spores_ " .. name }, rarity = 2 ,},
150
+ {items = {" flowers:mushroom_spores_ " .. name }, rarity = 2 ,},
151
+ {items = {" flowers:mushroom_spores_ " .. name }, rarity = 2 ,},
93
152
{items = {" flowers:mushroom_" .. name },},
94
153
},
95
154
},
@@ -101,15 +160,15 @@ for _, m in pairs(mushrooms_datas) do
101
160
}
102
161
})
103
162
104
- -- Register spores
163
+ -- Register mushroom spores
105
164
106
- minetest .register_node (" flowers:spores_ " .. name , {
165
+ minetest .register_node (" flowers:mushroom_spores_ " .. name , {
107
166
description = string.sub (string.upper (name ), 0 , 1 ) ..
108
167
string.sub (name , 2 ) .. " Mushroom Spores" ,
109
168
drawtype = " signlike" ,
110
- tiles = {" flowers_spores_ " .. name .. " .png" },
111
- inventory_image = " flowers_spores_ " .. name .. " .png" ,
112
- wield_image = " flowers_spores_ " .. name .. " .png" ,
169
+ tiles = {" flowers_mushroom_spores_ " .. name .. " .png" },
170
+ inventory_image = " flowers_mushroom_spores_ " .. name .. " .png" ,
171
+ wield_image = " flowers_mushroom_spores_ " .. name .. " .png" ,
113
172
paramtype = " light" ,
114
173
paramtype2 = " wallmounted" ,
115
174
sunlight_propagates = true ,
@@ -120,73 +179,28 @@ for _, m in pairs(mushrooms_datas) do
120
179
},
121
180
groups = {dig_immediate = 3 , attached_node = 1 },
122
181
})
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
- })
143
182
end
144
183
145
184
146
- -- Flower spread
185
+ -- Register growing ABM
147
186
148
187
minetest .register_abm ({
149
- nodenames = {" group:flora" },
150
- neighbors = {" default:dirt_with_grass" , " default:desert_sand" },
151
- interval = 50 ,
152
- chance = 25 ,
188
+ nodenames = {" flowers:mushroom_spores_brown" , " flowers:mushroom_spores_red" },
189
+ interval = 11 ,
190
+ chance = 50 ,
153
191
action = function (pos , node )
154
- pos .y = pos .y - 1
155
- local under = minetest .get_node (pos )
156
- pos .y = pos .y + 1
157
- if under .name == " default:desert_sand" then
158
- minetest .set_node (pos , {name = " default:dry_shrub" })
159
- elseif under .name ~= " default:dirt_with_grass" then
192
+ local node_under = minetest .get_node_or_nil ({x = pos .x ,
193
+ y = pos .y - 1 , z = pos .z })
194
+ if not node_under then
160
195
return
161
196
end
162
-
163
- local light = minetest .get_node_light (pos )
164
- if not light or light < 13 then
165
- return
166
- end
167
-
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 }
170
- if # minetest .find_nodes_in_area (pos0 , pos1 , " group:flora_block" ) > 0 then
171
- return
172
- end
173
-
174
- local flowers = minetest .find_nodes_in_area (pos0 , pos1 , " group:flora" )
175
- if # flowers > 3 then
176
- return
177
- end
178
-
179
- local seedling = minetest .find_nodes_in_area (pos0 , pos1 , " default:dirt_with_grass" )
180
- if # seedling > 0 then
181
- seedling = seedling [math.random (# seedling )]
182
- seedling .y = seedling .y + 1
183
- light = minetest .get_node_light (seedling )
184
- if not light or light < 13 then
185
- return
186
- end
187
- if minetest .get_node (seedling ).name == " air" then
188
- minetest .set_node (seedling , {name = node .name })
197
+ if minetest .get_item_group (node_under .name , " soil" ) ~= 0 and
198
+ minetest .get_node_light (pos , nil ) <= 13 then
199
+ if node .name == " flowers:mushroom_spores_brown" then
200
+ minetest .set_node (pos , {name = " flowers:mushroom_brown" })
201
+ else
202
+ minetest .set_node (pos , {name = " flowers:mushroom_red" })
189
203
end
190
204
end
191
- end ,
205
+ end
192
206
})
0 commit comments