mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-20 09:57:43 +01:00
Further optimise player list ticks
This commit is contained in:
@@ -0,0 +1,99 @@
|
|||||||
|
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 3f634a266f..992276a393 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/PlayerList.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/PlayerList.java
|
||||||
|
@@ -23,8 +23,6 @@ import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
// CraftBukkit start
|
||||||
|
-import com.google.common.base.Predicate;
|
||||||
|
-import com.google.common.collect.Iterables;
|
||||||
|
|
||||||
|
import org.bukkit.craftbukkit.CraftServer;
|
||||||
|
import org.bukkit.craftbukkit.CraftWorld;
|
||||||
|
@@ -34,13 +32,10 @@ import org.bukkit.Location;
|
||||||
|
import org.bukkit.craftbukkit.util.CraftChatMessage;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.player.PlayerChangedWorldEvent;
|
||||||
|
-import org.bukkit.event.player.PlayerPortalEvent;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.event.player.PlayerLoginEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||||
|
-import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||||
|
-import org.bukkit.util.Vector;
|
||||||
|
import org.spigotmc.event.player.PlayerSpawnLocationEvent;
|
||||||
|
// CraftBukkit end
|
||||||
|
|
||||||
|
@@ -71,7 +66,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;
|
||||||
|
@@ -919,22 +914,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 e781ae267d..4f42bc2183 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
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
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 player list ticks
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
|
|
||||||
index 3f634a266..7ac756179 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/PlayerList.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/PlayerList.java
|
|
||||||
@@ -919,10 +919,11 @@ public abstract class PlayerList {
|
|
||||||
}
|
|
||||||
|
|
||||||
public void tick() {
|
|
||||||
- if (++this.w > 600) {
|
|
||||||
+ if (true) {
|
|
||||||
+ int tick = getTick(); // Purpur
|
|
||||||
// CraftBukkit start
|
|
||||||
- for (int i = 0; i < this.players.size(); ++i) {
|
|
||||||
- final EntityPlayer target = (EntityPlayer) this.players.get(i);
|
|
||||||
+ if (tick < this.players.size()) { // Purpur
|
|
||||||
+ final EntityPlayer target = (EntityPlayer) this.players.get(tick); // Purpur
|
|
||||||
|
|
||||||
target.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_LATENCY, Iterables.filter(this.players, new Predicate<EntityPlayer>() {
|
|
||||||
@Override
|
|
||||||
@@ -931,12 +932,23 @@ public abstract class PlayerList {
|
|
||||||
}
|
|
||||||
})));
|
|
||||||
}
|
|
||||||
+
|
|
||||||
// CraftBukkit end
|
|
||||||
- this.w = 0;
|
|
||||||
+ // Purpur start
|
|
||||||
+ if (tick >= 600) {
|
|
||||||
+ setTick(0);
|
|
||||||
+ } else {
|
|
||||||
+ setTick(tick + 1);
|
|
||||||
+ }
|
|
||||||
+ // Purpur end
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
+ public final int getTick() { return this.w; } // Purpur - OBFHELPER
|
|
||||||
+
|
|
||||||
+ public final void setTick(int tick) { this.w = tick; } // Purpur - OBFHELPER
|
|
||||||
+
|
|
||||||
public void sendAll(Packet<?> packet) {
|
|
||||||
for (int i = 0; i < this.players.size(); ++i) {
|
|
||||||
((EntityPlayer) this.players.get(i)).playerConnection.sendPacket(packet);
|
|
||||||
Reference in New Issue
Block a user