blockgame/mods/bg_api/util_node.lua

58 lines
1.3 KiB
Lua

function blockgame.reg_simple_node (name, desc, groups)
local my_modname = minetest.get_current_modname()
return blockgame.register_node(my_modname .. ":" .. name, {
description = desc,
tiles = {
my_modname .. "_" .. name .. ".png",
},
groups = groups,
})
end
-- probably temporary; will probably use groups for this later.
local air_flowable = {
"air",
"tree:leaves",
"tree:leaves_alive",
}
function blockgame.air_flows_through (pos, node)
node = node or minetest.get_node(pos)
local node_name = node.name
for _, name in pairs(air_flowable) do
if name == node_name then return true end
end
return false
end
function blockgame.attempt_place (pos, node)
if minetest.get_node(pos).name ~= "air" then return false end
minetest.set_node(pos, node)
return true
end
function blockgame.random_walk (data)
local pos = vector.copy(data.pos)
local min_steps = data.min_steps or 0
local max_steps = data.max_steps or 8
local check = data.check
local neighborhood = data.neighborhood or blockgame.vector.dirs
local steps = math.random(min_steps, max_steps)
local step = 0
while step < steps do
local dir = blockgame.random_element(neighborhood)
local new_pos = pos + dir
if check(new_pos, minetest.get_node(new_pos)) then pos = new_pos end
step = step + 1
end
return pos
end