VoxeLibre/mods/CORE/walkover/init.lua

53 lines
1.3 KiB
Lua
Raw Normal View History

-- register extra flavours of a base nodedef
2021-03-16 13:07:17 +03:00
local get_connected_players = minetest.get_connected_players
local get_node = minetest.get_node
local vector_add = vector.add
2021-03-16 13:22:13 +03:00
local ceil = math.ceil
local pairs = pairs
2021-03-16 13:07:17 +03:00
2020-11-05 18:05:42 +03:00
walkover = {}
walkover.registered_globals = {}
function walkover.register_global(func)
table.insert(walkover.registered_globals, func)
end
2021-03-16 13:07:17 +03: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
2021-03-17 12:48:59 +03:00
table.insert(registered_globals, func)
2021-03-16 13:07:17 +03:00
end
end)
local timer = 0
minetest.register_globalstep(function(dtime)
timer = timer + dtime;
if timer >= 0.3 then
2021-03-16 19:31:29 +03:00
for _,player in pairs(get_connected_players()) do
2021-05-25 01:55:14 +03:00
local pp = player:get_pos()
pp.y = ceil(pp.y)
local loc = vector_add(pp, {x=0,y=-1,z=0})
if loc then
2021-05-25 01:55:14 +03:00
local nodeiamon = get_node(loc)
if nodeiamon then
2021-05-25 01:55:14 +03:00
if on_walk[nodeiamon.name] then
on_walk[nodeiamon.name](loc, nodeiamon, player)
end
for i = 1, #registered_globals do
2021-03-16 13:22:13 +03:00
registered_globals[i](loc, nodeiamon, player)
2021-05-25 01:55:14 +03:00
end
end
end
end
timer = 0
end
end)