forked from Mineclonia/Mineclonia
36 lines
753 B
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)
|