41 lines
1.1 KiB
Lua
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
|
|
})
|