From af432c1a7f07ac1a6d4ad6ab35cd823aabd821cb Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 23 Oct 2023 12:33:36 +0100 Subject: [PATCH] Give neighbour block updates its own timer this way we aren't conflating them with scheduled updates, which are usually caused by e.g. water --- src/world/World.php | 6 +++--- src/world/WorldTimings.php | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/world/World.php b/src/world/World.php index 391c1fe24..61aedf8d5 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -948,9 +948,7 @@ class World implements ChunkManager{ $this->providerGarbageCollectionTicker = 0; } - //Do block updates $this->timings->scheduledBlockUpdates->startTiming(); - //Delayed updates while($this->scheduledBlockUpdateQueue->count() > 0 && $this->scheduledBlockUpdateQueue->current()["priority"] <= $currentTick){ /** @var Vector3 $vec */ @@ -962,7 +960,9 @@ class World implements ChunkManager{ $block = $this->getBlock($vec); $block->onScheduledUpdate(); } + $this->timings->scheduledBlockUpdates->stopTiming(); + $this->timings->neighbourBlockUpdates->startTiming(); //Normal updates while($this->neighbourBlockUpdateQueue->count() > 0){ $index = $this->neighbourBlockUpdateQueue->dequeue(); @@ -987,7 +987,7 @@ class World implements ChunkManager{ $block->onNearbyBlockChange(); } - $this->timings->scheduledBlockUpdates->stopTiming(); + $this->timings->neighbourBlockUpdates->stopTiming(); $this->timings->entityTick->startTiming(); //Update entities that need update diff --git a/src/world/WorldTimings.php b/src/world/WorldTimings.php index 5c1a56011..2d3a2090c 100644 --- a/src/world/WorldTimings.php +++ b/src/world/WorldTimings.php @@ -34,6 +34,7 @@ class WorldTimings{ public TimingsHandler $doChunkUnload; public TimingsHandler $scheduledBlockUpdates; + public TimingsHandler $neighbourBlockUpdates; public TimingsHandler $randomChunkUpdates; public TimingsHandler $randomChunkUpdatesChunkSelection; public TimingsHandler $doChunkGC; @@ -77,6 +78,7 @@ class WorldTimings{ $this->doChunkUnload = self::newTimer($name, "Unload Chunks"); $this->scheduledBlockUpdates = self::newTimer($name, "Scheduled Block Updates"); + $this->neighbourBlockUpdates = self::newTimer($name, "Neighbour Block Updates"); $this->randomChunkUpdates = self::newTimer($name, "Random Chunk Updates"); $this->randomChunkUpdatesChunkSelection = self::newTimer($name, "Random Chunk Updates - Chunk Selection"); $this->doChunkGC = self::newTimer($name, "Garbage Collection");