1 --remember to delete spawnpoint when bed removed
3 local mod_storage = minetest.get_mod_storage()
4 local time_night = {19500,4750}
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!")
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!")
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)
38 minetest.register_node("bed: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(),
47 node_placement_prediction = "",
48 on_construct = function(pos)
50 local param2 = minetest.get_node(pos).param2
51 local facedir = minetest.facedir_to_dir(param2)
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
62 facedir = vector.multiply(facedir,-1)
63 param2 = minetest.dir_to_facedir(facedir, false)
66 minetest.add_node(pos,{name="bed:bed_front", param2=param2})
68 facedir = vector.multiply(facedir,-1)
69 minetest.add_node(vector.add(pos,facedir),{name="bed:bed_back", param2=param2})
73 minetest.register_node("bed:bed_front", {
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(),
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},
89 node_placement_prediction = "",
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)
102 on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
103 create_spawnpoint(pos,clicker)
107 minetest.register_node("bed:bed_back", {
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 = "",
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},
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)
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)