Files
Purpur/patches/server/0147-Spread-out-and-optimise-player-list-ticks.patch
Ben Kerllenevich 6bd246b947 Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
2c6b1f048 Revert "Remove itneract event from boat" (Fixes #5677)
aae1c54a9 Add command line option to load extra plugin jars not in the plugins folder
322886c86 Avoid NPE due to PlayerBedFailEnterEvent
d3c9a195c removed duplicate ProjectileHitEvent for fireball (#5671)
7989028a5 More Enchantment API (#5588)
c0cb5c129 Adds methods for checking item repairability (#5651)
22399b07f Actually use extended/ambient in BeaconEffectEvent (#5647)
979135878 Add cause and cancel message to PlayerGameModeChangeEvent (#5638)
51e1e58d2 Fix Adventure support in UnknownCommandEvent (#5664)
45e19ffb0 [Auto] Updated Upstream (CraftBukkit)
151457628 Fix Counter#decrement recursive call (#5665)
21ac7dc98 [Auto] Updated Upstream (CraftBukkit)
18ad2c9dd Add environment variable (PAPER_DISABLE_SERVER_GUI) to disable server gui
2021-05-19 18:01:23 -04:00

77 lines
3.3 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 ticks
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index fc47887dfd3d32788fa11845c738af53126fba46..21c51883c73dfaa7ec874fb7f8ed7c284239e0a5 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -151,7 +151,7 @@ public abstract class PlayerList {
private int viewDistance;
private EnumGamemode u;
private boolean v;
- private int w;
+ private int w; private int getTick() { return this.w; } private int setTick(int i) { return this.w = i; } // Purpur - OBFHELPER
// CraftBukkit start
private CraftServer cserver;
@@ -1029,22 +1029,23 @@ public abstract class PlayerList {
}
public void tick() {
- if (++this.w > 600) {
- // CraftBukkit start
- for (int i = 0; i < this.players.size(); ++i) {
- final EntityPlayer target = (EntityPlayer) this.players.get(i);
-
- target.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_LATENCY, Iterables.filter(this.players, new Predicate<EntityPlayer>() {
- @Override
- public boolean apply(EntityPlayer input) {
- return target.getBukkitEntity().canSee(input.getBukkitEntity());
- }
- })));
+ // Purpur start
+ int tick = getTick();
+ if (tick < this.players.size()) {
+ final org.bukkit.craftbukkit.entity.CraftPlayer target = this.players.get(tick).getBukkitEntity();
+ final java.util.List<EntityPlayer> list = new java.util.ArrayList<>();
+ for (EntityPlayer entityplayer : this.players) {
+ if (target.canSee(entityplayer.getUniqueID())) {
+ list.add(entityplayer);
+ }
}
- // CraftBukkit end
- this.w = 0;
+ target.getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_LATENCY, list));
}
-
+ if (++tick > 600) {
+ tick = 0;
+ }
+ setTick(tick);
+ // Purpur end
}
public void sendAll(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 14b9e4c845d73946f4151c902e12aa0690b9414c..e557157c5128ea89d728de2ab92b5e1a7b3437ef 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1442,7 +1442,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public boolean canSee(Player player) {
- return !hiddenPlayers.containsKey(player.getUniqueId());
+ // Purpur start
+ return canSee(player.getUniqueId());
+ }
+
+ public boolean canSee(UUID uuid) {
+ return !hiddenPlayers.containsKey(uuid);
+ // Purpur end
}
@Override