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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user