edge2spawn/init.lua

41 lines
1.4 KiB
Lua
Raw Normal View History

2016-05-12 08:27:02 -07:00
-- Edge2Spawn for Minetest
-- Written by shivajiva101@hotmail.com
-- check minetest.conf for settings
local edge = tonumber(minetest.setting_get("edge2spawn_edge")) or 1000
local spawn = minetest.setting_get_pos("static_spawnpoint") or {x= 0, y= 0, z=0}
-- register priv
2016-05-12 08:38:02 -07:00
minetest.register_privilege("explorer","Player can move beyond the edge limit")
2016-05-12 08:27:02 -07:00
--[[ Function creates a table of players and loop through checking players positions
against the edge value, returning any players exceeding this value to
2016-05-12 08:38:02 -07:00
the static spawnpoint unless they have the 'explorer' privilege ]]
2016-05-12 08:27:02 -07:00
function checkPlayers()
-- create table
local players = minetest.get_connected_players()
-- loop table values
for i, player in ipairs(players) do
-- get player position
local pos = vector.round(player:getpos())
2016-05-12 08:38:02 -07:00
-- get player name
local playerName = player:get_player_name()
-- check player priv
if not minetest.check_player_privs(playerName, { explorer = true }) then
-- check player position
2016-05-12 08:27:02 -07:00
if pos.x >= edge or pos.z >= edge or pos.x <= -edge or pos.z <= -edge then
player:setpos(spawn) -- move player to spawn
2016-05-12 08:38:02 -07:00
minetest.chat_send_player(playerName, "Oops you're not allowed to go that far!")
2016-05-12 08:27:02 -07:00
end
end
end
end
2016-05-17 03:14:20 -07:00
local check_throttle = 1
local function check_tick()
checkPlayers() -- call function
minetest.after(check_throttle, check_tick)
2016-05-12 08:27:02 -07:00
end)
2016-05-17 03:14:20 -07:00
-- register globalstep after the server starts
minetest.after(1, check_tick)