Advertisement
Guest User

Minetest: Future ban Mod

a guest
Dec 31st, 2012
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.34 KB | None | 0 0
  1. future_ban_list = {}
  2.  
  3. local file = io.open(minetest.get_worldpath().."/future_banlist.txt", "r")
  4. if file then
  5.     future_ban_list = minetest.deserialize(file:read("*all"))
  6.     file:close()
  7.     if not future_ban_list then
  8.         future_ban_list = {}
  9.     end
  10. end
  11.  
  12. local function save_file()
  13.     local file = io.open(minetest.get_worldpath().."/future_banlist.txt", "w")
  14.     if file then
  15.         file:write(minetest.serialize(future_ban_list))
  16.         file:close()
  17.     end
  18. end
  19.  
  20. minetest.register_chatcommand("future_ban", {
  21.     params = "<playername> | leave playername out to see the future ban list",
  22.     description = "The player will be banned when trying to join",
  23.     privs = {ban=true},
  24.     func = function(name, param)
  25.         if param == "" then
  26.             minetest.chat_send_player(name, "Future ban list: " .. dump(future_ban_list))
  27.             return
  28.         end
  29.         if not minetest.env:get_player_by_name(param) then
  30.             table.insert(future_ban_list, param)
  31.             minetest.chat_send_player(name, param .. " to future ban list added.")
  32.             minetest.log("action", name .. " added " .. param .. " to future ban list.")
  33.             save_file()
  34.             return
  35.         end
  36.         if not minetest.ban_player(param) then
  37.             table.insert(future_ban_list, param)
  38.             minetest.chat_send_player(name, desc .. " to future ban list added.")
  39.             minetest.log("action", name .. " added " .. desc .. " to future ban list.")
  40.             save_file()
  41.         else
  42.             local desc = minetest.get_ban_description(param)
  43.             minetest.chat_send_player(name, "Banned " .. desc .. ".")
  44.             minetest.log("action", name .. " bans " .. desc .. ".")
  45.         end
  46.     end
  47. })
  48.  
  49. minetest.register_on_joinplayer(function(player)
  50.     local name = player:get_player_name()
  51.     for i,n in ipairs(future_ban_list) do
  52.         if n == name then
  53.             if not minetest.ban_player(name) then
  54.                 minetest.chat_send_player(name, "Failed to ban player " .. name .. " (from future ban list).")
  55.             else
  56.                 local desc = minetest.get_ban_description(name)
  57.                 minetest.log("action", desc .. " banned (from future ban list).")
  58.                 table.remove(future_ban_list, i)
  59.                 save_file()
  60.             end
  61.         end
  62.     end
  63. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement