Skip to content

Commit

Permalink
Add option to disable bed's night skip - Solve second point of #512 b…
Browse files Browse the repository at this point in the history
…y adding a setting, `enable_bed_night_skip` , with default value of `true`.
  • Loading branch information
Lymkwi authored and paramat committed Sep 29, 2015
1 parent 24578ca commit 279b85f
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 13 deletions.
8 changes: 8 additions & 0 deletions minetest.conf.example
Expand Up @@ -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
3 changes: 2 additions & 1 deletion mods/beds/README.txt
Expand Up @@ -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
Expand Down
38 changes: 26 additions & 12 deletions mods/beds/functions.lua
Expand Up @@ -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
Expand Down Expand Up @@ -56,7 +64,7 @@ local function lay_down(player, pos, bed_pos, state, skip)
if skip then
return
end
if p then
if p then
player:setpos(p)
end

Expand Down Expand Up @@ -100,8 +108,8 @@ local function update_formspecs(finished)
"label[2.7,11; Good morning.]"
else
form_n = beds.formspec ..
"label[2.2,11;"..tostring(player_in_bed).." of "..tostring(ges).." players are in bed]"
if is_majority then
"label[2.2,11;"..tostring(player_in_bed).." of "..tostring(ges).." players are in bed]"
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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand All @@ -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)

0 comments on commit 279b85f

Please sign in to comment.