\r
Returns the number of nodes copied.\r
\r
+### count = worldedit.copy2(pos1, pos2, off)\r
+\r
+Copies the region defined by positions `pos1` and `pos2` by the offset vector `off`.\r
+\r
+Returns the number of nodes copied.\r
+\r
### count = worldedit.move(pos1, pos2, axis, amount)\r
\r
Moves the region defined by positions `pos1` and `pos2` along the `axis` axis ("x" or "y" or "z") by `amount` nodes.\r
translated.x = translated.x + direction.x\r
translated.y = translated.y + direction.y\r
translated.z = translated.z + direction.z\r
- worldedit.copy2(pos1, pos2, translated, volume)\r
+ worldedit.copy2(pos1, pos2, translated)\r
minetest.after(0, next_one)\r
else\r
if finished then\r
return worldedit.volume(pos1, pos2)\r
end\r
\r
+--- Copies a region by offset vector `off`.\r
+-- @param pos1\r
+-- @param pos2\r
+-- @param off\r
+-- @return The number of nodes copied.\r
+function worldedit.copy2(pos1, pos2, off)\r
+ local pos1, pos2 = worldedit.sort_pos(pos1, pos2)\r
+\r
+ worldedit.keep_loaded(pos1, pos2)\r
+\r
+ local get_node, get_meta, set_node = minetest.get_node,\r
+ minetest.get_meta, minetest.set_node\r
+ local pos = {}\r
+ pos.x = pos2.x\r
+ while pos.x >= pos1.x do\r
+ pos.y = pos2.y\r
+ while pos.y >= pos1.y do\r
+ pos.z = pos2.z\r
+ while pos.z >= pos1.z do\r
+ local node = get_node(pos) -- Obtain current node\r
+ local meta = get_meta(pos):to_table() -- Get meta of current node\r
+ local newpos = vector.add(pos, off) -- Calculate new position\r
+ set_node(newpos, node) -- Copy node to new position\r
+ get_meta(newpos):from_table(meta) -- Set metadata of new node\r
+ pos.z = pos.z - 1\r
+ end\r
+ pos.y = pos.y - 1\r
+ end\r
+ pos.x = pos.x - 1\r
+ end\r
+ return worldedit.volume(pos1, pos2)\r
+end\r
\r
--- Moves a region along `axis` by `amount` nodes.\r
-- @return The number of nodes moved.\r