68 lines
1.9 KiB
Lua
68 lines
1.9 KiB
Lua
|
|
-- Privileges
|
|
|
|
minetest.register_privilege("towny", {
|
|
description = "Can create and join towns",
|
|
})
|
|
|
|
minetest.register_privilege("towny_admin", {
|
|
description = "Can administrate other people's towns",
|
|
give_to_singleplayer = false
|
|
})
|
|
|
|
-- Commands
|
|
|
|
local function town_command (name, param)
|
|
if not minetest.get_player_by_name(name) then return false, "Can't run command on behalf of offline player." end
|
|
local pr1, pr2 = string.match(param, "^([%a%d_-]+) (.+)$")
|
|
local town = towny:get_player_town(name)
|
|
|
|
-- Pre town requirement
|
|
|
|
if (pr1 == "create" or pr1 == "new") and pr2 then
|
|
return towny:create_town(nil, name, pr2)
|
|
end
|
|
|
|
if not town then
|
|
return false, "You are not currently in a town."
|
|
end
|
|
|
|
-- Town management commands
|
|
local tdata = towny.towns[town]
|
|
|
|
if param == "extend" or param == "claim" then
|
|
return towny:extend_town(nil, name)
|
|
elseif param == "leave" then
|
|
return towny:leave_town(name)
|
|
elseif param == "unclaim" then
|
|
return towny:abridge_town(nil, name)
|
|
elseif param == "visualize" then
|
|
towny.regions:visualize_town(town)
|
|
return true
|
|
elseif (param == "delete" or param == "abandon") or (pr1 == "delete" or pr1 == "abandon") then
|
|
if towny.chat['delete_verify_' .. name] and pr2 == "I WANT TO DELETE MY TOWN" then
|
|
towny.chat['delete_verify_' .. name] = nil
|
|
return towny:delete_town(nil, name)
|
|
else
|
|
towny.chat['delete_verify_' .. name] = true
|
|
minetest.chat_send_player(name, minetest.colorize("#f79204",
|
|
"WARNING! Deleting your town will render ALL of the buildings in it without protection!"))
|
|
return false, "Please run the command again with 'I WANT TO DELETE MY TOWN' in all caps written after it."
|
|
end
|
|
end
|
|
|
|
-- Plot management commands
|
|
if pr1 == "plot" then
|
|
local pl1, pl2 = string.match(pr2, "^([%a%d_-]+) (.+)$")
|
|
|
|
end
|
|
|
|
return false, "Invalid command usage."
|
|
end
|
|
|
|
minetest.register_chatcommand("town", {
|
|
description = "Manage your town",
|
|
privs = {towny = true},
|
|
func = town_command
|
|
})
|