2024-05-27 07:39:08 -07:00

40 lines
1.7 KiB
Lua

--local bc = better_commands
local S = minetest.get_translator(minetest.get_current_modname())
better_commands.register_command("setblock", {
params = S("<pos> <block> [keep|replace]"),
description = S("Places <block> at <pos>. If keep, only replace air"),
func = function(name, param, context)
local split_param = better_commands.parse_params(param)
if not split_param[1] and split_param[2] and split_param[3] and split_param[4] then
return false, nil, 0
end
local keep
if split_param[5] then
keep = split_param[5][3]:lower()
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)
end
end
local pos, err = better_commands.parse_pos(split_param, 1, context)
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])
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
return false, minetest.colorize("red", S("Position is not empty")), 0
end
minetest.set_node(pos, node)
if meta and meta ~= {} then
local node_meta = minetest.get_meta(pos)
for key, value in pairs(meta) do
node_meta:set_string(key, value)
end
end
return true, S("Node set"), 1
end
})
better_commands.register_command_alias("setnode", "setblock")