]> git.lizzy.rs Git - Crafter.git/blob - mods/bed/init.lua
Add TNT
[Crafter.git] / mods / bed / init.lua
1 --remember to delete spawnpoint when bed removed
2
3 local mod_storage = minetest.get_mod_storage()
4 local time_night = {19500,4750}
5
6 --node boxes are from mineclone2
7 local function create_spawnpoint(pos,clicker)
8         local name = clicker:get_player_name()
9         local string_pos = minetest.pos_to_string(pos)
10         mod_storage:set_string(name, string_pos)
11         minetest.chat_send_player(name, "YOUR RESPAWN POINT HAS BEEN SET!")
12 end
13
14 --delete player spawnpoint if remove bed
15 local function remove_spawnpoint(pos,clicker)
16         local name = clicker:get_player_name()
17         local string_pos = mod_storage:get_string(name)
18         if string_pos ~= "" then
19                 local pos2 = minetest.string_to_pos(string_pos)
20                 if vector.equals(pos,pos2) then
21                         mod_storage:set_string(name, "")
22                         minetest.chat_send_player(name, "YOUR RESPAWN POINT HAS BEEN REMOVED!")
23                 end
24         end
25 end
26
27 --try to send the player to their bed
28 minetest.register_on_respawnplayer(function(player)
29         local name = player:get_player_name()
30         local string_pos = mod_storage:get_string(name)
31         if string_pos ~= "" then
32                 local pos = minetest.string_to_pos(string_pos)
33                 player:setpos(pos)
34                 return(true)
35         end
36 end)
37 --these are beds
38 minetest.register_node("bed:bed", {
39     description = "Bed",
40     inventory_image = "bed.png",
41     wield_image = "bed.png",
42     paramtype2 = "facedir",
43     tiles = {"bed_top.png^[transform1","wood.png","bed_side.png","bed_side.png^[transform4","bed_front.png","nothing.png"},
44     groups = {wood = 1, hard = 1, axe = 1, hand = 3, instant=1},
45     sounds = main.woodSound(),
46     drawtype = "nodebox",
47         node_placement_prediction = "",
48         on_construct = function(pos)
49                 
50                 local param2 = minetest.get_node(pos).param2
51                 local facedir = minetest.facedir_to_dir(param2)
52                 
53                 --cancel if not air
54                 if minetest.get_node(vector.add(pos,facedir)).name ~= "air" then
55                         minetest.remove_node(pos)
56                         local obj = minetest.add_item(pos, "bed:bed")
57                         obj:get_luaentity().collection_timer = 2
58                         return
59                 end
60                 
61                 
62                 facedir = vector.multiply(facedir,-1)
63                 param2 = minetest.dir_to_facedir(facedir, false)
64                 
65                 
66                 minetest.add_node(pos,{name="bed:bed_front", param2=param2})
67                         
68                 facedir = vector.multiply(facedir,-1)
69                 minetest.add_node(vector.add(pos,facedir),{name="bed:bed_back", param2=param2})
70         end,
71 })
72
73 minetest.register_node("bed:bed_front", {
74     description = "Bed",
75     paramtype = "light",
76     paramtype2 = "facedir",
77     tiles = {"bed_top.png^[transform1","wood.png","bed_side.png","bed_side.png^[transform4","bed_front.png","nothing.png"},
78     groups = {wood = 1, hard = 1, axe = 1, hand = 3, instant=1,bouncy=50},
79     sounds = main.woodSound(),
80     drawtype = "nodebox",
81     node_box = {
82                 type = "fixed",
83                 fixed = {
84                                 {-0.5, -5/16, -0.5, 0.5, 0.06, 0.5},
85                                 {-0.5, -0.5, 0.5, -5/16, -5/16, 5/16},
86                                 {0.5, -0.5, 0.5, 5/16, -5/16, 5/16},
87                         },
88                 },
89         node_placement_prediction = "",
90         drop = "bed:bed",
91         on_dig = function(pos, node, digger)
92                 local param2 = minetest.get_node(pos).param2
93                 local facedir = minetest.facedir_to_dir(param2) 
94                 facedir = vector.multiply(facedir,-1)
95                 local obj = minetest.add_item(pos, "bed:bed")
96                 obj:get_luaentity().collection_timer = 2
97                 minetest.remove_node(pos)
98                 minetest.remove_node(vector.add(pos,facedir))
99                 remove_spawnpoint(pos,digger)
100                 remove_spawnpoint(vector.add(pos,facedir),digger)
101         end,
102         on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
103                 create_spawnpoint(pos,clicker)
104         end,
105 })
106
107 minetest.register_node("bed:bed_back", {
108     description = "Bed",
109     paramtype = "light",
110     paramtype2 = "facedir",
111     tiles = {"bed_top_end.png^[transform1","wood.png","bed_side_end.png","bed_side_end.png^[transform4","nothing.png","bed_end.png"},
112     groups = {wood = 1, hard = 1, axe = 1, hand = 3, instant=1,bouncy=50},
113     sounds = main.woodSound(),
114     drawtype = "nodebox",
115     node_placement_prediction = "",
116     node_box = {
117                 type = "fixed",
118                 fixed = {
119                                 {-0.5, -5/16, -0.5, 0.5, 0.06, 0.5},
120                                 {-0.5, -0.5, -0.5, -5/16, -5/16, -5/16},
121                                 {0.5, -0.5, -0.5, 5/16, -5/16, -5/16},
122                         },
123                 },
124         drop = "bed:bed",
125         on_dig = function(pos, node, digger)
126                 local param2 = minetest.get_node(pos).param2
127                 local facedir = minetest.facedir_to_dir(param2) 
128                 local obj = minetest.add_item(pos, "bed:bed")
129                 obj:get_luaentity().collection_timer = 2
130                 minetest.remove_node(pos)
131                 minetest.remove_node(vector.add(pos,facedir))
132                 remove_spawnpoint(pos,digger)
133                 remove_spawnpoint(vector.add(pos,facedir),digger)               
134         end,
135         on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
136                 local param2 = minetest.get_node(pos).param2
137                 local facedir = minetest.facedir_to_dir(param2) 
138                 create_spawnpoint(vector.add(pos,facedir),clicker)
139         end,
140 })