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)
|