mirror of
https://github.com/Dreeam-qwq/Gale.git
synced 2025-12-20 15:29:30 +00:00
43 lines
2.6 KiB
Diff
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
|
|
}
|
|
}
|