From 10243c7b2c315e10bd7f212d3dc265b13ba8f48a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Apr 2023 13:19:24 +0100 Subject: [PATCH 01/13] Bump phpstan/phpstan from 1.10.11 to 1.10.13 (#5697) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.11 to 1.10.13. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.10.11...1.10.13) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- composer.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/composer.json b/composer.json index 1eb2eb866..b57cf9b7a 100644 --- a/composer.json +++ b/composer.json @@ -56,7 +56,7 @@ "webmozart/path-util": "^2.3" }, "require-dev": { - "phpstan/phpstan": "1.10.11", + "phpstan/phpstan": "1.10.13", "phpstan/phpstan-phpunit": "^1.1.0", "phpstan/phpstan-strict-rules": "^1.2.0", "phpunit/phpunit": "^9.2" diff --git a/composer.lock b/composer.lock index 9dacda0ef..e84eb6c8c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6cd5185a409af08d842a5e41ba3b877b", + "content-hash": "d819da2b086b38c4dd2a5028084e251c", "packages": [ { "name": "adhocore/json-comment", @@ -1884,16 +1884,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.11", + "version": "1.10.13", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "8aa62e6ea8b58ffb650e02940e55a788cbc3fe21" + "reference": "f07bf8c6980b81bf9e49d44bd0caf2e737614a70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/8aa62e6ea8b58ffb650e02940e55a788cbc3fe21", - "reference": "8aa62e6ea8b58ffb650e02940e55a788cbc3fe21", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f07bf8c6980b81bf9e49d44bd0caf2e737614a70", + "reference": "f07bf8c6980b81bf9e49d44bd0caf2e737614a70", "shasum": "" }, "require": { @@ -1942,7 +1942,7 @@ "type": "tidelift" } ], - "time": "2023-04-04T19:17:42+00:00" + "time": "2023-04-12T19:29:52+00:00" }, { "name": "phpstan/phpstan-phpunit", From 6fc4ce0f8635dfea0ed86791d5b4b867c9151175 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 14 Apr 2023 15:40:52 +0100 Subject: [PATCH 02/13] =?UTF-8?q?=C3=82TimingsCommand:=20include=20HTTP=20?= =?UTF-8?q?response=20code=20in=20debug=20message=20we=20should=20probably?= =?UTF-8?q?=20show=20this=20in=20the=20regular=20response=20message,=20but?= =?UTF-8?q?=20we=20need=20new=20translations=20for=20that.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/command/defaults/TimingsCommand.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/command/defaults/TimingsCommand.php b/src/command/defaults/TimingsCommand.php index 60b4564b8..4eea19eb7 100644 --- a/src/command/defaults/TimingsCommand.php +++ b/src/command/defaults/TimingsCommand.php @@ -167,7 +167,7 @@ class TimingsCommand extends VanillaCommand{ Command::broadcastCommandMessage($sender, KnownTranslationFactory::pocketmine_command_timings_timingsRead( "https://" . $host . "/?id=" . $response["id"])); }else{ - $sender->getServer()->getLogger()->debug("Invalid response from timings server: " . $result->getBody()); + $sender->getServer()->getLogger()->debug("Invalid response from timings server (" . $result->getCode() . "): " . $result->getBody()); Command::broadcastCommandMessage($sender, KnownTranslationFactory::pocketmine_command_timings_pasteError()); } } From e48a4aaa551e7a61a9664846c3e5a6492fefbf6d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 14 Apr 2023 16:00:22 +0100 Subject: [PATCH 03/13] World: fixed chunk ticking not being disabled by setting chunk ticking radius to 0 I can't believe I missed this ... --- src/world/World.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/world/World.php b/src/world/World.php index 31e0ba897..607da30cb 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -507,7 +507,7 @@ class World implements ChunkManager{ $this->time = $this->provider->getWorldData()->getTime(); $cfg = $this->server->getConfigGroup(); - $this->chunkTickRadius = min($this->server->getViewDistance(), max(1, $cfg->getPropertyInt("chunk-ticking.tick-radius", 4))); + $this->chunkTickRadius = min($this->server->getViewDistance(), max(0, $cfg->getPropertyInt("chunk-ticking.tick-radius", 4))); if($cfg->getPropertyInt("chunk-ticking.per-tick", 40) <= 0){ //TODO: this needs l10n $this->logger->warning("\"chunk-ticking.per-tick\" setting is deprecated, but you've used it to disable chunk ticking. Set \"chunk-ticking.tick-radius\" to 0 in \"pocketmine.yml\" instead."); From ab0c444823f5cf98f4c58604944c15fec0d24a2f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 14 Apr 2023 16:01:24 +0100 Subject: [PATCH 04/13] Player: fixed ticking chunks not being re-registered if they never left the view distance closes #5699 --- src/player/Player.php | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/player/Player.php b/src/player/Player.php index 8b871bf3e..11e7ba3b0 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -894,6 +894,31 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ } } + /** + * @param true[] $oldTickingChunks + * @param true[] $newTickingChunks + * + * @phpstan-param array $oldTickingChunks + * @phpstan-param array $newTickingChunks + */ + private function updateTickingChunkRegistrations(array $oldTickingChunks, array $newTickingChunks) : void{ + $world = $this->getWorld(); + foreach($oldTickingChunks as $hash => $_){ + if(!isset($newTickingChunks[$hash]) && !isset($this->loadQueue[$hash])){ + //we are (probably) still using this chunk, but it's no longer within ticking range + World::getXZ($hash, $tickingChunkX, $tickingChunkZ); + $world->unregisterTickingChunk($this->chunkTicker, $tickingChunkX, $tickingChunkZ); + } + } + foreach($newTickingChunks as $hash => $_){ + if(!isset($oldTickingChunks[$hash]) && !isset($this->loadQueue[$hash])){ + //we were already using this chunk, but it is now within ticking range + World::getXZ($hash, $tickingChunkX, $tickingChunkZ); + $world->registerTickingChunk($this->chunkTicker, $tickingChunkX, $tickingChunkZ); + } + } + } + /** * Calculates which new chunks this player needs to use, and which currently-used chunks it needs to stop using. * This is based on factors including the player's current render radius and current position. @@ -930,15 +955,10 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ World::getXZ($index, $X, $Z); $this->unloadChunk($X, $Z); } - foreach($this->tickingChunks as $hash => $_){ - //any chunks we encounter here are still used by the player, but may no longer be within ticking range - if(!isset($tickingChunks[$hash]) && !isset($newOrder[$hash])){ - World::getXZ($hash, $tickingChunkX, $tickingChunkZ); - $world->unregisterTickingChunk($this->chunkTicker, $tickingChunkX, $tickingChunkZ); - } - } $this->loadQueue = $newOrder; + + $this->updateTickingChunkRegistrations($this->tickingChunks, $tickingChunks); $this->tickingChunks = $tickingChunks; if(count($this->loadQueue) > 0 || count($unloadChunks) > 0){ From 692e1253c68f3aaa50e00a5a8deae74d253db791 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 14 Apr 2023 16:02:17 +0100 Subject: [PATCH 05/13] Fixed AABB height for farmland and grass paths (fixed in 1.19.50) --- src/block/Farmland.php | 2 +- src/block/GrassPath.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/block/Farmland.php b/src/block/Farmland.php index 57392300f..04f2e80b8 100644 --- a/src/block/Farmland.php +++ b/src/block/Farmland.php @@ -64,7 +64,7 @@ class Farmland extends Transparent{ * @return AxisAlignedBB[] */ protected function recalculateCollisionBoxes() : array{ - return [AxisAlignedBB::one()]; //TODO: this should be trimmed at the top by 1/16, but MCPE currently treats them as a full block (https://bugs.mojang.com/browse/MCPE-12109) + return [AxisAlignedBB::one()->trim(Facing::UP, 1 / 16)]; } public function onNearbyBlockChange() : void{ diff --git a/src/block/GrassPath.php b/src/block/GrassPath.php index 7cbb873ef..5b11bd374 100644 --- a/src/block/GrassPath.php +++ b/src/block/GrassPath.php @@ -33,7 +33,7 @@ class GrassPath extends Transparent{ * @return AxisAlignedBB[] */ protected function recalculateCollisionBoxes() : array{ - return [AxisAlignedBB::one()]; //TODO: this should be trimmed at the top by 1/16, but MCPE currently treats them as a full block (https://bugs.mojang.com/browse/MCPE-12109) + return [AxisAlignedBB::one()->trim(Facing::UP, 1 / 16)]; } public function onNearbyBlockChange() : void{ From 5a29d07021bb4c1b9c037d60f1ef681d7c7b9ccf Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 14 Apr 2023 16:47:43 +0100 Subject: [PATCH 06/13] Release 4.19.1 --- changelogs/4.19.md | 11 +++++++++++ src/VersionInfo.php | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/changelogs/4.19.md b/changelogs/4.19.md index 9befb4e0b..a64a4011c 100644 --- a/changelogs/4.19.md +++ b/changelogs/4.19.md @@ -75,3 +75,14 @@ It works similarly to the `ChunkLoader` system, in that chunks will be ticked as - The following API methods have been added: - `public World->registerTickingChunk(ChunkTicker $ticker, int $chunkX, int $chunkZ) : void` - registers a chunk to be ticked by the given `ChunkTicker` - `public World->unregisterTickingChunk(ChunkTicker $ticker, int $chunkX, int $chunkZ) : void` - unregisters a chunk from being ticked by the given `ChunkTicker` + +# 4.19.1 +Released 14th April 2023. + +## Fixes +- Fixed inventory rollbacks when spreading items in ender chests. +- Fixed inventory rollbacks when shift-clicking to craft and the outputs would have been split across multiple inventory slots. +- Fixed incorrect spawn terrain generation for newly created worlds. +- Fixed `chunk-ticking.tick-radius` not disabling chunk ticking when set to `0`. +- Fixed chunks not being ticked if they previously left a player's simulation distance without leaving their view distance. +- Fixed height of collision boxes for Grass Path and Farmland blocks. diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 50ef8c377..bc50c984c 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -32,7 +32,7 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; public const BASE_VERSION = "4.19.1"; - public const IS_DEVELOPMENT_BUILD = true; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "stable"; private function __construct(){ From 3dd1ce2d02497db8882c1652e79fbbfea07c03e0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 14 Apr 2023 16:47:46 +0100 Subject: [PATCH 07/13] 4.19.2 is next --- src/VersionInfo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index bc50c984c..765628d13 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "4.19.1"; - public const IS_DEVELOPMENT_BUILD = false; + public const BASE_VERSION = "4.19.2"; + public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "stable"; private function __construct(){ From 7aeedd8220970147f3ee6476a17ee411686e5540 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 14 Apr 2023 17:32:56 +0100 Subject: [PATCH 08/13] Timings: fixed every player getting its own timings we need a more consistent way to deal with this --- src/timings/Timings.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/timings/Timings.php b/src/timings/Timings.php index 9342c81be..220764399 100644 --- a/src/timings/Timings.php +++ b/src/timings/Timings.php @@ -256,10 +256,11 @@ abstract class Timings{ if(!isset(self::$entityTypeTimingMap[$entityType])){ //the timings viewer calculates average player count by looking at this timer, so we need to ensure it has //a name it can identify. However, we also want to make it obvious if this is a custom Player class. + $displayName = $entityType; if($entity instanceof Player && $reflect->getName() !== Player::class){ - $entityType = "Player (" . $reflect->getName() . ")"; + $displayName = "Player (" . $reflect->getName() . ")"; } - self::$entityTypeTimingMap[$entityType] = new TimingsHandler("Entity Tick - " . $entityType, self::$tickEntity, group: self::GROUP_BREAKDOWN); + self::$entityTypeTimingMap[$entityType] = new TimingsHandler("Entity Tick - " . $displayName, self::$tickEntity, group: self::GROUP_BREAKDOWN); } return self::$entityTypeTimingMap[$entityType]; From bf7975da5736ed612fc8282976774b23d7b268b3 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 14 Apr 2023 18:22:35 +0100 Subject: [PATCH 09/13] Timings: use class to index packet timings, not IDs on multi version servers, the same packet may have different IDs, or different packets might use the same ID. In these cases, we don't want the timings to get split up or erroneously reused. --- src/timings/Timings.php | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/timings/Timings.php b/src/timings/Timings.php index 220764399..70c202c9e 100644 --- a/src/timings/Timings.php +++ b/src/timings/Timings.php @@ -276,17 +276,15 @@ abstract class Timings{ } public static function getReceiveDataPacketTimings(ServerboundPacket $pk) : TimingsHandler{ - $pid = $pk->pid(); - if(!isset(self::$packetReceiveTimingMap[$pid])){ - self::$packetReceiveTimingMap[$pid] = new TimingsHandler("Receive - " . $pk->getName(), self::$playerNetworkReceive, group: self::GROUP_BREAKDOWN); + if(!isset(self::$packetReceiveTimingMap[$pk::class])){ + self::$packetReceiveTimingMap[$pk::class] = new TimingsHandler("Receive - " . $pk->getName(), self::$playerNetworkReceive, group: self::GROUP_BREAKDOWN); } - return self::$packetReceiveTimingMap[$pid]; + return self::$packetReceiveTimingMap[$pk::class]; } public static function getDecodeDataPacketTimings(ServerboundPacket $pk) : TimingsHandler{ - $pid = $pk->pid(); - return self::$packetDecodeTimingMap[$pid] ??= new TimingsHandler( + return self::$packetDecodeTimingMap[$pk::class] ??= new TimingsHandler( "Decode - " . $pk->getName(), self::getReceiveDataPacketTimings($pk), group: self::GROUP_BREAKDOWN @@ -294,8 +292,7 @@ abstract class Timings{ } public static function getHandleDataPacketTimings(ServerboundPacket $pk) : TimingsHandler{ - $pid = $pk->pid(); - return self::$packetHandleTimingMap[$pid] ??= new TimingsHandler( + return self::$packetHandleTimingMap[$pk::class] ??= new TimingsHandler( "Handler - " . $pk->getName(), self::getReceiveDataPacketTimings($pk), group: self::GROUP_BREAKDOWN @@ -303,8 +300,7 @@ abstract class Timings{ } public static function getEncodeDataPacketTimings(ClientboundPacket $pk) : TimingsHandler{ - $pid = $pk->pid(); - return self::$packetEncodeTimingMap[$pid] ??= new TimingsHandler( + return self::$packetEncodeTimingMap[$pk::class] ??= new TimingsHandler( "Encode - " . $pk->getName(), self::getSendDataPacketTimings($pk), group: self::GROUP_BREAKDOWN @@ -312,12 +308,11 @@ abstract class Timings{ } public static function getSendDataPacketTimings(ClientboundPacket $pk) : TimingsHandler{ - $pid = $pk->pid(); - if(!isset(self::$packetSendTimingMap[$pid])){ - self::$packetSendTimingMap[$pid] = new TimingsHandler("Send - " . $pk->getName(), self::$playerNetworkSend, group: self::GROUP_BREAKDOWN); + if(!isset(self::$packetSendTimingMap[$pk::class])){ + self::$packetSendTimingMap[$pk::class] = new TimingsHandler("Send - " . $pk->getName(), self::$playerNetworkSend, group: self::GROUP_BREAKDOWN); } - return self::$packetSendTimingMap[$pid]; + return self::$packetSendTimingMap[$pk::class]; } public static function getEventTimings(Event $event) : TimingsHandler{ From 6c6f686f8eee873cb7219ed109bbbf3b4701be70 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 14 Apr 2023 18:24:53 +0100 Subject: [PATCH 10/13] Timings: be more intelligent about shortening timer names non-pocketmine classes may reuse the names of pocketmine core classes. We don't want timers to get erroneously reused in this case. --- src/timings/Timings.php | 48 ++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/src/timings/Timings.php b/src/timings/Timings.php index 70c202c9e..a400a73b4 100644 --- a/src/timings/Timings.php +++ b/src/timings/Timings.php @@ -250,29 +250,42 @@ abstract class Timings{ return self::$pluginTaskTimingMap[$name]; } + /** + * @phpstan-template T of object + * @phpstan-param class-string $class + */ + private static function shortenCoreClassName(string $class, string $prefix) : string{ + if(str_starts_with($class, $prefix)){ + return (new \ReflectionClass($class))->getShortName(); + } + return $class; + } + public static function getEntityTimings(Entity $entity) : TimingsHandler{ - $reflect = new \ReflectionClass($entity); - $entityType = $reflect->getShortName(); - if(!isset(self::$entityTypeTimingMap[$entityType])){ - //the timings viewer calculates average player count by looking at this timer, so we need to ensure it has - //a name it can identify. However, we also want to make it obvious if this is a custom Player class. - $displayName = $entityType; - if($entity instanceof Player && $reflect->getName() !== Player::class){ - $displayName = "Player (" . $reflect->getName() . ")"; + if(!isset(self::$entityTypeTimingMap[$entity::class])){ + if($entity instanceof Player){ + //the timings viewer calculates average player count by looking at this timer, so we need to ensure it has + //a name it can identify. However, we also want to make it obvious if this is a custom Player class. + $displayName = $entity::class !== Player::class ? "Player (" . $entity::class . ")" : "Player"; + }else{ + $displayName = self::shortenCoreClassName($entity::class, "pocketmine\\entity\\"); } - self::$entityTypeTimingMap[$entityType] = new TimingsHandler("Entity Tick - " . $displayName, self::$tickEntity, group: self::GROUP_BREAKDOWN); + self::$entityTypeTimingMap[$entity::class] = new TimingsHandler("Entity Tick - " . $displayName, self::$tickEntity, group: self::GROUP_BREAKDOWN); } - return self::$entityTypeTimingMap[$entityType]; + return self::$entityTypeTimingMap[$entity::class]; } public static function getTileEntityTimings(Tile $tile) : TimingsHandler{ - $tileType = (new \ReflectionClass($tile))->getShortName(); - if(!isset(self::$tileEntityTypeTimingMap[$tileType])){ - self::$tileEntityTypeTimingMap[$tileType] = new TimingsHandler("Block Entity Tick - " . $tileType, self::$tickTileEntity, group: self::GROUP_BREAKDOWN); + if(!isset(self::$tileEntityTypeTimingMap[$tile::class])){ + self::$tileEntityTypeTimingMap[$tile::class] = new TimingsHandler( + "Block Entity Tick - " . self::shortenCoreClassName($tile::class, "pocketmine\\block\\tile\\"), + self::$tickTileEntity, + group: self::GROUP_BREAKDOWN + ); } - return self::$tileEntityTypeTimingMap[$tileType]; + return self::$tileEntityTypeTimingMap[$tile::class]; } public static function getReceiveDataPacketTimings(ServerboundPacket $pk) : TimingsHandler{ @@ -318,12 +331,7 @@ abstract class Timings{ public static function getEventTimings(Event $event) : TimingsHandler{ $eventClass = get_class($event); if(!isset(self::$events[$eventClass])){ - if(str_starts_with($eventClass, "pocketmine\\event\\")){ - $name = (new \ReflectionClass($event))->getShortName(); - }else{ - $name = $eventClass; - } - self::$events[$eventClass] = new TimingsHandler($name, group: "Events"); + self::$events[$eventClass] = new TimingsHandler(self::shortenCoreClassName($eventClass, "pocketmine\\event\\"), group: "Events"); } return self::$events[$eventClass]; From 5ab954b7a04fd265db723a3d367672d2e120d083 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 14 Apr 2023 18:31:57 +0100 Subject: [PATCH 11/13] Update composer dependencies --- composer.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index e84eb6c8c..d92d16d27 100644 --- a/composer.lock +++ b/composer.lock @@ -2365,16 +2365,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.6", + "version": "9.6.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b65d59a059d3004a040c16a82e07bbdf6cfdd115" + "reference": "c993f0d3b0489ffc42ee2fe0bd645af1538a63b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b65d59a059d3004a040c16a82e07bbdf6cfdd115", - "reference": "b65d59a059d3004a040c16a82e07bbdf6cfdd115", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c993f0d3b0489ffc42ee2fe0bd645af1538a63b2", + "reference": "c993f0d3b0489ffc42ee2fe0bd645af1538a63b2", "shasum": "" }, "require": { @@ -2448,7 +2448,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.6" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.7" }, "funding": [ { @@ -2464,7 +2464,7 @@ "type": "tidelift" } ], - "time": "2023-03-27T11:43:46+00:00" + "time": "2023-04-14T08:58:40+00:00" }, { "name": "sebastian/cli-parser", From a534ac759ab1d13c50de8f5728ed28612a6dd019 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 14 Apr 2023 18:43:41 +0100 Subject: [PATCH 12/13] Release 4.19.2 --- changelogs/4.19.md | 8 ++++++++ src/VersionInfo.php | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/changelogs/4.19.md b/changelogs/4.19.md index a64a4011c..b8127b335 100644 --- a/changelogs/4.19.md +++ b/changelogs/4.19.md @@ -86,3 +86,11 @@ Released 14th April 2023. - Fixed `chunk-ticking.tick-radius` not disabling chunk ticking when set to `0`. - Fixed chunks not being ticked if they previously left a player's simulation distance without leaving their view distance. - Fixed height of collision boxes for Grass Path and Farmland blocks. + +# 4.19.2 +Released 14th April 2023. + +## Fixes +- Fixed player timings duplication leading to extremely large timings reports when timings runs for a long time with many players. +- Packet timings are now indexed by class FQN instead of packet ID. This prevents erroneous timer reuse on packet ID reuse (e.g. multi version servers). +- Fixed entity timings being shared by different classes with the same short name. This led to incorrect timings being reported for some entities when custom entities were used. diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 765628d13..573fffa2f 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -32,7 +32,7 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; public const BASE_VERSION = "4.19.2"; - public const IS_DEVELOPMENT_BUILD = true; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "stable"; private function __construct(){ From df0d72bf6146e0f0aeb93b31070e1b589f4d65b8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 14 Apr 2023 18:43:44 +0100 Subject: [PATCH 13/13] 4.19.3 is next --- src/VersionInfo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 573fffa2f..42ead9ee5 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "4.19.2"; - public const IS_DEVELOPMENT_BUILD = false; + public const BASE_VERSION = "4.19.3"; + public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "stable"; private function __construct(){