Files
Purpur/patches/server/0138-Spread-out-and-optimise-player-list-ticksSpread-out-.patch
TwoLeggedCat 325d6c39a4 Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
871f30038 fixed kick event leave message (#4766)
0aa0a1d97 Updated Upstream (CraftBukkit)
d770f71f4 Add PlayerArmSwingEvent (#5353)
23d887b2a Swapped out Vec3#distanceTo call with a Vec3#distanceToSqr call to remove calls to Math.sqrt
5ff90b938 Fix collisions during world generation (#6129)
20ff0b058 [ci skip] Add a test plugin (#6133)
416ec9898 [ci skip] Remove extra newlines at EOF (#6127)
79d7dfbbe Ensure shulker bounding box is updated (#6010)
d8ad276b7 [ci skip] More badges and things to README.md (#5338)
bb44da842 Fix cancelling EntityPickupItemEvent for villagers (#6091)
351a2c38b Drop no longer needed patch (#6115)
648f6078d Route sign run_command click events through normal chat logic (#6109)
dafc06460 Fix MobEffectArgument#getEffect reobf
4aef0354d [ci skip] Use Java toolchain for run tasks (#6108)
144e5f7ac Add option for logging named entity deaths (#6107)
b5be382d0 Add methods to `ProtoWorld` for working with `BlockState`s (#5929)
2021-07-09 16:18:27 -07:00

67 lines
3.0 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: James Lyne <jim+github@not-null.co.uk>
Date: Mon, 7 Dec 2020 17:52:36 +0000
Subject: [PATCH] Spread out and optimise player list ticksSpread out and
optimise player list ticks
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 1d89441b6d650691aef4bbbb714cee1f3d73774a..29043f9354b29f7766f1d6d8e793e2ea23883fa0 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1012,22 +1012,22 @@ public abstract class PlayerList {
}
public void tick() {
- if (++this.sendAllPlayerInfoIn > 600) {
- // CraftBukkit start
- for (int i = 0; i < this.players.size(); ++i) {
- final ServerPlayer target = (ServerPlayer) this.players.get(i);
-
- target.connection.send(new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.UPDATE_LATENCY, this.players.stream().filter(new Predicate<ServerPlayer>() {
- @Override
- public boolean apply(ServerPlayer input) {
- return target.getBukkitEntity().canSee(input.getBukkitEntity());
- }
- }).collect(Collectors.toList())));
+ // Purpur start
+ if (this.sendAllPlayerInfoIn < this.players.size()) {
+ final org.bukkit.craftbukkit.entity.CraftPlayer target = this.players.get(this.sendAllPlayerInfoIn).getBukkitEntity();
+ final List<ServerPlayer> list = new java.util.ArrayList<>();
+ for (ServerPlayer player : this.players) {
+ if (target.canSee(player.getUUID())) {
+ list.add(player);
+ }
}
- // CraftBukkit end
- this.sendAllPlayerInfoIn = 0;
+ target.getHandle().connection.send(new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.UPDATE_LATENCY, list));
}
+ if (++this.sendAllPlayerInfoIn > 600) {
+ this.sendAllPlayerInfoIn = 0;
+ }
+ // Purpur end
}
public void broadcastAll(Packet<?> packet) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index bb9362a958b60f320d3f544e24206e1f8925e846..d74bb5ae378d3b7a2edcffeb4fc242e855949078 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1563,7 +1563,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public boolean canSee(Player player) {
- return !this.hiddenPlayers.containsKey(player.getUniqueId());
+ // Purpur start
+ return canSee(player.getUniqueId());
+ }
+
+ public boolean canSee(UUID uuid) {
+ return !hiddenPlayers.containsKey(uuid);
+ // Purpur end
}
@Override