# 5.12.0 Released 28th February 2024 **For Minecraft: Bedrock Edition 1.20.60** This is a minor feature release, with a few new features and 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 - Added a `--version` command-line option to display the server version and exit. ## Tools - Added `tools/generate-biome-ids.php` to generate `pocketmine\data\bedrock\BiomeIds`. - Fixed ordering of property values generated by `tools/generate-block-palette-spec.php`. ## API ### `pocketmine\block` - The following new classes have been added: - `utils\LightableTrait` - used by blocks with `getLit()` and `setLit()` methods - The following methods have been deprecated: - `Block->isSolid()` - this method returns confusing results which don't match expectations and no one really knows what it actually means - `CocoaBlock` now extends `Flowable` to match vanilla Minecraft behaviour. ### `pocketmine\plugin` - `PluginManager->registerEvent()` now throws an exception when given a generator function for the event handler. - `PluginManager->registerEvents()` now throws an exception if any of the detected event handlers are generator functions. Use `@notHandler` to have the function ignored if intended. ### `pocketmine\promise` - The following methods have been added: - `public static Promise::all(list $promises) : Promise` - returns a promise that is resolved once all given promises are resolved, or is rejected if any of the promises are rejected. ### `pocketmine\scheduler` - The following methods have been deprecated: - `AsyncWorker->getFromThreadStore()` - use class static properties for thread-local storage - `AsyncWorker->removeFromThreadStore()` - `AsyncWorker->saveToThreadStore()` ## Documentation - Improved documentation of various methods in `Block`. ## Gameplay - The following new items have been added: - Name Tag ## Internals - Removed specialization of shutdown logic for `Thread` vs `Worker` (no specialization is required). - Authentication system no longer accepts logins signed with the old Mojang root public key. - ID to enum mappings in `pocketmine\data` now use a new `match` convention to allow static analysis to ensure that all enum cases are handled. - Updated version of `pocketmine/bedrock-protocol` allows avoiding decoding of some itemstack data from the client in most cases, improving performance. # 5.12.1 Released 13th March 2024. ## Fixes - Fixed `Player Network Receive - Decompression` timings not being stopped correctly when receiving an uncompressed packet. ## Internals - Removed hardcoded batch packet size limit. This was already covered by other limits anyway.