Mineclonia/mods/PLAYER/mcl_anticheat/init.lua

36 lines
753 B
Lua

local MAX_TP_DOWN = 100
mcl_anticheat = {
positions = {}
}
function mcl_anticheat.set_pos(player, pos)
player:set_pos(pos)
if player:is_player() then
mcl_anticheat.positions[player] = pos
end
end
minetest.register_on_joinplayer(function(player)
mcl_anticheat.positions[player] = player:get_pos()
end)
minetest.register_on_leaveplayer(function(player)
mcl_anticheat.positions[player] = nil
end)
minetest.register_globalstep(function()
for _, player in pairs(minetest.get_connected_players()) do
local pos = player:get_pos()
local old_pos = mcl_anticheat.positions[player]
if old_pos.y - pos.y > MAX_TP_DOWN and not player:get_attach() then
player:set_pos(old_pos)
else
mcl_anticheat.positions[player] = pos
end
end
end)