9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-25 18:09:17 +00:00

Fix missing timings

This commit is contained in:
Dreeam
2023-02-17 14:59:43 -05:00
parent 88ecb518cd
commit 41ef046d4e

View File

@@ -28,7 +28,7 @@ index e9a114a4431cedaafef4b427a8baf5030ab60751..c45e8de3a2d46e06f2a5eaa85c789420
this.tickStep_tickConnection();
this.tickStep_tickPlayerList();
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 1ff00b202b759095661617242749091b532a6711..04e869e31fce1e0f0ad0690894bcdc6597e00b85 100644
index 1ff00b202b759095661617242749091b532a6711..ac082d8b565ecae32ce14ca75113f7fd6f779f2f 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -2,6 +2,10 @@ package net.minecraft.server.level;
@@ -340,7 +340,7 @@ index 1ff00b202b759095661617242749091b532a6711..04e869e31fce1e0f0ad0690894bcdc65
// Paper end
if (!(entity instanceof EnderDragonPart)) {
EntityType<?> entitytypes = entity.getType();
@@ -1204,77 +1213,92 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1204,16 +1213,48 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
entity.tracker = null; // Paper - We're no longer tracked
}
@@ -376,23 +376,28 @@ index 1ff00b202b759095661617242749091b532a6711..04e869e31fce1e0f0ad0690894bcdc65
+
// Paper start - optimised tracker
private final void processTrackQueue() {
this.level.timings.tracker1.startTiming();
- this.level.timings.tracker1.startTiming();
- try {
+ tryInitIfNotInited();
+
+ if (!enabled.get()) {
for (TrackedEntity tracker : this.entityMap.values()) {
- for (TrackedEntity tracker : this.entityMap.values()) {
- // update tracker entry
tracker.updatePlayers(tracker.entity.getPlayersInTrackRange());
- tracker.updatePlayers(tracker.entity.getPlayersInTrackRange());
+ tryInitIfNotInited();
+ if (!enabled.get()) {
+ this.level.timings.tracker1.startTiming();
+ try {
+ for (TrackedEntity tracker : this.entityMap.values()) {
+ tracker.updatePlayers(tracker.entity.getPlayersInTrackRange());
+ }
+ } finally {
+ this.level.timings.tracker1.stopTiming();
}
- } finally {
- this.level.timings.tracker1.stopTiming();
- }
}
- this.level.timings.tracker2.startTiming();
- try {
+ this.level.timings.tracker2.startTiming();
@@ -1221,60 +1262,49 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
try {
for (TrackedEntity tracker : this.entityMap.values()) {
tracker.serverEntity.sendChanges();
+ return;
@@ -400,42 +405,41 @@ index 1ff00b202b759095661617242749091b532a6711..04e869e31fce1e0f0ad0690894bcdc65
+ if (this.totalRunning.get() > 0) {
+ return;
}
- } finally {
- this.level.timings.tracker2.stopTiming();
+
} finally {
this.level.timings.tracker2.stopTiming();
- }
+ this.totalRunning.set(2);
+ }
+
+ this.asyncTrackWorker.execute(() -> {
+ //this.level.timings.tracker1.startTiming(); // Purpur
+ try {
+ CompletableFuture.allOf(this.entityMap.values()
+ .stream()
+ .map(tracker -> CompletableFuture.runAsync(() -> {
+ tracker.updatePlayers(tracker.entity.getPlayersInTrackRange());
+ }, concurrentTrackWorker))
+ .toArray(CompletableFuture[]::new)).join();
+ } finally {
+ //this.level.timings.tracker1.stopTiming(); // Purpur
+ this.totalRunning.getAndDecrement();
+ }
+ });
+ this.asyncTrackWorker.execute(() -> {
+ this.level.timings.tracker1.startTiming();
+ try {
+ CompletableFuture.allOf(this.entityMap.values()
+ .stream()
+ .map(tracker -> CompletableFuture.runAsync(() -> {
+ tracker.updatePlayers(tracker.entity.getPlayersInTrackRange());
+ }, concurrentTrackWorker))
+ .toArray(CompletableFuture[]::new)).join();
+ } finally {
+ this.level.timings.tracker1.stopTiming();
+ this.totalRunning.getAndDecrement();
+ }
+ });
+
+ this.asyncTrackWorker.execute(() -> {
+ //this.level.timings.tracker2.startTiming(); // Purpur
+ try {
+ for (TrackedEntity tracker : this.entityMap.values()) {
+ tracker.serverEntity.sendChanges();
+ }
+ } finally {
+ //this.level.timings.tracker2.stopTiming(); // Purpur
+ this.totalRunning.getAndDecrement();
+ this.asyncTrackWorker.execute(() -> {
+ this.level.timings.tracker2.startTiming();
+ try {
+ for (TrackedEntity tracker : this.entityMap.values()) {
+ tracker.serverEntity.sendChanges();
+ }
+ });
}
+ } finally {
+ this.level.timings.tracker2.stopTiming();
+ this.totalRunning.getAndDecrement();
+ }
+ });
}
- // Paper end - optimised tracker
// Paper end - optimised tracker
+ // Paper end - optimised tracker
protected void tick() {
// Paper start - optimized tracker
- if (true) {
@@ -487,7 +491,7 @@ index 1ff00b202b759095661617242749091b532a6711..04e869e31fce1e0f0ad0690894bcdc65
}
@@ -1456,7 +1480,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1456,7 +1486,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
final Entity entity;
private final int range;
SectionPos lastSectionPos;
@@ -496,7 +500,7 @@ index 1ff00b202b759095661617242749091b532a6711..04e869e31fce1e0f0ad0690894bcdc65
public TrackedEntity(Entity entity, int i, int j, boolean flag) {
this.serverEntity = new ServerEntity(ChunkMap.this.level, entity, j, flag, this::broadcast, this.seenBy); // CraftBukkit
@@ -1474,12 +1498,11 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1474,12 +1504,11 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
if (newTrackerCandidates != null) {
Object[] rawData = newTrackerCandidates.getBackingSet();
@@ -511,7 +515,7 @@ index 1ff00b202b759095661617242749091b532a6711..04e869e31fce1e0f0ad0690894bcdc65
this.updatePlayer(player);
}
}
@@ -1510,14 +1533,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1510,14 +1539,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
public void broadcast(Packet<?> packet) {
@@ -527,7 +531,7 @@ index 1ff00b202b759095661617242749091b532a6711..04e869e31fce1e0f0ad0690894bcdc65
}
public void broadcastAndSend(Packet<?> packet) {
@@ -1529,14 +1547,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1529,14 +1553,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
public void broadcastRemoved() {
@@ -543,7 +547,7 @@ index 1ff00b202b759095661617242749091b532a6711..04e869e31fce1e0f0ad0690894bcdc65
}
public void removePlayer(ServerPlayer player) {
@@ -1544,7 +1557,6 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1544,7 +1563,6 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
if (this.seenBy.remove(player.connection)) {
this.serverEntity.removePairing(player);
}