|
71 | 71 |
|
72 | 72 |
|
73 | 73 | -- Flower spread
|
| 74 | +-- Public function to enable override by mods |
| 75 | + |
| 76 | +function flowers.flower_spread(pos, node) |
| 77 | + pos.y = pos.y - 1 |
| 78 | + local under = minetest.get_node(pos) |
| 79 | + pos.y = pos.y + 1 |
| 80 | + if under.name == "default:desert_sand" then |
| 81 | + minetest.set_node(pos, {name = "default:dry_shrub"}) |
| 82 | + return |
| 83 | + elseif under.name ~= "default:dirt_with_grass" and |
| 84 | + under.name ~= "default:dirt_with_dry_grass" then |
| 85 | + return |
| 86 | + end |
74 | 87 |
|
75 |
| -minetest.register_abm({ |
76 |
| - nodenames = {"group:flora"}, |
77 |
| - neighbors = {"default:dirt_with_grass", "default:desert_sand"}, |
78 |
| - interval = 13, |
79 |
| - chance = 96, |
80 |
| - action = function(pos, node) |
81 |
| - pos.y = pos.y - 1 |
82 |
| - local under = minetest.get_node(pos) |
83 |
| - pos.y = pos.y + 1 |
84 |
| - if under.name == "default:desert_sand" then |
85 |
| - minetest.set_node(pos, {name = "default:dry_shrub"}) |
86 |
| - return |
87 |
| - elseif under.name ~= "default:dirt_with_grass" then |
88 |
| - return |
89 |
| - end |
| 88 | + local light = minetest.get_node_light(pos) |
| 89 | + if not light or light < 13 then |
| 90 | + return |
| 91 | + end |
90 | 92 |
|
91 |
| - local light = minetest.get_node_light(pos) |
92 |
| - if not light or light < 13 then |
93 |
| - return |
94 |
| - end |
| 93 | + local pos0 = vector.subtract(pos, 4) |
| 94 | + local pos1 = vector.add(pos, 4) |
| 95 | + if #minetest.find_nodes_in_area(pos0, pos1, "group:flora") > 3 then |
| 96 | + return |
| 97 | + end |
95 | 98 |
|
96 |
| - local pos0 = vector.subtract(pos, 4) |
97 |
| - local pos1 = vector.add(pos, 4) |
98 |
| - if #minetest.find_nodes_in_area(pos0, pos1, "group:flora") > 3 or |
99 |
| - #minetest.find_nodes_in_area(pos0, pos1, "group:flora_block") > 0 then |
| 99 | + local seedling = minetest.find_nodes_in_area_under_air(pos0, pos1, |
| 100 | + {"default:dirt_with_grass", "default:dirt_with_dry_grass"}) |
| 101 | + if #seedling > 0 then |
| 102 | + seedling = seedling[math.random(#seedling)] |
| 103 | + seedling.y = seedling.y + 1 |
| 104 | + light = minetest.get_node_light(seedling) |
| 105 | + if not light or light < 13 then |
100 | 106 | return
|
101 | 107 | end
|
| 108 | + minetest.set_node(seedling, {name = node.name}) |
| 109 | + end |
| 110 | +end |
102 | 111 |
|
103 |
| - local seedling = minetest.find_nodes_in_area_under_air(pos0, pos1, "default:dirt_with_grass") |
104 |
| - if #seedling > 0 then |
105 |
| - seedling = seedling[math.random(#seedling)] |
106 |
| - seedling.y = seedling.y + 1 |
107 |
| - light = minetest.get_node_light(seedling) |
108 |
| - if not light or light < 13 then |
109 |
| - return |
110 |
| - end |
111 |
| - minetest.set_node(seedling, {name = node.name}) |
112 |
| - end |
| 112 | +minetest.register_abm({ |
| 113 | + nodenames = {"group:flora"}, |
| 114 | + neighbors = {"default:dirt_with_grass", "default:dirt_with_dry_grass", |
| 115 | + "default:desert_sand"}, |
| 116 | + interval = 13, |
| 117 | + chance = 96, |
| 118 | + action = function(...) |
| 119 | + flowers.flower_spread(...) |
113 | 120 | end,
|
114 | 121 | })
|
115 | 122 |
|
@@ -156,7 +163,9 @@ minetest.register_node("flowers:mushroom_brown", {
|
156 | 163 | }
|
157 | 164 | })
|
158 | 165 |
|
159 |
| --- mushroom spread and death |
| 166 | + |
| 167 | +-- Mushroom spread and death |
| 168 | + |
160 | 169 | minetest.register_abm({
|
161 | 170 | nodenames = {"flowers:mushroom_brown", "flowers:mushroom_red"},
|
162 | 171 | interval = 11,
|
@@ -190,7 +199,9 @@ minetest.register_abm({
|
190 | 199 | end
|
191 | 200 | })
|
192 | 201 |
|
193 |
| --- these old mushroom related nodes can be simplified now |
| 202 | + |
| 203 | +-- These old mushroom related nodes can be simplified now |
| 204 | + |
194 | 205 | minetest.register_alias("flowers:mushroom_spores_brown", "flowers:mushroom_brown")
|
195 | 206 | minetest.register_alias("flowers:mushroom_spores_red", "flowers:mushroom_red")
|
196 | 207 | minetest.register_alias("flowers:mushroom_fertile_brown", "flowers:mushroom_brown")
|
|
0 commit comments