]> git.lizzy.rs Git - worldedit.git/commitdiff
Reset region by double-punching air using the wand
authorsfan5 <sfan5@live.de>
Wed, 18 Sep 2019 21:56:21 +0000 (23:56 +0200)
committersfan5 <sfan5@live.de>
Wed, 18 Sep 2019 21:56:21 +0000 (23:56 +0200)
worldedit_commands/wand.lua

index c93fa9c3a776a65218bfd2f134f3d30f1164e8c7..9104b7d565492fdd917a452f00e535bba5da382f 100644 (file)
@@ -6,23 +6,35 @@ local function above_or_under(placer, pointed_thing)
        end
 end
 
+local punched_air_time = {}
+
 minetest.register_tool(":worldedit:wand", {
-       description = "WorldEdit Wand toolLeft-click to set 1st position, right-click to set 2nd",
+       description = "WorldEdit Wand tool\nLeft-click to set 1st position, right-click to set 2nd",
        inventory_image = "worldedit_wand.png",
        stack_max = 1, -- there is no need to have more than one
        liquids_pointable = true, -- ground with only water on can be selected as well
 
        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()
+               if placer == nil or pointed_thing == nil then return itemstack end
+               local name = placer:get_player_name()
+               if pointed_thing.type == "node" then
+                       -- set and mark pos1
                        worldedit.pos1[name] = above_or_under(placer, pointed_thing)
                        worldedit.mark_pos1(name)
+               elseif pointed_thing.type == "nothing" then
+                       local now = minetest.get_us_time()
+                       if now - (punched_air_time[name] or 0) < 1000 * 1000 then
+                               -- reset markers
+                               minetest.registered_chatcommands["/reset"].func(name, "")
+                       end
+                       punched_air_time[name] = now
                end
                return itemstack -- nothing consumed, nothing changed
        end,
 
-       on_place = function(itemstack, placer, pointed_thing) -- Left Click
+       on_place = function(itemstack, placer, pointed_thing)
                if placer ~= nil and pointed_thing ~= nil and pointed_thing.type == "node" then
+                       -- set and mark pos2
                        local name = placer:get_player_name()
                        worldedit.pos2[name] = above_or_under(placer, pointed_thing)
                        worldedit.mark_pos2(name)