@@ -204,38 +204,34 @@ minetest.register_node("flowers:mushroom_brown", {
204
204
205
205
-- Mushroom spread and death
206
206
207
+ function flowers .mushroom_spread (pos , node )
208
+ if minetest .get_node_light (pos , nil ) == 15 then
209
+ minetest .remove_node (pos )
210
+ return
211
+ end
212
+ local positions = minetest .find_nodes_in_area_under_air (
213
+ {x = pos .x - 1 , y = pos .y - 2 , z = pos .z - 1 },
214
+ {x = pos .x + 1 , y = pos .y + 1 , z = pos .z + 1 },
215
+ {" group:soil" , " group:tree" })
216
+ if # positions == 0 then
217
+ return
218
+ end
219
+ local pos2 = positions [math.random (# positions )]
220
+ pos2 .y = pos2 .y + 1
221
+ if minetest .get_node_light (pos , 0.5 ) <= 3 and
222
+ minetest .get_node_light (pos2 , 0.5 ) <= 3 then
223
+ minetest .set_node (pos2 , {name = node .name })
224
+ end
225
+ end
226
+
207
227
minetest .register_abm ({
208
228
label = " Mushroom spread" ,
209
229
nodenames = {" flowers:mushroom_brown" , " flowers:mushroom_red" },
210
230
interval = 11 ,
211
- chance = 50 ,
212
- action = function (pos , node )
213
- if minetest .get_node_light (pos , nil ) == 15 then
214
- minetest .remove_node (pos )
215
- return
216
- end
217
- local random = {
218
- x = pos .x + math.random (- 2 , 2 ),
219
- y = pos .y + math.random (- 1 , 1 ),
220
- z = pos .z + math.random (- 2 , 2 )
221
- }
222
- local random_node = minetest .get_node_or_nil (random )
223
- if not random_node or random_node .name ~= " air" then
224
- return
225
- end
226
- local node_under = minetest .get_node_or_nil ({x = random .x ,
227
- y = random .y - 1 , z = random .z })
228
- if not node_under then
229
- return
230
- end
231
-
232
- if (minetest .get_item_group (node_under .name , " soil" ) ~= 0 or
233
- minetest .get_item_group (node_under .name , " tree" ) ~= 0 ) and
234
- minetest .get_node_light (pos , 0.5 ) <= 3 and
235
- minetest .get_node_light (random , 0.5 ) <= 3 then
236
- minetest .set_node (random , {name = node .name })
237
- end
238
- end
231
+ chance = 150 ,
232
+ action = function (...)
233
+ flowers .mushroom_spread (... )
234
+ end ,
239
235
})
240
236
241
237
0 commit comments