]> git.lizzy.rs Git - xdecor.git/commitdiff
Fix rope protection handling and get rid of a global callback.
authorTim <t4im@users.noreply.github.com>
Sat, 3 Sep 2016 15:32:08 +0000 (17:32 +0200)
committerTim <t4im@users.noreply.github.com>
Sat, 3 Sep 2016 15:32:08 +0000 (17:32 +0200)
rope.lua

index 3dbbede4ee1932bf49d09bff056e387fff92182c..1627fd8133982522421a36460bb1f758b00b645c 100644 (file)
--- a/rope.lua
+++ b/rope.lua
@@ -1,12 +1,6 @@
 local rope = {}
 
 -- Code by Mirko K. (modified by Temperest, Wulfsdad and kilbith) (License: GPL).
-minetest.register_on_punchnode(function(pos, oldnode, digger)
-       if oldnode.name == "xdecor:rope" then
-               rope:remove(pos, oldnode, digger, "xdecor:rope")
-       end
-end)
-
 function rope.place(itemstack, placer, pointed_thing)
        if pointed_thing.type == "node" then
                local pos = pointed_thing.above
@@ -27,7 +21,7 @@ function rope.place(itemstack, placer, pointed_thing)
        return itemstack
 end
 
-function rope:remove(pos, oldnode, digger, rope_name)
+function rope.remove(pos, oldnode, digger, rope_name)
        local num = 0
        local below = {x=pos.x, y=pos.y, z=pos.z}
        local digger_inv = digger:get_inventory()
@@ -52,5 +46,12 @@ xdecor.register("rope", {
        inventory_image = "xdecor_rope_inv.png",
        wield_image = "xdecor_rope_inv.png",
        selection_box = xdecor.pixelbox(8, {{3, 0, 3, 2, 8, 2}}),
-       on_place = rope.place
+       on_place = rope.place,
+       on_punch = function(pos, node, puncher, pointed_thing)
+               local player_name = puncher:get_player_name()
+               if not minetest.is_protected(pos, player_name) or
+                       minetest.get_player_privs(player_name).protection_bypass then
+                       rope.remove(pos, node, puncher, "xdecor:rope")
+               end
+       end
 })