3 -- Code by Mirko K. (modified by Temperest, Wulfsdad and kilbith) (License: GPL).
4 function rope.place(itemstack, placer, pointed_thing)
5 if pointed_thing.type == "node" then
6 local pos = pointed_thing.above
7 local oldnode = minetest.get_node(pos)
8 local stackname = itemstack:get_name()
10 if minetest.is_protected(pos, placer:get_player_name()) then
14 while oldnode.name == "air" and not itemstack:is_empty() do
15 local newnode = {name = stackname, param1 = 0}
16 minetest.set_node(pos, newnode)
19 oldnode = minetest.get_node(pos)
26 function rope.remove(pos, oldnode, digger, rope_name)
28 local below = {x = pos.x, y = pos.y, z = pos.z}
29 local digger_inv = digger:get_inventory()
31 while minetest.get_node(below).name == rope_name do
32 minetest.remove_node(below)
37 if num == 0 then return end
38 digger_inv:add_item("main", rope_name.." "..num)
43 xdecor.register("rope", {
45 drawtype = "plantlike",
48 groups = {snappy = 3, flammable = 3},
49 tiles = {"xdecor_rope.png"},
50 inventory_image = "xdecor_rope_inv.png",
51 wield_image = "xdecor_rope_inv.png",
52 selection_box = xdecor.pixelbox(8, {{3, 0, 3, 2, 8, 2}}),
53 on_place = rope.place,
55 on_punch = function(pos, node, puncher, pointed_thing)
56 local player_name = puncher:get_player_name()
58 if not minetest.is_protected(pos, player_name) or
59 minetest.get_player_privs(player_name).protection_bypass then
60 rope.remove(pos, node, puncher, "xdecor:rope")
67 minetest.register_craft({
68 output = "xdecor:rope",