end\r
\r
--sets a region defined by positions `pos1` and `pos2` to `nodename`, returning the number of nodes filled\r
-worldedit.set = function(pos1, pos2, nodename)\r
+worldedit.set = function(pos1, pos2, nodenames)\r
+ if type(nodenames) == 'string' then\r
+ nodenames = {nodenames}\r
+ end\r
+\r
local pos1, pos2 = worldedit.sort_pos(pos1, pos2)\r
\r
--set up voxel manipulator\r
end\r
\r
--fill selected area with node\r
- local node_id = minetest.get_content_id(nodename)\r
+ local node_ids = {}\r
+ for i,v in ipairs(nodenames) do\r
+ node_ids[i] = minetest.get_content_id(nodenames[i])\r
+ end\r
for i in area:iterp(pos1, pos2) do\r
- nodes[i] = node_id\r
+ nodes[i] = node_ids[math.random(#node_ids)]\r
end\r
\r
--update map nodes\r
end,\r
})\r
\r
-local check_set = function(name, param)\r
- local node = get_node(name, param)\r
- if not node then return nil end\r
- return check_region(name, param)\r
-end\r
-\r
minetest.register_chatcommand("/set", {\r
params = "<node>",\r
description = "Set the current WorldEdit region to <node>",\r
privs = {worldedit=true},\r
func = safe_region(function(name, param)\r
+ local nodes = {}\r
+\r
+ for nodename in param:gmatch("[^%s]+") do\r
+ local node = get_node(name, nodename)\r
+ if not node then\r
+ worldedit.player_notify(name, 'Could not identify node "'..name..'"')\r
+ return\r
+ end\r
+ nodes[#nodes+1] = node\r
+ end\r
+\r
local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]\r
- local node = get_node(name, param)\r
- local count = worldedit.set(pos1, pos2, node)\r
+ local count = worldedit.set(pos1, pos2, nodes)\r
worldedit.player_notify(name, count .. " nodes set")\r
- end, check_set),\r
+ end, check_region),\r
})\r
\r
local check_replace = function(name, param)\r