refactor grass spreading and related api function.

This commit is contained in:
trans_soup 2023-10-17 15:40:49 +02:00
parent afc58d0b97
commit aae1beea64
3 changed files with 9 additions and 6 deletions

View File

@ -13,11 +13,10 @@ end
function blockgame.air_flows_through (pos, node)
node = node or minetest.get_node(pos)
local node_name = node.name
if node_name == "air" then return true end
return minetest.get_item_group(node_name, "air_flowable") > 0
return blockgame.item_matches(node.name, {
"air",
"group:air_flowable",
})
end

View File

@ -48,7 +48,10 @@ blockgame.register_abm({
})
function attempt_spread (pos)
if minetest.get_node(pos).name ~= "bg_terrain:dirt" then return false end
local name = minetest.get_node(pos).name
if not blockgame.item_matches(name, {"group:grassable"}) then return false end
if not blockgame.air_flows_through(pos + blockgame.vector.dirs.up) then return false end
minetest.set_node(pos, {name = "bg_terrain:grass"})

View File

@ -34,6 +34,7 @@ blockgame.register_node(modname .. ":grass", {
blockgame.reg_simple_node("dirt", "Dirt", {
cracky = 3,
dirty = 1,
grassable = 1,
})
blockgame.register_loose_version(modname .. ":dirt")