summaryrefslogtreecommitdiff
path: root/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'init.lua')
-rw-r--r--init.lua142
1 files changed, 72 insertions, 70 deletions
diff --git a/init.lua b/init.lua
index 398a935..4545fde 100644
--- a/init.lua
+++ b/init.lua
@@ -1,87 +1,89 @@
---Spawn mod for Minetest
---Originally written by VanessaE (I think), rewritten by cheapie
---WTFPL
--Banish command
---Copyright 2016 Gabriel Pérez-Cerezo
---WTFPL
+--Copyright 2016,2018 Gabriel Pérez-Cerezo
+--AGPLv3
local spawn_spawnpos = minetest.setting_get_pos("static_spawnpoint")
-local banish_pos = {x=176,y=18,z=120}
+local banish_pos = {x=-300,y=7,z=-48}
banish = {}
banish.spawn = {}
local modpath = minetest.get_modpath("banish")
-minetest.register_chatcommand("spawn", {
- params = "",
- privs = {teleport=true},
- description = "Teleport to the spawn point",
- func = function(name, param)
- local player = minetest.get_player_by_name(name)
- if not player then
- return false, "Player not found"
- end
- if spawn_spawnpos then
- player:setpos(spawn_spawnpos)
- return true, "Teleporting to spawn..."
- else
- return false, "The spawn point is not set!"
- end
- end,
-})
-
-function banish.banish(param, time)
- local player = minetest.get_player_by_name(param)
- if player == nil then
- return false
- end
- player:setpos(banish_pos)
- if beds.spawn[param] then
- banish.spawn[param] = beds.spawn[param]
- else
- banish.spawn[param] = spawn_spawnpos
- end
- banish.save_spawns()
- beds.spawn[param] = banish_pos
- beds.save_spawns()
- local privs = minetest.get_player_privs(param)
- privs.teleport = false;
- minetest.set_player_privs(param, {interact=true, shout=true})
--- minetest.register_on_respawnplayer(function(player)
--- player:setpos(banish_pos)
--- end)
- minetest.chat_send_player(param, "You were banished! You can try to walk back. You will be able to return to spawn in 5 minutes using the /spawn command.")
- if not time == nil then -- infinite banishment
- minetest.after(time, banish.revert, param)
- end
- return true
+function banish.xbanish(name, param)
+ -- banish player in param.
+ local plname, reason = param:match("(%S+)%s+(.+)")
+ if not plname or not reason then
+ minetest.chat_send_player(name, "banish: invalid syntax")
+ return
+ end
+ local player = minetest.get_player_by_name(plname)
+ if player == nil then
+ minetest.chat_send_player(name,"Player "..plname.." not found.")
+ return false
+ end
+ local record = {
+ source = name,
+ time = os.time(),
+ expires = nil,
+ reason = reason,
+ type = "jail",
+ }
+ xban.add_record(plname, record)
+ if beds.spawn[plname] then
+ banish.spawn[plname] = beds.spawn[plname]
+ else
+ banish.spawn[plname] = spawn_spawnpos
+ end
+ banish.save_spawns()
+ beds.spawn[plname] = banish_pos
+ beds.save_spawns()
+ player:setpos(banish_pos)
+ local privs = minetest.get_player_privs(plname)
+ privs.teleport = false
+ privs.home = false
+ minetest.set_player_privs(plname, {interact=true, shout=true})
+ minetest.chat_send_player(name, "Player "..plname.." has been jailed")
end
-function banish.revert (player)
- local privs = minetest.get_player_privs(player);
- privs.teleport = true;
- privs.home = true;
- minetest.set_player_privs(player, privs)
- minetest.chat_send_player(player, "You recovered your teleport privilege. Use /spawn to return to the spawn point")
- if banish.spawn[player] then
- beds.spawn[player] = banish.spawn[player]
- end
- beds.save_spawns()
--- minetest.register_on_respawnplayer(function(player)
--- player:setpos(spawn_spawnpos)
--- end)
+function banish.xunbanish(name, param)
+ local plname, reason = param:match("(%S+)%s+(.+)")
+ if not plname or not reason then
+ minetest.chat_send_player(name, "banish: invalid syntax")
+ return
+ end
+ if not banish.spawn[plname] then
+ minetest.chat_send_player(name,"Player "..plname.." was never jailed")
+ return
+ end
+ local record = {
+ source = name,
+ time = os.time(),
+ expires = nil,
+ reason = reason,
+ type = "unjail",
+ }
+ xban.add_record(plname, record)
+ beds.spawn[plname] = banish.spawn[plname]
+ beds.save_spawns()
+ minetest.set_player_privs(param, {interact=true, shout=true, home=true})
+ minetest.chat_send_player(name, "Player "..plname.." has been unjailed")
end
-minetest.register_chatcommand("banish", {
- params = "<person>",
- description = "Banishes griefers to a far away location",
+minetest.register_chatcommand("jail", {
+ description = "Jails Players",
+ privs = {kick=true},
+ params = "<player> <reason>",
+ func = function(name, param)
+ banish.xbanish(name, param)
+ end,
+})
+
+minetest.register_chatcommand("unjail", {
+ description = "Unjails players",
privs = {kick=true},
+ params = "<player> <reason>",
func = function(name, param)
- if banish.banish(param, 300) then
- minetest.chat_send_player(name, "Banished player " .. param)
- else
- minetest.chat_send_player(name, "Player " .. param .. " not found")
- end
+ banish.xunbanish(name, param)
end,
})