diff --git a/mods/beds/api.lua b/mods/beds/api.lua index 8af13ddd..ea3149a6 100644 --- a/mods/beds/api.lua +++ b/mods/beds/api.lua @@ -1,6 +1,4 @@ -local reverse = true - local function destruct_bed(pos, n) local node = minetest.get_node(pos) local other @@ -12,15 +10,14 @@ local function destruct_bed(pos, n) local dir = minetest.facedir_to_dir(node.param2) other = vector.add(pos, dir) end - - if reverse then - reverse = not reverse - minetest.remove_node(other) - minetest.check_for_falling(other) - beds.remove_spawns_at(pos) - beds.remove_spawns_at(other) - else - reverse = not reverse + local oname = minetest.get_node(other).name + if minetest.get_item_group(oname, "bed") ~= 0 then + -- Swap node leaves meta, but doesn't call destruct_bed again + minetest.swap_node(other, {name = "air"}) + minetest.remove_node(other) -- Now clear the meta + minetest.check_for_falling(other) + beds.remove_spawns_at(pos) + beds.remove_spawns_at(other) end end