1 function beds.register_bed(name, def)
2 minetest.register_node(name .. "_bottom", {
3 description = def.description,
4 inventory_image = def.inventory_image,
5 wield_image = def.wield_image,
7 tiles = def.tiles.bottom,
9 paramtype2 = "facedir",
11 groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, bed = 1},
12 sounds = default.node_sound_wood_defaults(),
15 fixed = def.nodebox.bottom,
19 fixed = def.selectionbox,
22 after_place_node = function(pos, placer, itemstack)
23 local n = minetest.get_node_or_nil(pos)
24 if not n or not n.param2 then
25 minetest.remove_node(pos)
28 local dir = minetest.facedir_to_dir(n.param2)
29 local p = {x=pos.x+dir.x,y=pos.y,z=pos.z+dir.z}
30 local n2 = minetest.get_node_or_nil(p)
31 local def = minetest.registered_items[n2.name] or nil
32 if not n2 or not def or not def.buildable_to then
33 minetest.remove_node(pos)
36 minetest.set_node(p, {name = n.name:gsub("%_bottom", "_top"), param2 = n.param2})
39 on_destruct = function(pos)
40 local n = minetest.get_node_or_nil(pos)
41 if not n then return end
42 local dir = minetest.facedir_to_dir(n.param2)
43 local p = {x=pos.x+dir.x,y=pos.y,z=pos.z+dir.z}
44 local n2 = minetest.get_node(p)
45 if minetest.get_item_group(n2.name, "bed") == 2 and n.param2 == n2.param2 then
46 minetest.remove_node(p)
49 on_rightclick = function(pos, node, clicker)
50 beds.on_rightclick(pos, clicker)
54 minetest.register_node(name .. "_top", {
56 tiles = def.tiles.top,
58 paramtype2 = "facedir",
59 groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, bed = 2},
60 sounds = default.node_sound_wood_defaults(),
63 fixed = def.nodebox.top,
67 fixed = {0, 0, 0, 0, 0, 0},
71 minetest.register_alias(name, name .. "_bottom")
74 minetest.register_craft({