**For Minecraft: Bedrock Edition 1.19.80** ### Note about API versions Plugins which don't touch the `pocketmine\network\mcpe` namespace are compatible with any previous 4.x.y version will also run on these releases and do not need API bumps. Plugin developers should **only** update their required API to this version if you need the changes in this build. **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. ### Interim releases If you're upgrading from 4.17.x directly to 4.20.x, please also read the following changelogs, as the interim releases contain important changes: - [4.18.0](https://github.com/pmmp/PocketMine-MP/blob/4.20.0/changelogs/4.18.md#4180) - major performance improvements, internal network changes, minor API additions - [4.19.0](https://github.com/pmmp/PocketMine-MP/blob/4.20.0/changelogs/4.19.md#4190) - minor performance improvements, improved timings system, minor API additions # 4.20.0 Released 26th April 2023. ## General - Added support for Minecraft: Bedrock Edition 1.19.80. - Removed support for older versions. ## Fixes - Fixed packet processing error when attempting to use a stonecutter. - Fixed armor slots containing ghost items when cancelling right-click to equip armor. - Fixed crash in `HandlerList->getListenersByPriority()` when no listeners are registered at the given priority. ## API ### `pocketmine\block` - The following API methods have been added: - `public BaseSign->getEditorEntityRuntimeId() : int` - returns the entity runtime ID of the player currently editing this sign, or `null` if none - `public BaseSign->setEditorEntityRuntimeId(?int $editorEntityRuntimeId) : $this` - sets the entity runtime ID of the player currently editing this sign ### `pocketmine\player` - The following API methods have been added: - `public Player->openSignEditor(Vector3 $position) : void` - opens the client-side sign editor GUI for the given position # 4.20.1 Released 27th April 2023. ## Fixes - Fixed server crash when firing a bow while holding arrows in the offhand slot. ## Internals - `ItemStackContainerIdTranslator::translate()` now requires an additional `int $slotId` parameter and returns `array{int, int}` (translated window ID, translated slot ID) to be used with `InventoryManager->locateWindowAndSlot()`. - `InventoryManager->locateWindowAndSlot()` now checks if the translated slot actually exists in the requested inventory, and returns `null` if not. Previously, it would return potentially invalid slot IDs without checking them, potentially leading to crashes. # 4.20.2 Released 4th May 2023. ## Fixes - Fixed all types of wooden logs appearing as oak in the inventory. - Fixed a performance issue in `BaseInventory->canAddItem()` (missing `continue` causing useless logic to run). # 4.20.3 Released 6th May 2023. ## Improvements - Reduced memory usage of `RuntimeBlockMapping` from 25 MB to 9 MB. Since every thread has its own copy of the block map, this saves a substantial amount of memory. ## Fixes - Fixed players falling through blocks in spectator mode. - Fixed timings reports getting bloated by prolific usage of `PluginManager->registerEvent()`. - This was caused by creating a new timings handler for each call, regardless of whether a timer already existed for the given event and callback. - Fixed `Full Server Tick` and other records being missing from timings reports. - This was caused by timings handler depth not getting reset when timings was disabled and later re-enabled. # 4.20.4 Released 6th May 2023. ## Fixes - Fixed players being forced into flight mode in every game mode. - Moral of the story: do not assume anything in Mojang internals does what its name suggests... # 4.20.5 Released 30th May 2023. ## Fixes - Fixed server crash due to a bug in upstream dependency [`netresearch/jsonmapper`](https://github.com/cweiske/JsonMapper).