]> git.lizzy.rs Git - worldedit.git/commitdiff
Understands meta! Tested in copy, stack (which copies), move, flip.
authorKyle <kyle.kylina@gmail.com>
Sun, 26 Aug 2012 00:23:39 +0000 (17:23 -0700)
committerKyle <kyle.kylina@gmail.com>
Sun, 26 Aug 2012 00:23:39 +0000 (17:23 -0700)
Transpose (and therefore rotate) do(es) not appear to be functional, but
meta stuff added anyway.

functions.lua

index ee549deb4c1126002b78e7f135925b0ea59c3133..425a6ac2dfa6a69741cdc023ad348707e95ccab3 100644 (file)
@@ -216,9 +216,12 @@ worldedit.copy = function(pos1, pos2, axis, amount)
                                pos.z = pos1.z\r
                                while pos.z <= pos2.z do\r
                                        local node = env:get_node(pos)\r
+                                       local meta1 = env:get_meta(pos):to_table()\r
                                        local value = pos[axis]\r
                                        pos[axis] = value + amount\r
                                        env:add_node(pos, node)\r
+                                       local meta2 = env:get_meta(pos)\r
+                                       meta2:from_table(meta1)\r
                                        pos[axis] = value\r
                                        pos.z = pos.z + 1\r
                                end\r
@@ -234,9 +237,12 @@ worldedit.copy = function(pos1, pos2, axis, amount)
                                pos.z = pos2.z\r
                                while pos.z >= pos1.z do\r
                                        local node = minetest.env:get_node(pos)\r
+                                       local meta1 = env:get_meta(pos):to_table()\r
                                        local value = pos[axis]\r
                                        pos[axis] = value + amount\r
                                        minetest.env:add_node(pos, node)\r
+                                       local meta2 = env:get_meta(pos)\r
+                                       meta2:from_table(meta1)\r
                                        pos[axis] = value\r
                                        pos.z = pos.z - 1\r
                                end\r
@@ -261,10 +267,13 @@ worldedit.move = function(pos1, pos2, axis, amount)
                                pos.z = pos1.z\r
                                while pos.z <= pos2.z do\r
                                        local node = env:get_node(pos)\r
+                                       local meta1 = env:get_meta(pos):to_table()\r
                                        env:remove_node(pos)\r
                                        local value = pos[axis]\r
                                        pos[axis] = value + amount\r
                                        env:add_node(pos, node)\r
+                                       local meta2 = env:get_meta(pos)\r
+                                       meta2:from_table(meta1)\r
                                        pos[axis] = value\r
                                        pos.z = pos.z + 1\r
                                end\r
@@ -279,11 +288,14 @@ worldedit.move = function(pos1, pos2, axis, amount)
                        while pos.y >= pos1.y do\r
                                pos.z = pos2.z\r
                                while pos.z >= pos1.z do\r
-                                       local node = minetest.env:get_node(pos)\r
+                                       local node = env:get_node(pos)\r
+                                       local meta1 = env:get_meta(pos):to_table()\r
                                        env:remove_node(pos)\r
                                        local value = pos[axis]\r
                                        pos[axis] = value + amount\r
-                                       minetest.env:add_node(pos, node)\r
+                                       env:add_node(pos, node)\r
+                                       local meta2 = env:get_meta(pos)\r
+                                       meta2:from_table(meta1)\r
                                        pos[axis] = value\r
                                        pos.z = pos.z - 1\r
                                end\r
@@ -326,12 +338,18 @@ worldedit.transpose = function(pos1, pos2, axis1, axis2)
                                local extent1, extent2 = pos[axis1] - pos1[axis1], pos[axis2] - pos1[axis2]\r
                                if extent1 < extent2 then\r
                                        local node1 = env:get_node(pos)\r
+                                       local meta1a = env:get_meta(pos):to_table()\r
                                        local value1, value2 = pos[axis1], pos[axis2]\r
                                        pos[axis1], pos[axis2] = pos1[axis1] + extent1, pos1[axis2] + extent2\r
                                        local node2 = env:get_node(pos)\r
+                                       local meta2a = env:get_meta(pos):to_table()\r
                                        env:add_node(pos, node1)\r
+                                       local meta1b = env:get_meta(pos)\r
+                                       meta1b:from_table(meta1a)\r
                                        pos[axis1], pos[axis2] = value1, value2\r
                                        env:add_node(pos, node2)\r
+                                       local meta2b = env:get_meta(pos)\r
+                                       meta2b:from_table(meta2a)\r
                                end\r
                                pos.z = pos.z + 1\r
                        end\r
@@ -356,12 +374,18 @@ worldedit.flip = function(pos1, pos2, axis)
                        pos.z = pos1.z\r
                        while pos.z <= pos2.z do\r
                                local node1 = env:get_node(pos)\r
+                               local meta1a = env:get_meta(pos):to_table()\r
                                local value = pos[axis]\r
                                pos[axis] = start - value\r
                                local node2 = env:get_node(pos)\r
+                               local meta2a = env:get_meta(pos):to_table()\r
                                env:add_node(pos, node1)\r
+                               local meta1b = env:get_meta(pos)\r
+                               meta1b:from_table(meta1a)\r
                                pos[axis] = value\r
                                env:add_node(pos, node2)\r
+                               local meta2b = env:get_meta(pos)\r
+                               meta2b:from_table(meta2a)\r
                                pos.z = pos.z + 1\r
                        end\r
                        pos.y = pos.y + 1\r