]> git.lizzy.rs Git - worldedit.git/commitdiff
Delete old metadata when moving regions
authorsfan5 <sfan5@live.de>
Tue, 17 Sep 2019 16:03:19 +0000 (18:03 +0200)
committersfan5 <sfan5@live.de>
Tue, 17 Sep 2019 16:03:19 +0000 (18:03 +0200)
This matches the behaviour before introduction of the vmanip code.

worldedit/manipulations.lua

index 9d20b3b6659a596f1172a8a9146a415e02fe8256..483678b1de61308f3dc1ca67f749e0fb41bcb12e 100644 (file)
@@ -249,6 +249,22 @@ function worldedit.copy2(pos1, pos2, off, meta_backwards)
        return worldedit.volume(pos1, pos2)\r
 end\r
 \r
+--- Deletes all node metadata in the region\r
+-- @param pos1\r
+-- @param pos2\r
+-- @return The number of nodes that had their meta deleted.\r
+function worldedit.delete_meta(pos1, pos2)\r
+       local pos1, pos2 = worldedit.sort_pos(pos1, pos2)\r
+\r
+       local meta_positions = minetest.find_nodes_with_meta(pos1, pos2)\r
+       local get_meta = minetest.get_meta\r
+       for _, pos in ipairs(meta_positions) do\r
+               get_meta(pos):from_table(nil)\r
+       end\r
+\r
+       return #meta_positions\r
+end\r
+\r
 --- Moves a region along `axis` by `amount` nodes.\r
 -- @return The number of nodes moved.\r
 function worldedit.move(pos1, pos2, axis, amount)\r
@@ -267,6 +283,7 @@ function worldedit.move(pos1, pos2, axis, amount)
        worldedit.copy2(pos1, pos2, off)\r
        -- Nuke old area\r
        worldedit.set(pos1, pos2, "air")\r
+       worldedit.delete_meta(pos1, pos2)\r
 \r
        return worldedit.volume(pos1, pos2)\r
 end\r