Files
Purpur/patches/server/0153-Spread-out-and-optimise-player-list-ticks.patch
jmp 7e8bf667fa Updated Upstream (Paper & Tuinity)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
d6f730655 Do not add passengers of entities that were above save limit (#5073)
cb99288a5 Try to get a new 1.16.5 build on website now we hopefully fixed site bug
946cdd2d2 [CI-SKIP] [Auto] Rebuild Patches
8f805412b Remove class 13 from netty preload - Fixes #5066
f6d3c6811 Make ProjectileHitEvent Cancellable
97b020f13 make schedule command per world
aac07a271 Return chat component with empty text instead of throwing exception. Fixes #3328
f27bc0659 Collision option for requiring a player participant
193f80148 Add StructureLocateEvent
59222b5ba Add sendOpLevel API
f792973c2 [CI-SKIP] Update API to 1.16.5 (#5067)

Tuinity Changes:
db82b6c Update to starlight 0.0.3
b97e87f Merge branch 'master' into dev/lighting
1d169e7 Updated Upstream (Paper)
09997a6 Merge branch 'master' into dev/lighting
8954b61 Updated Upstream (Paper)
8753f47 Merge branch 'master' into dev/lighting
4743c34 Updated Upstream (Paper)
2021-01-16 17:34:55 -08:00

77 lines
3.2 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/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index 3c19e931ad7d5330f1c77ef65aaa5858a001e4df..0efc210ad55d843fd297f0caa88a5f355fbfef80 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -71,7 +71,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;
@@ -928,22 +928,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 8a28c68c5fc22838c62ceef738b330afb840c4c6..95e548eea5acbece0e7036f23d79b6fc61e6786f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1382,7 +1382,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