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", "bg_tree:leaves", "bg_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