Skip to content

Commit ab7b7c7

Browse files
committedApr 19, 2016
Flowers: Make flower spread a public function to enable override
Remove search for 'group:flora_block' Enable flora spread on 'dirt with dry grass'
1 parent 80664f9 commit ab7b7c7

File tree

1 file changed

+46
-35
lines changed

1 file changed

+46
-35
lines changed
 

‎mods/flowers/init.lua

+46-35
Original file line numberDiff line numberDiff line change
@@ -71,45 +71,52 @@ end
7171

7272

7373
-- 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
7487

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
9092

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
9598

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
100106
return
101107
end
108+
minetest.set_node(seedling, {name = node.name})
109+
end
110+
end
102111

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(...)
113120
end,
114121
})
115122

@@ -156,7 +163,9 @@ minetest.register_node("flowers:mushroom_brown", {
156163
}
157164
})
158165

159-
-- mushroom spread and death
166+
167+
-- Mushroom spread and death
168+
160169
minetest.register_abm({
161170
nodenames = {"flowers:mushroom_brown", "flowers:mushroom_red"},
162171
interval = 11,
@@ -190,7 +199,9 @@ minetest.register_abm({
190199
end
191200
})
192201

193-
-- these old mushroom related nodes can be simplified now
202+
203+
-- These old mushroom related nodes can be simplified now
204+
194205
minetest.register_alias("flowers:mushroom_spores_brown", "flowers:mushroom_brown")
195206
minetest.register_alias("flowers:mushroom_spores_red", "flowers:mushroom_red")
196207
minetest.register_alias("flowers:mushroom_fertile_brown", "flowers:mushroom_brown")

0 commit comments

Comments
 (0)
Please sign in to comment.