From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Thu, 17 Oct 2024 01:51:38 -0400 Subject: [PATCH] Remove stream and double iteration in enough deep sleeping player check diff --git a/net/minecraft/server/players/SleepStatus.java b/net/minecraft/server/players/SleepStatus.java index 3a3e6992563236141db687084aeec9684437a7db..e6827e90b685f88d945010f2c8c5aead52b0856e 100644 --- a/net/minecraft/server/players/SleepStatus.java +++ b/net/minecraft/server/players/SleepStatus.java @@ -15,9 +15,24 @@ public class SleepStatus { public boolean areEnoughDeepSleeping(int requiredSleepPercentage, List sleepingPlayers) { // CraftBukkit start - int i = (int) sleepingPlayers.stream().filter(player -> player.isSleepingLongEnough() || player.fauxSleeping || (player.level().purpurConfig.idleTimeoutCountAsSleeping && player.isAfk())).count(); // Purpur - AFK API - boolean anyDeepSleep = sleepingPlayers.stream().anyMatch(Player::isSleepingLongEnough); - return anyDeepSleep && i >= this.sleepersNeeded(requiredSleepPercentage); + // Leaf start - Remove stream and double iteration in enough deep sleeping player check + int count = 0; + boolean anyPlayerSleeping = false; + + for (ServerPlayer player : sleepingPlayers) { + final boolean isSleepingLongEnough = player.isSleepingLongEnough(); + + if (isSleepingLongEnough) { + anyPlayerSleeping = true; + } + + if (isSleepingLongEnough || player.fauxSleeping || (player.level().purpurConfig.idleTimeoutCountAsSleeping && player.isAfk())) { // Purpur - AFK API + count++; + } + } + + return anyPlayerSleeping && count >= this.sleepersNeeded(requiredSleepPercentage); + // Leaf end - Remove stream and double iteration in enough deep sleeping player check // CraftBukkit end }