forked from luanti-org/minetest_game
		
	Add option to disable bed's night skip - Solve second point of #512 by adding a setting, enable_bed_night_skip , with default value of true.
				
					
				
			This commit is contained in:
		| @@ -26,3 +26,11 @@ | ||||
| # Enable the stairs mod ABM that replaces the old 'upside down' | ||||
| # stair and slab nodes in old maps with the new param2 versions. | ||||
| #enable_stairs_replace_abm = false | ||||
|  | ||||
| # Whether you allow respawning in beds | ||||
| # Default value is true | ||||
| #enable_bed_respawn = true | ||||
|  | ||||
| # Whether players can skip night by sleeping | ||||
| # Default value is true | ||||
| #enable_bed_night_skip = true | ||||
|   | ||||
| @@ -14,7 +14,8 @@ if more than 50% of the players are lying in bed and use this option. | ||||
| Another feature is a controled respawning. If you have slept in bed (not just lying in it) your respawn point | ||||
| is set to the beds location and you will respawn there after death. | ||||
| You can disable the respawn at beds by setting "enable_bed_respawn = false" in minetest.conf | ||||
|  | ||||
| You can also disable the night skip feature by setting "enable_bed_night_skip = false" in minetest.conf or by using | ||||
| the /set command ingame. | ||||
|  | ||||
|  | ||||
| License of source code, textures: WTFPL | ||||
|   | ||||
| @@ -21,6 +21,14 @@ local function get_look_yaw(pos) | ||||
| 	end | ||||
| end | ||||
|  | ||||
| local function is_night_skip_enabled() | ||||
| 	local enable_night_skip = minetest.setting_getbool("enable_bed_night_skip") | ||||
| 	if enable_night_skip == nil then | ||||
| 		enable_night_skip = true | ||||
| 	end | ||||
| 	return enable_night_skip | ||||
| end | ||||
|  | ||||
| local function check_in_beds(players) | ||||
| 	local in_bed = beds.player | ||||
| 	if not players then | ||||
| @@ -101,7 +109,7 @@ local function update_formspecs(finished) | ||||
| 	else | ||||
| 		form_n = beds.formspec .. | ||||
| 			"label[2.2,11;"..tostring(player_in_bed).." of "..tostring(ges).." players are in bed]" | ||||
| 		if is_majority then | ||||
| 		if is_majority and is_night_skip_enabled() then | ||||
| 			form_n = form_n .. | ||||
| 				"button_exit[2,8;4,0.75;force;Force night skip]" | ||||
| 		end | ||||
| @@ -154,11 +162,13 @@ function beds.on_rightclick(pos, player) | ||||
| 	-- skip the night and let all players stand up | ||||
| 	if check_in_beds() then | ||||
| 		minetest.after(2, function() | ||||
| 			beds.skip_night() | ||||
| 			if not is_sp then | ||||
| 				update_formspecs(true) | ||||
| 				update_formspecs(is_night_skip_enabled()) | ||||
| 			end | ||||
| 			if is_night_skip_enabled() then | ||||
| 				beds.skip_night() | ||||
| 				beds.kick_players() | ||||
| 			end | ||||
| 			beds.kick_players() | ||||
| 		end) | ||||
| 	end | ||||
| end | ||||
| @@ -189,9 +199,11 @@ minetest.register_on_leaveplayer(function(player) | ||||
| 	beds.player[name] = nil | ||||
| 	if check_in_beds() then | ||||
| 		minetest.after(2, function() | ||||
| 			beds.skip_night() | ||||
| 			update_formspecs(true) | ||||
| 			beds.kick_players() | ||||
| 			update_formspecs(is_night_skip_enabled()) | ||||
| 			if is_night_skip_enabled() then | ||||
| 				beds.skip_night() | ||||
| 				beds.kick_players() | ||||
| 			end | ||||
| 		end) | ||||
| 	end | ||||
| end) | ||||
| @@ -206,8 +218,10 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) | ||||
| 	end | ||||
|  | ||||
| 	if fields.force then | ||||
| 		beds.skip_night() | ||||
| 		update_formspecs(true) | ||||
| 		beds.kick_players() | ||||
| 		update_formspecs(is_night_skip_enabled()) | ||||
| 		if is_night_skip_enabled() then | ||||
| 			beds.skip_night() | ||||
| 			beds.kick_players() | ||||
| 		end | ||||
| 	end | ||||
| end) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user