]> git.lizzy.rs Git - xdecor.git/blobdiff - rope.lua
Pressure plates : fix set_node being called twice + some other fixes
[xdecor.git] / rope.lua
index 52475853607ac1cd701fd97c9b7563237e5363cd..d8255b0e46a0751359a7ce2888e15434c176c2d1 100644 (file)
--- a/rope.lua
+++ b/rope.lua
@@ -1,16 +1,13 @@
-local rope_sbox = {
-       type = "fixed",
-       fixed = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15}
-}
+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
-               remove_rope(pos, oldnode, digger, "xdecor:rope")
+               rope:remove(pos, oldnode, digger, "xdecor:rope")
        end
 end)
 
-local function place_rope(itemstack, placer, pointed_thing)
+function rope.place(itemstack, _, pointed_thing)
        if pointed_thing.type == "node" then
                local under = pointed_thing.under
                local above = pointed_thing.above
@@ -29,7 +26,7 @@ local function place_rope(itemstack, placer, pointed_thing)
        return itemstack
 end
 
-function remove_rope(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()
@@ -39,9 +36,8 @@ function remove_rope(pos, oldnode, digger, rope_name)
                below.y = below.y - 1
                num = num + 1
        end
-       if num ~= 0 then
-               digger_inv:add_item("main", rope_name.." "..num)
-       end
+       if num == 0 then return end
+       digger_inv:add_item("main", rope_name.." "..num)
        return true
 end
 
@@ -51,9 +47,9 @@ xdecor.register("rope", {
        walkable = false,
        climbable = true,
        groups = {dig_immediate=3, flammable=3},
-       selection_box = rope_sbox,
        tiles = {"xdecor_rope.png"},
        inventory_image = "xdecor_rope_inv.png",
        wield_image = "xdecor_rope_inv.png",
-       on_place = place_rope
+       selection_box = xdecor.pixelbox(8, {{3, 0, 3, 2, 8, 2}}),
+       on_place = rope.place
 })