]> git.lizzy.rs Git - worldedit.git/commitdiff
Wand: select node under or above depending on pressed sneak key.
authorbeyondlimits <beyondlimits@10g.pl>
Mon, 6 Aug 2018 12:34:03 +0000 (14:34 +0200)
committersfan5 <sfan5@live.de>
Mon, 6 Aug 2018 15:43:08 +0000 (17:43 +0200)
worldedit_commands/wand.lua

index 078080199fb1802b7a3915215b0c4e15bdb7a106..c93fa9c3a776a65218bfd2f134f3d30f1164e8c7 100644 (file)
@@ -1,3 +1,11 @@
+local function above_or_under(placer, pointed_thing)
+       if placer:get_player_control().sneak then
+               return pointed_thing.above
+       else
+               return pointed_thing.under
+       end
+end
+
 minetest.register_tool(":worldedit:wand", {
        description = "WorldEdit Wand tool, Left-click to set 1st position, right-click to set 2nd",
        inventory_image = "worldedit_wand.png",
@@ -7,7 +15,7 @@ minetest.register_tool(":worldedit:wand", {
        on_use = function(itemstack, placer, pointed_thing)
                if placer ~= nil and pointed_thing ~= nil and pointed_thing.type == "node" then
                        local name = placer:get_player_name()
-                       worldedit.pos1[name] = pointed_thing.under
+                       worldedit.pos1[name] = above_or_under(placer, pointed_thing)
                        worldedit.mark_pos1(name)
                end
                return itemstack -- nothing consumed, nothing changed
@@ -16,7 +24,7 @@ minetest.register_tool(":worldedit:wand", {
        on_place = function(itemstack, placer, pointed_thing) -- Left Click
                if placer ~= nil and pointed_thing ~= nil and pointed_thing.type == "node" then
                        local name = placer:get_player_name()
-                       worldedit.pos2[name] = pointed_thing.under
+                       worldedit.pos2[name] = above_or_under(placer, pointed_thing)
                        worldedit.mark_pos2(name)
                end
                return itemstack -- nothing consumed, nothing changed