chown: cleanup and tweak

- update help text to standard syntax
- streamline duplicate code
- remove unnecessary param count checks
- remove explicit nil check where not needed
- updated locale to be neutral to admin or owner
- don't call get_owner or valid_password if is admin
- remove core.player_exists() call since target was checked when joined
faction
- abort early if no target or password provided
This commit is contained in:
Luke aka SwissalpS 2024-09-15 07:01:32 +02:00
parent e7bc7a5da8
commit f130b50565
3 changed files with 19 additions and 30 deletions

@ -430,43 +430,32 @@ local function handle_command(name, param)
end end
end end
elseif action == "chown" then elseif action == "chown" then
local target = params[2]
local password = params[3]
local faction_name = params[4]
if not target then
return false, S("Missing player name.")
elseif not password then
return false, S("Missing password.")
end
local own_factions = factions.get_administered_factions(name) local own_factions = factions.get_administered_factions(name)
local number_factions = own_factions and table.getn(own_factions) or 0 local number_factions = own_factions and table.getn(own_factions) or 0
local faction_name = nil
local target = nil
local password = nil
if number_factions == 0 then if number_factions == 0 then
return false, S("You don't own any factions, you can't use this command.") return false, S("You don't own any factions, you can't use this command.")
elseif #params < 3 then elseif not faction_name and number_factions == 1 then
if params[2] ~= nil and minetest.player_exists(params[2]) then
return false, S("Missing password.")
else
return false, S("Missing player name.")
end
elseif number_factions == 1 and #params == 3 then
faction_name = own_factions[1] faction_name = own_factions[1]
target = params[2] else
password = params[3]
elseif #params >= 4 then
faction_name = params[4]
target = params[2]
password = params[3]
end
if faction_name == nil then
return false, S( return false, S(
"You are the owner of multiple factions, you have to choose one of them: @1.", "You are the owner of multiple factions, you have to choose one of them: @1.",
table.concat(own_factions, ", ") table.concat(own_factions, ", ")
) )
elseif target == nil then end
return false, S("Missing player name.") if not is_admin and name ~= factions.get_owner(faction_name) then
elseif password == nil then return false, S("Permission denied: You are not the owner of that faction, "
return false, S("Missing password.") .. "and don't have the @1 privilege.", factions.priv)
elseif name ~= factions.get_owner(faction_name) and not minetest.get_player_privs(name)[factions.priv] then
return false, S("Permission denied: You are not the owner of that faction, " ..
"and don't have the @1 privilege.", factions.priv)
elseif not facts[faction_name].members[target] then elseif not facts[faction_name].members[target] then
return false, S("@1 isn't in your faction.", target) return false, S("@1 isn't in faction @2.", target)
elseif not factions.valid_password(faction_name, password) then elseif not is_admin and not factions.valid_password(faction_name, password) then
return false, S("Permission denied: Wrong password.") return false, S("Permission denied: Wrong password.")
else else
if factions.chown(faction_name, target) then if factions.chown(faction_name, target) then
@ -511,11 +500,11 @@ minetest.register_chatcommand("factions", {
.."info [<faction>]: "..S("See information about a faction").."\n" .."info [<faction>]: "..S("See information about a faction").."\n"
.."player_info [<player>]: "..S("See information about a player").."\n" .."player_info [<player>]: "..S("See information about a player").."\n"
.."join <faction> <password>: "..S("Join an existing faction").."\n" .."join <faction> <password>: "..S("Join an existing faction").."\n"
.."chown <player> <password> [faction]: "..S("Transfer ownership of your faction").."\n"
.."leave [<faction>]: "..S("Leave your faction").."\n" .."leave [<faction>]: "..S("Leave your faction").."\n"
.."kick <player> [<faction>]: "..S("Kick someone from your faction or from the given faction").."\n" .."kick <player> [<faction>]: "..S("Kick someone from your faction or from the given faction").."\n"
.."disband <password> [<faction>]: "..S("Disband your faction or the given faction").."\n" .."disband <password> [<faction>]: "..S("Disband your faction or the given faction").."\n"
.."passwd <password> [<faction>]: "..S("Change your faction's password or the password of the given faction").."\n" .."passwd <password> [<faction>]: "..S("Change your faction's password or the password of the given faction").."\n"
.."chown <player> <password> [<faction>]: "..S("Transfer ownership of your faction").."\n"
.."invite <player> <faction>: "..S("Add player to a faction, you need @1 priv", factions.priv).."\n", .."invite <player> <faction>: "..S("Add player to a faction, you need @1 priv", factions.priv).."\n",
description = "", description = "",

@ -7,7 +7,7 @@
@1 is in the following factions: @2.=@1 est dans les factions suivantes : @2. @1 is in the following factions: @2.=@1 est dans les factions suivantes : @2.
@1 is now a member of faction @2.=@1 est maintenant membre de la faction @2. @1 is now a member of faction @2.=@1 est maintenant membre de la faction @2.
@1 isn't in your faction.=@1 nest pas dans votre faction. @1 isn't in faction @2.=@1 nest pas dans la faction @2.
Add player to a faction, you need @1 privs=Ajoute un joueur à une faction, nécessite le privilège @1 Add player to a faction, you need @1 privs=Ajoute un joueur à une faction, nécessite le privilège @1
Allow the use of all playerfactions commands=Autorise lutilisation de toutes les commandes de playerfactions Allow the use of all playerfactions commands=Autorise lutilisation de toutes les commandes de playerfactions

@ -7,7 +7,7 @@
@1 is in the following factions: @2.= @1 is in the following factions: @2.=
@1 is now a member of faction @2.= @1 is now a member of faction @2.=
@1 isn't in your faction.= @1 isn't in faction @2.=
Add player to a faction, you need @1 privs= Add player to a faction, you need @1 privs=
Allow the use of all playerfactions commands= Allow the use of all playerfactions commands=