diff --git a/pumpkin/src/world/mod.rs b/pumpkin/src/world/mod.rs index 4ff13d836..11d719aba 100644 --- a/pumpkin/src/world/mod.rs +++ b/pumpkin/src/world/mod.rs @@ -2107,8 +2107,19 @@ impl World { .count(); drop(players); - // TODO: sleep ratio - sleeping_player_count == player_count && player_count != 0 + if player_count == 0 { + return false; + } + + let sleep_percentage = self + .level_info + .load() + .game_rules + .players_sleeping_percentage; + let required_sleeping = + ((player_count as f64 * sleep_percentage as f64) / 100.0).ceil() as usize; + + sleeping_player_count >= required_sleeping } // NOTE: This function doesn't actually await on anything, it just spawns two tokio tasks