From ba40fcd9158d0ceb355aedac37f3447490684f32 Mon Sep 17 00:00:00 2001 From: denys-shatin Date: Wed, 11 Feb 2026 15:23:20 +0200 Subject: [PATCH] feat: implement playersSleepingPercentage gamerule support - Calculate required sleeping players based on configured percentage - Use game_rules.players_sleeping_percentage from level info - Ceil the result to ensure minimum required players - Return false early if no players online --- pumpkin/src/world/mod.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) 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