From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: James Lyne 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 7c18b70f48b4c2427044ffa0f0b9b071f1e45797..5c11e91e1eebb0e24aaca9af323a9d5ecdc0a411 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1007,22 +1007,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() { - @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 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 e251821c59a2a07dc6e1b3f984641a0e549c315a..1ae6175cc5d83d669a19a88cb1ddc6478cb24dd9 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1549,7 +1549,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public boolean canSee(org.bukkit.entity.Entity entity) { - return !this.hiddenEntities.containsKey(entity.getUniqueId()); + // Purpur start + return this.canSee(entity.getUniqueId()); + } + + public boolean canSee(UUID uuid) { + return !this.hiddenEntities.containsKey(uuid); + // Purpur end } @Override