]> git.lizzy.rs Git - xdecor.git/blob - rope.lua
Add footstep sound for Trampoline
[xdecor.git] / rope.lua
1 local rope = {}
2
3 -- Code by Mirko K. (modified by Temperest, Wulfsdad and kilbith) (License: GPL).
4 minetest.register_on_punchnode(function(pos, oldnode, digger)
5         if oldnode.name == "xdecor:rope" then
6                 rope:remove(pos, oldnode, digger, "xdecor:rope")
7         end
8 end)
9
10 function rope.place(itemstack, placer, pointed_thing)
11         if pointed_thing.type == "node" then
12                 local under = pointed_thing.under
13                 local above = pointed_thing.above
14                 local pos = above
15                 local oldnode = minetest.get_node(pos)
16                 local stackname = itemstack:get_name()
17                 if minetest.is_protected(pos, placer:get_player_name()) then return end
18
19                 while oldnode.name == "air" and not itemstack:is_empty() do
20                         local newnode = {name = stackname, param1 = 0}
21                         minetest.set_node(pos, newnode)
22                         itemstack:take_item()
23                         pos.y = pos.y - 1
24                         oldnode = minetest.get_node(pos)
25                 end
26         end
27         return itemstack
28 end
29
30 function rope:remove(pos, oldnode, digger, rope_name)
31         local num = 0
32         local below = {x=pos.x, y=pos.y, z=pos.z}
33         local digger_inv = digger:get_inventory()
34
35         while minetest.get_node(below).name == rope_name do
36                 minetest.remove_node(below)
37                 below.y = below.y - 1
38                 num = num + 1
39         end
40         if num == 0 then return end
41         digger_inv:add_item("main", rope_name.." "..num)
42         return true
43 end
44
45 xdecor.register("rope", {
46         description = "Rope",
47         drawtype = "plantlike",
48         walkable = false,
49         climbable = true,
50         groups = {snappy=3, flammable=3},
51         tiles = {"xdecor_rope.png"},
52         inventory_image = "xdecor_rope_inv.png",
53         wield_image = "xdecor_rope_inv.png",
54         selection_box = xdecor.pixelbox(8, {{3, 0, 3, 2, 8, 2}}),
55         on_place = rope.place
56 })