a2ab91c992
fix usage of `math.random` in various places to provide both a minimum and a maximum number, instead of just maximum. also renamed some files very slightly.
57 lines
1.3 KiB
Lua
57 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
|