Browse Source

Bed bugfix: Remove "reverse" toggle in favor of swap_node/set_node combo (#2976)

Mantar 4 months ago
parent
commit
43185f19e3
1 changed files with 8 additions and 11 deletions
  1. 8 11
      mods/beds/api.lua

+ 8 - 11
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