icyessentials/ess/tools.lua

76 lines
1.9 KiB
Lua

-- Repair command
local function cmd_repair(name, params, splitparams)
local player = minetest.get_player_by_name(name)
local commit = 0
if splitparams[1] == name and splitparams[2] == "all" then
splitparams[1] = "all"
end
if #splitparams > 0 then
if splitparams[1] == "all" then
if not ess.priv_match(name, "ess.tools.repairall") then
return ess.reject_permission()
end
-- Repair all tools
commit = 2
elseif splitparams[2] == "all" and minetest.get_player_by_name(splitparams[1]) then
if not ess.priv_match(name, "ess.tools.repairall.other") then
return ess.reject_permission()
end
player = minetest.get_player_by_name(splitparams[1])
-- Repair all of a player's tools
commit = 2
elseif splitparams[1] ~= name and minetest.get_player_by_name(splitparams[1]) then
if not ess.priv_match(name, "ess.tools.repair.other") then
return ess.reject_permission()
end
player = minetest.get_player_by_name(splitparams[1])
-- Repair a player's held tool
commit = 1
end
else
-- Repair my own tool
commit = 1
end
if commit == 1 and player then
local held = player:get_wielded_item()
if held:get_wear() > 0 then
held:set_wear(0)
end
player:set_wielded_item(held)
return true, "Successfully repaired the held tool!"
elseif commit == 2 and player then
local inv = player:get_inventory()
local list = inv:get_list("main")
for _,stack in pairs(list) do
if stack:get_wear() > 0 then
stack:set_wear(0)
end
end
inv:set_list("main", list)
return true, "Successfully repaired all tools!"
end
return false,"Invalid parameters."
end
local commands = {
["repair"] = {
description = "Repair currently held tool.",
aliases = {"fix"},
privs = {
["ess.tools.repair"] = true,
["ess.tools.repair.other"] = true,
["ess.tools.repairall"] = true,
["ess.tools.repairall.other"] = true,
},
params = "[<playername>] [all]",
func = cmd_repair
}
}
ess.autoregister(commands, "tools")