# 5.10.0 Released 14th December 2023. **For Minecraft: Bedrock Edition 1.20.50** This is a minor feature release, including new gameplay features and minor performance improvements. **Plugin compatibility:** Plugins for previous 5.x versions will run unchanged on this release, unless they use internal APIs, reflection, or packages like the `pocketmine\network\mcpe` or `pocketmine\data` namespace. Do not update plugin minimum API versions unless you need new features added in this release. **WARNING: If your plugin uses the `pocketmine\network\mcpe` namespace, you're not shielded by API change constraints.** Consider using the `mcpe-protocol` directive in `plugin.yml` as a constraint if you're using packets directly. ## General - PHP 8.2 is now used by default. PHP 8.1 is still supported, but will be removed in a future 5.x release. - Improved timings reports by removing `Breakdown` timings group. This group serves no purpose with tree timings and made for confusing reading. ## Performance - Improved performance of `Block::encodeFullState()` in most conditions. This in turn improves performance of `World::setBlock()` and `World::setBlockAt()`. - Improved network compression performance by avoiding unnecessary object allocations. - Timings now report time spent in individual `Snooze` handlers, making it easier to debug performance issues. ## Gameplay ### Blocks - Implemented crop growth speed modifiers. - The following things now positively affect crop growth speed: - Being planted on or being adjacent to farmland (hydrated farmland offers a larger benefit than dry farmland) - Potential light level of at least 9 - Being planted in rows with space between them (or a different type of crop) - The following things now negatively affect crop growth speed: - Improper arrangement (e.g. the same crop on all sides) - Insufficient light level (below 9) - Poorly arranged crops will grow slower in this version. Past versions behaved as if crops were always planted in ideal conditions. - Crops planted in ideal conditions will grow at the same speed as before. ### Items - Added the following new items: - All types of Smithing Template - Pitcher Pod is now correctly registered. In previous versions, it was mapped to the Pitcher Crop block, causing incorrect name display in commands. ## Internals - Cleaned up various getter usages where direct property access is possible. - Avoided unnecessary repeated getter calls in some loops. - `NetworkSession` may now track `string` instead of `CompressBatchPromise` when a batch was synchronously compressed. This significantly reduces object allocations and improves performance. - `NetworkSession` now sends less information to clients on login validation failure. This avoids leaking potentially sensitive error information to clients. - Clients can correlate their disconnects with server-side logs using the `Error ID` shown on the disconnect screen.