2017-01-12 23:58:42 +01:00
|
|
|
-- register extra flavours of a base nodedef
|
2021-03-16 11:07:17 +01:00
|
|
|
|
|
|
|
local get_connected_players = minetest.get_connected_players
|
|
|
|
local get_node = minetest.get_node
|
|
|
|
local vector_add = vector.add
|
|
|
|
|
2020-11-05 16:05:42 +01:00
|
|
|
walkover = {}
|
|
|
|
walkover.registered_globals = {}
|
|
|
|
|
|
|
|
function walkover.register_global(func)
|
|
|
|
table.insert(walkover.registered_globals, func)
|
|
|
|
end
|
|
|
|
|
2021-03-16 11:07:17 +01:00
|
|
|
local on_walk = {}
|
|
|
|
local registered_globals = {}
|
|
|
|
|
|
|
|
minetest.register_on_mods_loaded(function()
|
|
|
|
for name,def in pairs(minetest.registered_nodes) do
|
|
|
|
if def.on_walk_over then
|
|
|
|
on_walk[name] = def.on_walk_over
|
|
|
|
end
|
|
|
|
end
|
|
|
|
for _,func in ipairs(walkover.registered_globals) do --cache registered globals
|
|
|
|
table.insert(registered_globals, value)
|
|
|
|
end
|
|
|
|
end)
|
|
|
|
|
2017-01-12 23:58:42 +01:00
|
|
|
local timer = 0
|
|
|
|
minetest.register_globalstep(function(dtime)
|
|
|
|
timer = timer + dtime;
|
|
|
|
if timer >= 0.3 then
|
2021-03-16 11:07:17 +01:00
|
|
|
for _,player in ipairs(get_connected_players()) do
|
2019-02-01 06:33:07 +01:00
|
|
|
local pp = player:get_pos()
|
2017-08-21 05:25:15 +02:00
|
|
|
pp.y = math.ceil(pp.y)
|
2021-03-16 11:07:17 +01:00
|
|
|
local loc = vector_add(pp, {x=0,y=-1,z=0})
|
2017-01-12 23:58:42 +01:00
|
|
|
if loc ~= nil then
|
|
|
|
|
2021-03-16 11:07:17 +01:00
|
|
|
local nodeiamon = get_node(loc)
|
2020-11-05 16:05:42 +01:00
|
|
|
|
2017-01-12 23:58:42 +01:00
|
|
|
if nodeiamon ~= nil then
|
2021-03-16 11:07:17 +01:00
|
|
|
if on_walk[nodeiamon.name] then
|
|
|
|
on_walk[nodeiamon.name](loc, nodeiamon, player)
|
2017-01-12 23:58:42 +01:00
|
|
|
end
|
2021-03-16 11:07:17 +01:00
|
|
|
for _,func in ipairs(registered_globals) do
|
2020-11-05 16:05:42 +01:00
|
|
|
func(loc, nodeiamon, player)
|
|
|
|
end
|
2017-01-12 23:58:42 +01:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
timer = 0
|
|
|
|
end
|
|
|
|
end)
|