9
0
mirror of https://github.com/Dreeam-qwq/Gale.git synced 2025-12-20 15:29:30 +00:00
Files
Gale/patches/server/0096-Optimize-player-list-for-sending-player-info.patch
2022-12-01 17:27:21 +01:00

43 lines
2.6 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MartijnMuijsers <martijnmuijsers@live.nl>
Date: Tue, 29 Nov 2022 23:30:38 +0100
Subject: [PATCH] Optimize player list for sending player info
License: MIT (https://opensource.org/licenses/MIT)
This patch is based on the following patch:
"Spread out and optimise player list ticksSpread out and optimise player list ticks"
By: James Lyne <jim+github@not-null.co.uk>
As part of: Purpur (https://github.com/PurpurMC/Purpur)
Licensed under: MIT (https://opensource.org/licenses/MIT)
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index d2e6a92a44416bfaa161c78dd4b9a7b3ad78792a..a60db92d8c6afab40e12b3ac28241beac06bcf63 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1070,14 +1070,18 @@ public abstract class PlayerList {
// Gale start - Purpur - spread out sending all player info
ServerPlayer[] sendAllPlayerInfoBucket = this.sendAllPlayerInfoBuckets[this.sendAllPlayerInfoIn];
if (sendAllPlayerInfoBucket != null) {
- for (ServerPlayer target : sendAllPlayerInfoBucket) {
+ // Gale start - Purpur - optimize player list for sending player info
+ for (ServerPlayer targetPlayer : sendAllPlayerInfoBucket) {
// Gale end - Purpur - spread out sending all player info
- target.connection.send(new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.UPDATE_LATENCY, this.players.stream().filter(new Predicate<ServerPlayer>() {
- @Override
- public boolean test(ServerPlayer input) {
- return target.getBukkitEntity().canSee(input.getBukkitEntity());
+ var target = targetPlayer.getBukkitEntity();;
+ final List<ServerPlayer> list = new java.util.ArrayList<>(this.players.size());
+ for (ServerPlayer player : this.players) {
+ if (target.canSee(player.getUUID())) {
+ list.add(player);
}
- }).collect(Collectors.toList())));
+ }
+ target.getHandle().connection.send(new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.UPDATE_LATENCY, list));
+ // Gale end - Purpur - optimize player list for sending player info
// Gale start - Purpur - spread out sending all player info
}
}