More error message stuff

This commit is contained in:
ThePython10110 2024-05-26 16:40:35 -07:00
parent 8c155ce868
commit 56397edbfc
17 changed files with 62 additions and 63 deletions

View File

@ -427,7 +427,7 @@ function better_commands.parse_selector(selector_data, context, require_one)
end end
if require_one then if require_one then
if #result == 0 then if #result == 0 then
return nil, S("No matching entities found") return nil, S("No entity was found")
elseif #result > 1 then elseif #result > 1 then
return nil, S("Multiple matching entities found") return nil, S("Multiple matching entities found")
end end

View File

@ -1,4 +1,4 @@
--local bc = better_commands --local bc = better_commands--local bc = better_commands
local S = minetest.get_translator(minetest.get_current_modname()) local S = minetest.get_translator(minetest.get_current_modname())
better_commands.register_command("ability", { better_commands.register_command("ability", {
@ -18,7 +18,7 @@ better_commands.register_command("ability", {
return false, minetest.colorize("red", S("[value] must be true or false (or missing), not '@1'", set)), 0 return false, minetest.colorize("red", S("[value] must be true or false (or missing), not '@1'", set)), 0
end end
local targets, err = better_commands.parse_selector(split_param[1], context, true) local targets, err = better_commands.parse_selector(split_param[1], context, true)
if err or not targets then return false, err, 0 end if err or not targets then return false, minetest.colorize("red", err), 0 end
local priv = split_param[2] and split_param[2][3] local priv = split_param[2] and split_param[2][3]
local target = targets[1] local target = targets[1]
if target.is_player and target:is_player() then if target.is_player and target:is_player() then
@ -74,6 +74,6 @@ better_commands.register_command("ability", {
end end
end end
end end
return false, minetest.colorize("red", S("No matching entity found")), 0 return false, minetest.colorize("red", S("No entity was found")), 0
end end
}) })

View File

@ -15,7 +15,7 @@ better_commands.register_command("say", {
if context.command_block or minetest.check_player_privs(context.origin, {server = true}) then if context.command_block or minetest.check_player_privs(context.origin, {server = true}) then
local err local err
message, err = better_commands.expand_selectors(param, split_param, 1, context) message, err = better_commands.expand_selectors(param, split_param, 1, context)
if err then return false, err, 0 end if err then return false, minetest.colorize("red", err), 0 end
else else
message = param message = param
end end
@ -37,13 +37,13 @@ better_commands.register_command("msg", {
return false, nil, 0 return false, nil, 0
end end
local targets, err = better_commands.parse_selector(split_param[1], context) local targets, err = better_commands.parse_selector(split_param[1], context)
if err or not targets then return false, err, 0 end if err or not targets then return false, minetest.colorize("red", err), 0 end
local target_start = S("@1 whispers to you: ", better_commands.get_entity_name(context.executor)) local target_start = S("@1 whispers to you: ", better_commands.get_entity_name(context.executor))
local message local message
if context.command_block or minetest.check_player_privs(context.origin, {server = true}) then if context.command_block or minetest.check_player_privs(context.origin, {server = true}) then
local err local err
message, err = better_commands.expand_selectors(param, split_param, 2, context) message, err = better_commands.expand_selectors(param, split_param, 2, context)
if err then return false, err, 0 end if err then return false, minetest.colorize("red", err), 0 end
else else
---@diagnostic disable-next-line: param-type-mismatch ---@diagnostic disable-next-line: param-type-mismatch
message = param:sub(split_param[2][1], -1) message = param:sub(split_param[2][1], -1)
@ -78,7 +78,7 @@ better_commands.register_command("me", {
if context.command_block or minetest.check_player_privs(context.origin, {server = true}) then if context.command_block or minetest.check_player_privs(context.origin, {server = true}) then
local err local err
message, err = better_commands.expand_selectors(param, split_param, 1, context) message, err = better_commands.expand_selectors(param, split_param, 1, context)
if err then return false, err, 0 end if err then return false, minetest.colorize("red", err), 0 end
else else
message = param message = param
end end
@ -112,7 +112,7 @@ better_commands.register_command("teammsg", {
if context.command_block or minetest.check_player_privs(context.origin, {server = true}) then if context.command_block or minetest.check_player_privs(context.origin, {server = true}) then
local err local err
message, err = better_commands.expand_selectors(param, split_param, 1, context) message, err = better_commands.expand_selectors(param, split_param, 1, context)
if err then return false, err, 0 end if err then return false, minetest.colorize("red", err), 0 end
else else
---@diagnostic disable-next-line: param-type-mismatch ---@diagnostic disable-next-line: param-type-mismatch
message = param:sub(split_param[1][1], -1) message = param:sub(split_param[1][1], -1)

View File

@ -14,7 +14,7 @@ better_commands.register_command("clear", {
targets = {context.executor} targets = {context.executor}
else else
targets, err = better_commands.parse_selector(selector, context) targets, err = better_commands.parse_selector(selector, context)
if err or not targets then return false, err, 0 end if err or not targets then return false, minetest.colorize("red", err), 0 end
end end
local filter, group local filter, group
if split_param[2] then if split_param[2] then
@ -31,7 +31,7 @@ better_commands.register_command("clear", {
filter = split_param[2][3]:sub(7, -1) filter = split_param[2][3]:sub(7, -1)
else else
filter, err = better_commands.parse_item(split_param[2], true) filter, err = better_commands.parse_item(split_param[2], true)
if err or not filter then return false, err, 0 end if err or not filter then return false, minetest.colorize("red", err), 0 end
end end
end end
local remove_max = tonumber(split_param[3] and split_param[3][3]) local remove_max = tonumber(split_param[3] and split_param[3][3])

View File

@ -223,7 +223,7 @@ better_commands.execute_subcommands = {
end end
else else
if not (branches.param[branch_data.i+1] and branches.param[branch_data.i+2]) then if not (branches.param[branch_data.i+1] and branches.param[branch_data.i+2]) then
return false, minetest.colorize("red", S("Missing argument(s)) for rotated") return false, minetest.colorize("red", S("Missing argument(s)) for rotated"))
end end
local victim_rot = branch_data.rot local victim_rot = branch_data.rot
if branches.param[branch_data.i+1].type == "number" then if branches.param[branch_data.i+1].type == "number" then

View File

@ -18,7 +18,7 @@ better_commands.register_command("gamemode", {
if not context then return false, minetest.colorize("red", S("Missing context")), 0 end if not context then return false, minetest.colorize("red", S("Missing context")), 0 end
if not context.executor then return false, minetest.colorize("red", S("Missing executor")), 0 end if not context.executor then return false, minetest.colorize("red", S("Missing executor")), 0 end
local split_param, err = better_commands.parse_params(param) local split_param, err = better_commands.parse_params(param)
if err then return false, err, 0 end if err then return false, minetest.colorize("red", err), 0 end
local gamemode = split_param[1] and split_param[1][3] local gamemode = split_param[1] and split_param[1][3]
if not gamemode then return false, minetest.colorize("red", S("Missing gamemode")), 0 end if not gamemode then return false, minetest.colorize("red", S("Missing gamemode")), 0 end
gamemode = better_commands.gamemode_aliases[gamemode] or gamemode gamemode = better_commands.gamemode_aliases[gamemode] or gamemode
@ -34,7 +34,7 @@ better_commands.register_command("gamemode", {
if split_param[2] then if split_param[2] then
local err local err
targets, err = better_commands.parse_selector(split_param[2], context) targets, err = better_commands.parse_selector(split_param[2], context)
if err or not targets then return false, err, 0 end if err or not targets then return false, minetest.colorize("red", err), 0 end
self = false self = false
end end
local count = 0 local count = 0

View File

@ -18,7 +18,7 @@ end
-- Modified from builtin/game/chat.lua -- Modified from builtin/game/chat.lua
local function handle_give_command(receiver, stack_data) local function handle_give_command(receiver, stack_data)
local itemstack, err = better_commands.parse_item(stack_data) local itemstack, err = better_commands.parse_item(stack_data)
if err or not itemstack then return false, err, 0 end if err or not itemstack then return false, minetest.colorize("red", err), 0 end
if itemstack:is_empty() then if itemstack:is_empty() then
return false, minetest.colorize("red", S("Cannot give an empty item")), 0 return false, minetest.colorize("red", S("Cannot give an empty item")), 0
elseif (not itemstack:is_known()) or (itemstack:get_name() == "unknown") then elseif (not itemstack:is_known()) or (itemstack:get_name() == "unknown") then
@ -55,7 +55,7 @@ better_commands.register_command("give", {
end end
local message local message
local targets, err = better_commands.parse_selector(split_param[1], context) local targets, err = better_commands.parse_selector(split_param[1], context)
if err or not targets then return false, err, 0 end if err or not targets then return false, minetest.colorize("red", err), 0 end
local count = 0 local count = 0
for _, target in ipairs(targets) do for _, target in ipairs(targets) do
if target.is_player and target:is_player() then if target.is_player and target:is_player() then

View File

@ -12,7 +12,7 @@ better_commands.register_command("kill", {
if param == "" then param = "@s" end if param == "" then param = "@s" end
local split_param = better_commands.parse_params(param) local split_param = better_commands.parse_params(param)
local targets, err = better_commands.parse_selector(split_param[1], context) local targets, err = better_commands.parse_selector(split_param[1], context)
if err or not targets then return false, err, 0 end if err or not targets then return false, minetest.colorize("red", err), 0 end
local count = 0 local count = 0
local last local last
for _, target in ipairs(targets) do for _, target in ipairs(targets) do
@ -36,7 +36,7 @@ better_commands.register_command("kill", {
end end
end end
if count < 1 then if count < 1 then
return false, minetest.colorize("red", S("No matching entity found")), 0 return false, minetest.colorize("red", S("No entity was found")), 0
elseif count == 1 then elseif count == 1 then
return true, S("Killed @1", last), count return true, S("Killed @1", last), count
else else

View File

@ -15,11 +15,11 @@ better_commands.register_command("playsound", {
local targets, err, next local targets, err, next
if split_param[2].type == "selector" then if split_param[2].type == "selector" then
targets, err = better_commands.parse_selector(split_param[2], context) targets, err = better_commands.parse_selector(split_param[2], context)
if err or not targets then return false, err, 0 end if err or not targets then return false, minetest.colorize("red", err), 0 end
next = 3 next = 3
else else
local pos, err = better_commands.parse_pos(split_param, 2, context) local pos, err = better_commands.parse_pos(split_param, 2, context)
if err or not pos then return false, err, 0 if err or not pos then return false, minetest.colorize("red", err), 0
end end
targets = {pos} targets = {pos}
next = 5 next = 5

View File

@ -174,7 +174,7 @@ better_commands.register_command("scoreboard", {
if not score then return false, minetest.colorize("red", S("Missing score")), 0 end if not score then return false, minetest.colorize("red", S("Missing score")), 0 end
score = math.floor(score) score = math.floor(score)
local names, err = better_commands.get_scoreboard_names(selector, context, objective) local names, err = better_commands.get_scoreboard_names(selector, context, objective)
if err or not names then return false, err, 0 end if err or not names then return false, minetest.colorize("red", err), 0 end
local last local last
local scores = better_commands.scoreboard.objectives[objective].scores local scores = better_commands.scoreboard.objectives[objective].scores
for name in pairs(names) do for name in pairs(names) do
@ -215,7 +215,7 @@ better_commands.register_command("scoreboard", {
end end
local scores = better_commands.scoreboard.objectives[objective].scores local scores = better_commands.scoreboard.objectives[objective].scores
local names, err = better_commands.get_scoreboard_names(selector, context, objective) local names, err = better_commands.get_scoreboard_names(selector, context, objective)
if err or not names then return false, err, 0 end if err or not names then return false, minetest.colorize("red", err), 0 end
local last local last
for name in pairs(names) do for name in pairs(names) do
last = name last = name
@ -268,7 +268,7 @@ better_commands.register_command("scoreboard", {
return false, minetest.colorize("red", S("Must be 'blank', 'fixed', or 'styled'")), 0 return false, minetest.colorize("red", S("Must be 'blank', 'fixed', or 'styled'")), 0
end end
local names, err = better_commands.get_scoreboard_names(selector, context, objective) local names, err = better_commands.get_scoreboard_names(selector, context, objective)
if err or not names then return false, err, 0 end if err or not names then return false, minetest.colorize("red", err), 0 end
local scores = better_commands.scoreboard.objectives[objective].scores local scores = better_commands.scoreboard.objectives[objective].scores
local count = 0 local count = 0
for name in pairs(names) do for name in pairs(names) do
@ -293,7 +293,7 @@ better_commands.register_command("scoreboard", {
return false, minetest.colorize("red", S("@1 is not a trigger objective", objective)), 0 return false, minetest.colorize("red", S("@1 is not a trigger objective", objective)), 0
end end
local names, err = better_commands.get_scoreboard_names(selector, context, objective) local names, err = better_commands.get_scoreboard_names(selector, context, objective)
if err or not names then return false, err, 0 end if err or not names then return false, minetest.colorize("red", err), 0 end
local scores = objective_data.scores local scores = objective_data.scores
local display_name = objective_data.display_name or objective local display_name = objective_data.display_name or objective
local last local last
@ -319,7 +319,7 @@ better_commands.register_command("scoreboard", {
return false, minetest.colorize("red", S("Unknown scoreboard objective '@1'", objective)), 0 return false, minetest.colorize("red", S("Unknown scoreboard objective '@1'", objective)), 0
end end
local names, err = better_commands.get_scoreboard_names(selector, context, objective, true) local names, err = better_commands.get_scoreboard_names(selector, context, objective, true)
if err or not names then return false, err, 0 end if err or not names then return false, minetest.colorize("red", err), 0 end
local name = names[1] local name = names[1]
if name then if name then
local score = better_commands.scoreboard.objectives[objective].scores[name] local score = better_commands.scoreboard.objectives[objective].scores[name]
@ -355,7 +355,7 @@ better_commands.register_command("scoreboard", {
return true, S("There are @1 tracked player(s): @2", result_count, result_string), result_count return true, S("There are @1 tracked player(s): @2", result_count, result_string), result_count
else else
local names, err = better_commands.get_scoreboard_names(selector, context, nil, true) local names, err = better_commands.get_scoreboard_names(selector, context, nil, true)
if err or not names then return false, err, 0 end if err or not names then return false, minetest.colorize("red", err), 0 end
local name = names[1] local name = names[1]
local results = {} local results = {}
for _, data in pairs(better_commands.scoreboard.objectives) do for _, data in pairs(better_commands.scoreboard.objectives) do
@ -397,11 +397,11 @@ better_commands.register_command("scoreboard", {
return false, minetest.colorize("red", S("Invalid target objective")), 0 return false, minetest.colorize("red", S("Invalid target objective")), 0
end end
local sources, err = better_commands.get_scoreboard_names(source_selector, context) local sources, err = better_commands.get_scoreboard_names(source_selector, context)
if err or not sources then return false, err, 0 end if err or not sources then return false, minetest.colorize("red", err), 0 end
local targets, err = better_commands.get_scoreboard_names(target_selector, context) local targets, err = better_commands.get_scoreboard_names(target_selector, context)
local source_scores = better_commands.scoreboard.objectives[source_objective].scores local source_scores = better_commands.scoreboard.objectives[source_objective].scores
local target_scores = better_commands.scoreboard.objectives[target_objective].scores local target_scores = better_commands.scoreboard.objectives[target_objective].scores
if err or not targets then return false, err, 0 end if err or not targets then return false, minetest.colorize("red", err), 0 end
local change_count, score_count = 0, 0 local change_count, score_count = 0, 0
local last_source, last_target, op_string, preposition local last_source, last_target, op_string, preposition
local swap = false local swap = false
@ -460,7 +460,7 @@ better_commands.register_command("scoreboard", {
end end
end end
if change_count < 1 then if change_count < 1 then
return false, minetest.colorize("red", S("No matching entity found")), 0 return false, minetest.colorize("red", S("No entity was found")), 0
elseif change_count == 1 then elseif change_count == 1 then
return true, S( return true, S(
"@1 [@2] score of @3 @4 [@5] score of @6", -- a bit unnecessary, perhaps. "@1 [@2] score of @3 @4 [@5] score of @6", -- a bit unnecessary, perhaps.
@ -492,7 +492,7 @@ better_commands.register_command("scoreboard", {
max = tonumber(max) max = tonumber(max)
if not max then return false, minetest.colorize("red", S("Must be a number")), 0 end if not max then return false, minetest.colorize("red", S("Must be a number")), 0 end
local names, err = better_commands.get_scoreboard_names(selector, context) local names, err = better_commands.get_scoreboard_names(selector, context)
if err or not names then return false, err, 0 end if err or not names then return false, minetest.colorize("red", err), 0 end
local scores = better_commands.scoreboard.objectives[objective].scores local scores = better_commands.scoreboard.objectives[objective].scores
local count = 0 local count = 0
local last local last
@ -517,7 +517,7 @@ better_commands.register_command("scoreboard", {
return false, minetest.colorize("red", S("Invalid objective")), 0 return false, minetest.colorize("red", S("Invalid objective")), 0
end end
local names, err = better_commands.get_scoreboard_names(selector, context) local names, err = better_commands.get_scoreboard_names(selector, context)
if err or not names then return false, err, 0 end if err or not names then return false, minetest.colorize("red", err), 0 end
local count = 0 local count = 0
local last local last
for name in pairs(names) do for name in pairs(names) do
@ -557,7 +557,7 @@ better_commands.register_command("scoreboard", {
max = tonumber(max) max = tonumber(max)
if not max then return false, minetest.colorize("red", S("Must be a number")), 0 end if not max then return false, minetest.colorize("red", S("Must be a number")), 0 end
local names, err = better_commands.get_scoreboard_names(selector, context, objective, true) local names, err = better_commands.get_scoreboard_names(selector, context, objective, true)
if err or not names then return false, err, 0 end if err or not names then return false, minetest.colorize("red", err), 0 end
local scoreboard_name = names[1] local scoreboard_name = names[1]
local scores = better_commands.scoreboard.objectives[objective].scores local scores = better_commands.scoreboard.objectives[objective].scores
if not scores[scoreboard_name] then if not scores[scoreboard_name] then

View File

@ -16,13 +16,13 @@ better_commands.register_command("setblock", {
if split_param[5] then if split_param[5] then
keep = split_param[5][3]:lower() keep = split_param[5][3]:lower()
if keep ~= "keep" and keep ~= "replace" then if keep ~= "keep" and keep ~= "replace" then
return false, minetest.colorize("red", S("Last argument ust be either 'replace' (default)), 'keep', or missing, not @1", keep), 0 return false, minetest.colorize("red", S("Last argument ust be either 'replace' (default)), 'keep', or missing, not @1", keep), 0)
end end
end end
local pos, err = better_commands.parse_pos(split_param, 1, context) local pos, err = better_commands.parse_pos(split_param, 1, context)
if err or not pos then return false, err, 0 end if err or not pos then return false, minetest.colorize("red", err), 0 end
local node, meta, err = better_commands.parse_node(split_param[4]) local node, meta, err = better_commands.parse_node(split_param[4])
if err or not node then return false, err, 0 end if err or not node then return false, minetest.colorize("red", err), 0 end
if keep == "keep" and minetest.get_node(pos).name ~= "air" then if keep == "keep" and minetest.get_node(pos).name ~= "air" then
return false, minetest.colorize("red", S("Position is not empty")), 0 return false, minetest.colorize("red", S("Position is not empty")), 0

View File

@ -14,8 +14,7 @@ better_commands.register_command("gamerule", {
local value = split_param[2] and split_param[2][3] local value = split_param[2] and split_param[2][3]
if value then if value then
if setting:sub(1, 7) == "secure." then if setting:sub(1, 7) == "secure." then
return false, S("Failed. Cannot modify secure settings. " return false, S("Failed. Cannot modify secure settings. Edit the settings file manually"), 0
.. "Edit the settings file manually"), 0
end end
local new = not minetest.settings:get(setting) local new = not minetest.settings:get(setting)
minetest.settings:set(setting, value) minetest.settings:set(setting, value)

View File

@ -9,7 +9,7 @@ better_commands.register_command("spawnpoint", {
if not context then return false, minetest.colorize("red", S("Missing context")), 0 end if not context then return false, minetest.colorize("red", S("Missing context")), 0 end
if not context.executor then return false, minetest.colorize("red", S("Missing executor")), 0 end if not context.executor then return false, minetest.colorize("red", S("Missing executor")), 0 end
local split_param, err = better_commands.parse_params(param) local split_param, err = better_commands.parse_params(param)
if err then return false, err, 0 end if err then return false, minetest.colorize("red", err), 0 end
local selector = split_param[1] local selector = split_param[1]
if not selector then if not selector then
if context.executor.is_player and context.executor:is_player() then if context.executor.is_player and context.executor:is_player() then
@ -20,7 +20,7 @@ better_commands.register_command("spawnpoint", {
end end
else else
local targets, err = better_commands.parse_selector(selector, context) local targets, err = better_commands.parse_selector(selector, context)
if err or not targets then return false, err, 0 end if err or not targets then return false, minetest.colorize("red", err), 0 end
local last local last
local count = 0 local count = 0
for _, target in ipairs(targets) do for _, target in ipairs(targets) do
@ -31,7 +31,7 @@ better_commands.register_command("spawnpoint", {
end end
end end
if count < 1 then if count < 1 then
return false, minetest.colorize("red", S("No matching players found.")), 0 return false, minetest.colorize("red", S("No player was found.")), 0
elseif count == 1 then elseif count == 1 then
return true, S("Set spawn point to @1 for @2", minetest.pos_to_string(context.pos), last), 1 return true, S("Set spawn point to @1 for @2", minetest.pos_to_string(context.pos), last), 1
else else
@ -50,7 +50,7 @@ better_commands.register_command("clearspawnpoint", {
if not context then return false, minetest.colorize("red", S("Missing context")), 0 end if not context then return false, minetest.colorize("red", S("Missing context")), 0 end
if not context.executor then return false, minetest.colorize("red", S("Missing executor")), 0 end if not context.executor then return false, minetest.colorize("red", S("Missing executor")), 0 end
local split_param, err = better_commands.parse_params(param) local split_param, err = better_commands.parse_params(param)
if err then return false, err, 0 end if err then return false, minetest.colorize("red", err), 0 end
local selector = split_param[1] local selector = split_param[1]
if not selector then if not selector then
if context.executor.is_player and context.executor:is_player() then if context.executor.is_player and context.executor:is_player() then
@ -61,7 +61,7 @@ better_commands.register_command("clearspawnpoint", {
end end
else else
local targets, err = better_commands.parse_selector(selector, context) local targets, err = better_commands.parse_selector(selector, context)
if err or not targets then return false, err, 0 end if err or not targets then return false, minetest.colorize("red", err), 0 end
local last local last
local count = 0 local count = 0
for _, target in ipairs(targets) do for _, target in ipairs(targets) do
@ -72,7 +72,7 @@ better_commands.register_command("clearspawnpoint", {
end end
end end
if count < 1 then if count < 1 then
return false, minetest.colorize("red", S("No matching players found.")), 0 return false, minetest.colorize("red", S("No player was found.")), 0
elseif count == 1 then elseif count == 1 then
return true, S("Cleared spawn point for @2", last), 1 return true, S("Cleared spawn point for @2", last), 1
else else

View File

@ -17,12 +17,12 @@ better_commands.register_command("summon", {
local summoned local summoned
if split_param[2] then if split_param[2] then
local pos, err = better_commands.parse_pos(split_param, 2, context) local pos, err = better_commands.parse_pos(split_param, 2, context)
if err or not pos then return false, err, 0 end if err or not pos then return false, minetest.colorize("red", err), 0 end
summoned = minetest.add_entity(pos, checked_entity, entity[4]) summoned = minetest.add_entity(pos, checked_entity, entity[4])
if not summoned then return false, minetest.colorize("red", S("Could not summon @1", entity[3])), 0 end if not summoned then return false, minetest.colorize("red", S("Could not summon @1", entity[3])), 0 end
if split_param[5] then if split_param[5] then
local victim_rot, err = better_commands.get_tp_rot(context, summoned, split_param, 5) local victim_rot, err = better_commands.get_tp_rot(context, summoned, split_param, 5)
if err or not victim_rot then return false, err, 0 end if err or not victim_rot then return false, minetest.colorize("red", err), 0 end
better_commands.set_entity_rotation(summoned, victim_rot) better_commands.set_entity_rotation(summoned, victim_rot)
end end
else else

View File

@ -10,7 +10,7 @@ better_commands.register_command("team", {
if not context then return false, minetest.colorize("red", S("Missing context")), 0 end if not context then return false, minetest.colorize("red", S("Missing context")), 0 end
if not context.executor then return false, minetest.colorize("red", S("Missing executor")), 0 end if not context.executor then return false, minetest.colorize("red", S("Missing executor")), 0 end
local split_param, err = better_commands.parse_params(param) local split_param, err = better_commands.parse_params(param)
if err then return false, err, 0 end if err then return false, minetest.colorize("red", err), 0 end
if not split_param[1] then return false, minetest.colorize("red", S("Missing subcommand")), 0 end if not split_param[1] then return false, minetest.colorize("red", S("Missing subcommand")), 0 end
local subcommand = split_param[1] and split_param[1][3] local subcommand = split_param[1] and split_param[1][3]
if subcommand == "add" then if subcommand == "add" then
@ -62,7 +62,7 @@ better_commands.register_command("team", {
local count = 0 local count = 0
local last local last
local names, err = better_commands.get_scoreboard_names(selector, context) local names, err = better_commands.get_scoreboard_names(selector, context)
if err or not names then return false, err, 0 end if err or not names then return false, minetest.colorize("red", err), 0 end
for name in pairs(names) do for name in pairs(names) do
if count < 1 then last = better_commands.format_name(name) end if count < 1 then last = better_commands.format_name(name) end
count = count + 1 count = count + 1
@ -90,7 +90,7 @@ better_commands.register_command("team", {
end end
else else
local names, err = better_commands.get_scoreboard_names(selector, context) local names, err = better_commands.get_scoreboard_names(selector, context)
if err or not names then return false, err, 0 end if err or not names then return false, minetest.colorize("red", err), 0 end
for _, name in ipairs(names) do for _, name in ipairs(names) do
if better_commands.teams.players[name] then if better_commands.teams.players[name] then
count = count + 1 count = count + 1

View File

@ -15,10 +15,10 @@ better_commands.register_command("teleport", {
if split_param[1].type == "selector" then if split_param[1].type == "selector" then
if not split_param[2] then if not split_param[2] then
if not context.executor.is_player then if not context.executor.is_player then
return false, minetest.colorize("red", S("Command blocks can't teleport (although I did consider making it possible))"), 0 return false, minetest.colorize("red", S("Command blocks can't teleport (although I did consider making it possible)")), 0
end end
local targets, err = better_commands.parse_selector(split_param[1], context, true) local targets, err = better_commands.parse_selector(split_param[1], context, true)
if err or not targets then return false, err, 0 end if err or not targets then return false, minetest.colorize("red", err), 0 end
local target_pos = targets[1].is_player and targets[1]:get_pos() or targets[1] local target_pos = targets[1].is_player and targets[1]:get_pos() or targets[1]
context.executor:set_pos(target_pos) context.executor:set_pos(target_pos)
context.executor:add_velocity(-context.executor:get_velocity()) context.executor:add_velocity(-context.executor:get_velocity())
@ -27,15 +27,15 @@ better_commands.register_command("teleport", {
return true, S("Teleported @1 to @2", better_commands.get_entity_name(context.executor), better_commands.get_entity_name(targets[1])), 1 return true, S("Teleported @1 to @2", better_commands.get_entity_name(context.executor), better_commands.get_entity_name(targets[1])), 1
elseif split_param[2].type == "selector" then elseif split_param[2].type == "selector" then
if not context.executor.is_player and split_param[1][3] == "@s" then if not context.executor.is_player and split_param[1][3] == "@s" then
return false, minetest.colorize("red", S("Command blocks can't teleport (although I did consider making it possible))"), 0 return false, minetest.colorize("red", S("Command blocks can't teleport (although I did consider making it possible)")), 0
end end
local victims, err = better_commands.parse_selector(split_param[1], context) local victims, err = better_commands.parse_selector(split_param[1], context)
if err or not victims then return false, err, 0 end if err or not victims then return false, minetest.colorize("red", err), 0 end
if #victims == 0 then if #victims == 0 then
return false, minetest.colorize("red", S("No matching entities found")), 0 return false, minetest.colorize("red", S("No entity was found")), 0
end end
local targets, err = better_commands.parse_selector(split_param[2], context, true) local targets, err = better_commands.parse_selector(split_param[2], context, true)
if err or not targets then return false, err, 0 end if err or not targets then return false, minetest.colorize("red", err), 0 end
local target_pos = targets[1].is_player and targets[1]:get_pos() or targets[1] local target_pos = targets[1].is_player and targets[1]:get_pos() or targets[1]
local count = 0 local count = 0
local last local last
@ -68,12 +68,12 @@ better_commands.register_command("teleport", {
end end
elseif split_param[2].type == "number" or split_param[2].type == "relative" or split_param[2].type == "look_relative" then elseif split_param[2].type == "number" or split_param[2].type == "relative" or split_param[2].type == "look_relative" then
if not context.executor.is_player and split_param[1][3] == "@s" then if not context.executor.is_player and split_param[1][3] == "@s" then
return false, minetest.colorize("red", S("Command blocks can't teleport (although I did consider making it possible))"), 0 return false, minetest.colorize("red", S("Command blocks can't teleport (although I did consider making it possible)")), 0
end end
local victims, err = better_commands.parse_selector(split_param[1], context) local victims, err = better_commands.parse_selector(split_param[1], context)
if err or not victims then return false, err, 0 end if err or not victims then return false, minetest.colorize("red", err), 0 end
local target_pos, err = better_commands.parse_pos(split_param, 2, context) local target_pos, err = better_commands.parse_pos(split_param, 2, context)
if err then return false, err, 0 end if err then return false, minetest.colorize("red", err), 0 end
local count = 0 local count = 0
local last local last
for _, victim in ipairs(victims) do for _, victim in ipairs(victims) do
@ -88,7 +88,7 @@ better_commands.register_command("teleport", {
victim:add_velocity(-victim:get_velocity()) victim:add_velocity(-victim:get_velocity())
end end
local victim_rot, err = better_commands.get_tp_rot(context, victim, split_param, 5) local victim_rot, err = better_commands.get_tp_rot(context, victim, split_param, 5)
if err then return false, err, 0 end if err then return false, minetest.colorize("red", err), 0 end
if victim_rot then if victim_rot then
better_commands.set_entity_rotation(victim, victim_rot) better_commands.set_entity_rotation(victim, victim_rot)
end end
@ -104,11 +104,11 @@ better_commands.register_command("teleport", {
end end
elseif split_param[1].type == "number" or split_param[1].type == "relative" or split_param[1].type == "look_relative" then elseif split_param[1].type == "number" or split_param[1].type == "relative" or split_param[1].type == "look_relative" then
if not context.executor.is_player and split_param[1][3] == "@s" then if not context.executor.is_player and split_param[1][3] == "@s" then
return false, minetest.colorize("red", S("Command blocks can't teleport (although I did consider making it possible))"), 0 return false, minetest.colorize("red", S("Command blocks can't teleport (although I did consider making it possible)")), 0
end end
local target_pos, err = better_commands.parse_pos(split_param, 1, context) local target_pos, err = better_commands.parse_pos(split_param, 1, context)
if err then if err then
return false, err, 0 return false, minetest.colorize("red", err), 0
end end
context.executor:set_pos(target_pos) context.executor:set_pos(target_pos)
if not (split_param[1].type == "look_relative" if not (split_param[1].type == "look_relative"
@ -118,7 +118,7 @@ better_commands.register_command("teleport", {
context.executor:add_velocity(-context.executor:get_velocity()) context.executor:add_velocity(-context.executor:get_velocity())
end end
local victim_rot, err = better_commands.get_tp_rot(context, context.executor, split_param, 4) local victim_rot, err = better_commands.get_tp_rot(context, context.executor, split_param, 4)
if err or not victim_rot then return false, err, 0 end if err or not victim_rot then return false, minetest.colorize("red", err), 0 end
better_commands.set_entity_rotation(context.executor, victim_rot) better_commands.set_entity_rotation(context.executor, victim_rot)
return true, S("Teleported @1 to @2", better_commands.get_entity_name(context.executor), minetest.pos_to_string(target_pos, 1)), 1 return true, S("Teleported @1 to @2", better_commands.get_entity_name(context.executor), minetest.pos_to_string(target_pos, 1)), 1
end end

View File

@ -24,7 +24,7 @@ better_commands.register_command("time", {
local time = split_param[2][3]:lower() local time = split_param[2][3]:lower()
if action == "add" then if action == "add" then
local new_time, err = better_commands.parse_time_string(time) local new_time, err = better_commands.parse_time_string(time)
if err then return false, err, 0 end if err then return false, minetest.colorize("red", err), 0 end
minetest.set_timeofday(new_time) minetest.set_timeofday(new_time)
return true, S("Time set"), 1 return true, S("Time set"), 1
elseif action == "query" then elseif action == "query" then
@ -42,7 +42,7 @@ better_commands.register_command("time", {
return false, minetest.colorize("red", S("Must be 'daytime', 'gametime', or 'day', got @1", time)), 0 return false, minetest.colorize("red", S("Must be 'daytime', 'gametime', or 'day', got @1", time)), 0
elseif action == "set" then elseif action == "set" then
local new_time, err = better_commands.parse_time_string(time, true) local new_time, err = better_commands.parse_time_string(time, true)
if err then return false, err, 0 end if err then return false, minetest.colorize("red", err), 0 end
minetest.set_timeofday(new_time) minetest.set_timeofday(new_time)
return true, S("Time set"), 1 return true, S("Time set"), 1
end end