41 lines
1.1 KiB
Lua

-- Building tools
minetest.register_chatcommand("replacenear", {
privs = {
creative = true
},
func = function (name, param)
local parts = param:split(" ")
if #parts == 3 then
local player = minetest.get_player_by_name(name)
local pos = player:get_pos()
local range = tonumber(parts[1]) or 5
local from = parts[2]:split(",")
local to = parts[3]
local replaced = 0
local function replace(p)
for _, v in pairs(from) do
local name = minetest.get_node(p).name
local anyblock_match = (v == "anyblock" and name ~= "air" and name ~= "ignore")
if name == v or v == "any" or anyblock_match then
minetest.set_node(p, {name = to})
replaced = replaced + 1
end
end
end
for dx = -range, range do
for dz = -range, range do
for dy = -range, range do
local npos = {x = pos.x + dx, y = pos.y + dy, z = pos.z + dz}
replace(npos)
end
end
end
return true, string.format("Replaced %d blocks", replaced)
end
return false, "Requires 3 arguments"
end
})