115 lines
2.5 KiB
Lua
115 lines
2.5 KiB
Lua
-- chat3/alt.lua
|
|
|
|
chat3.alt = {}
|
|
|
|
local storage = chat3.storage
|
|
local MAX = chat3.settings.get_int("chat3.alt_max") or 3
|
|
|
|
---
|
|
--- Functions (exposed API)
|
|
---
|
|
|
|
-- [function] Get alt list
|
|
function chat3.alt.get(name)
|
|
local list = storage:get_string("alt_list_"..name)
|
|
|
|
if list then
|
|
list = minetest.deserialize(list)
|
|
end
|
|
|
|
return list or {}
|
|
end
|
|
|
|
-- [function] Set alt list
|
|
function chat3.alt.set(name, list)
|
|
storage:set_string("alt_list_"..name, minetest.serialize(list))
|
|
end
|
|
|
|
-- [function] Add alt
|
|
function chat3.alt.add(name, alt)
|
|
local list = chat3.alt.get(name)
|
|
|
|
local count = 0
|
|
for _, i in pairs(list) do
|
|
count = count + 1
|
|
end
|
|
|
|
if count < MAX and not list[alt] then
|
|
list[alt] = true
|
|
chat3.alt.set(name, list)
|
|
else
|
|
return
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
-- [function] Remove alt
|
|
function chat3.alt.remove(name, alt)
|
|
local list = chat3.alt.get(name)
|
|
|
|
if list[alt] then
|
|
list[alt] = nil
|
|
else
|
|
return
|
|
end
|
|
|
|
chat3.alt.set(name, list)
|
|
return true
|
|
end
|
|
|
|
-- [function] List Alt Usernames (returns a table suitable for use with table.concat)
|
|
function chat3.alt.list(name)
|
|
local list, result = chat3.alt.get(name), {}
|
|
if list then
|
|
for alt, i in pairs(list) do
|
|
table.insert(result, alt)
|
|
end
|
|
|
|
if #result > 0 then
|
|
return result
|
|
end
|
|
end
|
|
end
|
|
|
|
---
|
|
--- Registrations
|
|
---
|
|
|
|
-- [chatcommand] Alt
|
|
minetest.register_chatcommand("alt", {
|
|
description = "Manage your chat3 alternate usernames",
|
|
params = "[list | add | del | rst] [<alternate username>]",
|
|
func = function(name, params)
|
|
params = params:split(" ")
|
|
local operation, alt = params[1], params[2]
|
|
|
|
if operation == "list" then
|
|
local list = chat3.alt.list(name)
|
|
if list then
|
|
return true, "Your Alternate Usernames: "..table.concat(list, ", ")
|
|
else
|
|
return false, "You have not yet configured any alternate usernames."
|
|
end
|
|
elseif operation == "add" and alt and alt ~= "" then
|
|
if chat3.alt.add(name, alt) then
|
|
return true, "Added alternate username \""..alt.."\"."
|
|
else
|
|
return false, "You have either reached the max number ("..tostring(MAX)
|
|
..") of alternate usernames, or the alternate username already exists."
|
|
end
|
|
elseif operation == "del" and alt and alt ~= "" then
|
|
if chat3.alt.remove(name, alt) then
|
|
return true, "Removed alternate username \""..alt.."\"."
|
|
else
|
|
return false, "Alternate username already does not exist."
|
|
end
|
|
elseif operation == "rst" then
|
|
chat3.alt.set(name, {})
|
|
return true, "Reset your alternate username list."
|
|
else
|
|
return false, "Invalid parameters (see /help alt)"
|
|
end
|
|
end,
|
|
})
|