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/src/main/java/net/minecraft/server/players/SleepStatus.java b/src/main/java/net/minecraft/server/players/SleepStatus.java index caa8a69bde0c212c36dd990a67836ac2f95548c0..5ae435dcc078a5b9af90f01fa70f1a9d6f34e2be 100644 --- a/src/main/java/net/minecraft/server/players/SleepStatus.java +++ b/src/main/java/net/minecraft/server/players/SleepStatus.java @@ -19,10 +19,24 @@ public class SleepStatus { public boolean areEnoughDeepSleeping(int percentage, List players) { // CraftBukkit start - int j = (int) players.stream().filter((eh) -> { return eh.isSleepingLongEnough() || eh.fauxSleeping || (eh.level().purpurConfig.idleTimeoutCountAsSleeping && eh.isAfk()); }).count(); // Purpur - boolean anyDeepSleep = players.stream().anyMatch(Player::isSleepingLongEnough); + // Leaf start - Remove stream and double iteration in enough deep sleeping player check + int count = 0; + boolean anyPlayerSleeping = false; - return anyDeepSleep && j >= this.sleepersNeeded(percentage); + for (ServerPlayer player : players) { + final boolean isSleepingLongEnough = player.isSleepingLongEnough(); + + if (isSleepingLongEnough) { + anyPlayerSleeping = true; + } + + if (isSleepingLongEnough || player.fauxSleeping || (player.level().purpurConfig.idleTimeoutCountAsSleeping && player.isAfk())) { // Purpur + count++; + } + } + + return anyPlayerSleeping && count >= this.sleepersNeeded(percentage); + // Leaf end - Remove stream and double iteration in enough deep sleeping player check // CraftBukkit end }