X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=rope.lua;h=5b2868e21acd3b15de9a2fbee1f4f384ea913e50;hb=dd6254369ddbbd4617f07f9d4a251b65e29cefa7;hp=e68e46cfe13684a751fd907e3109fe59d8b024ce;hpb=8f966e5442b41654c24babfcc3fb4fb6666c2634;p=xdecor.git diff --git a/rope.lua b/rope.lua index e68e46c..5b2868e 100644 --- a/rope.lua +++ b/rope.lua @@ -1,24 +1,22 @@ -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 place_rope = function(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 local pos = above local oldnode = minetest.get_node(pos) + local stackname = itemstack:get_name() while oldnode.name == "air" and not itemstack:is_empty() do - local newnode = {name = itemstack:get_name(), param1 = 0} + local newnode = {name = stackname, param1 = 0} minetest.set_node(pos, newnode) itemstack:take_item() pos.y = pos.y - 1 @@ -28,17 +26,18 @@ local place_rope = function(itemstack, placer, pointed_thing) return itemstack end -remove_rope = function(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() + while minetest.get_node(below).name == rope_name do minetest.remove_node(below) below.y = below.y - 1 num = num + 1 end - if num ~= 0 then - digger:get_inventory():add_item("main", rope_name..' '..num) - end + if num == 0 then return end + digger_inv:add_item("main", rope_name.." "..num) return true end @@ -47,10 +46,13 @@ xdecor.register("rope", { drawtype = "plantlike", walkable = false, climbable = true, - groups = {dig_immediate=3, flammable=2}, - selection_box = rope_sbox, + groups = {dig_immediate=3, flammable=3}, tiles = {"xdecor_rope.png"}, inventory_image = "xdecor_rope_inv.png", wield_image = "xdecor_rope_inv.png", - on_place = place_rope + selection_box = { + type = "fixed", + fixed = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15} + }, + on_place = rope.place })