From 876a9ca5d22b337b8f5d12d1325fbd1280a0bacb Mon Sep 17 00:00:00 2001
From: beyondlimits <beyondlimits@10g.pl>
Date: Tue, 3 Jul 2018 20:50:16 +0200
Subject: [PATCH] Beds: Fix input checking for "Force night skip"

---
 mods/beds/functions.lua | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/mods/beds/functions.lua b/mods/beds/functions.lua
index 32721cd..18d96e7 100644
--- a/mods/beds/functions.lua
+++ b/mods/beds/functions.lua
@@ -219,16 +219,25 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
 	if formname ~= "beds_form" then
 		return
 	end
+
+	-- Because "Force night skip" button is a button_exit, it will set fields.quit
+	-- and lay_down call will change value of player_in_bed, so it must be taken
+	-- earlier.
+	local last_player_in_bed = player_in_bed
+
 	if fields.quit or fields.leave then
 		lay_down(player, nil, nil, false)
 		update_formspecs(false)
 	end
 
 	if fields.force then
-		update_formspecs(is_night_skip_enabled())
-		if is_night_skip_enabled() then
+		local is_majority = (#minetest.get_connected_players() / 2) < last_player_in_bed
+		if is_majority and is_night_skip_enabled() then
+			update_formspecs(true)
 			beds.skip_night()
 			beds.kick_players()
+		else
+			update_formspecs(false)
 		end
 	end
 end)