residentsleeper/scripts/warps.lua

137 lines
2.6 KiB
Lua

local event = require('event')
local commands = require('commands')
minecraft = require('minecraft')
config = require('config')
warpDelay = 60 * 5
homes = {}
warps = {}
lastHomeTime = {}
lastWarpTime = {}
event.on('init', function()
local loadedHomes, err = config.load('homes')
if loadedHomes and not err then
homes = loadedHomes
end
end)
commands.register('sethome', function(user)
local loc = rcon:GetLocation(user)
local c = {}
for i, v in loc() do
c[i] = v
end
homes[user] = c
err = config.save('homes', homes)
if err ~= nil then
print('Unable to save homes')
end
rcon:SendMessage(user, string.format("Home location set to %d, %d, %d", c[1], c[2], c[3]))
end)
commands.register('resethome', function(user)
homes[user] = nil
err = config.save('homes', homes)
if err ~= nil then
print('Unable to save homes')
end
rcon:SendMessage(user, 'Home location reset')
end)
commands.register('home', function(user)
local loc = nil
if homes[user] ~= nil then
loc = homes[user]
end
if loc == nil then
rcon:SendMessage(user, "You haven't set your spawn or home yet.")
return
end
local lastWarp = lastHomeTime[user]
if lastWarp ~= nil and lastWarp + warpDelay > os.time() and not minecraft.isOp(user) then
local delay = warpDelay - (os.time() - lastWarp)
rcon:SendMessage(user, "You need to wait " .. delay .. " seconds before warping again.")
return
end
lastHomeTime[user] = os.time()
rcon:Teleport(user, string.format("%f %d %f", loc[1], loc[2], loc[3]))
end)
commands.register('setwarp <place>', function(user, place)
if not minecraft.isOp(user) then
return
end
local loc = rcon:GetLocation(user)
local c = {}
for i, v in loc() do
c[i] = v
end
warps[place] = c
err = config.save('warps', warps)
if err ~= nil then
print('Unable to save warps')
end
rcon:SendMessage(user, string.format("Warp %s set to %d, %d, %d", place, c[1], c[2], c[3]))
end)
commands.register('warp <place>', function(user, place)
if warps[place] == nil then
rcon:SendMessage(user, "This warp point doesn't exist")
return
end
local loc = warps[place]
local lastWarp = lastWarpTime[user]
if lastWarp ~= nil and lastWarp + warpDelay > os.time() and not minecraft.isOp(user) then
local delay = warpDelay - (os.time() - lastWarp)
rcon:SendMessage(user, "You need to wait " .. delay .. " seconds before warping again.")
return
end
lastWarpTime[user] = os.time()
rcon:Teleport(user, string.format("%f %d %f", loc[1], loc[2], loc[3]))
end)
tprequests = {}
commands.register('tpa <target>', function(user, target)
end)
commands.register('tpaccept', function(user)
end)
commands.register('tpdeny', function(user)
end)