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
This commit is contained in:
denys-shatin
2026-02-11 15:23:20 +02:00
parent 62c40dcaf9
commit ba40fcd915

View File

@@ -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