For Minecraft: Bedrock Edition 1.19.80
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.
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 - major performance improvements, internal network changes, minor API additions
- 4.19.0 - minor performance improvements, improved timings system, minor API additions
Released 26th April 2023.
- Added support for Minecraft: Bedrock Edition 1.19.80.
- Removed support for older versions.
- 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.
- The following API methods have been added:
public BaseSign->getEditorEntityRuntimeId() : int
- returns the entity runtime ID of the player currently editing this sign, ornull
if nonepublic BaseSign->setEditorEntityRuntimeId(?int $editorEntityRuntimeId) : $this
- sets the entity runtime ID of the player currently editing this sign
- The following API methods have been added:
public Player->openSignEditor(Vector3 $position) : void
- opens the client-side sign editor GUI for the given position
Released 27th April 2023.
- Fixed server crash when firing a bow while holding arrows in the offhand slot.
ItemStackContainerIdTranslator::translate()
now requires an additionalint $slotId
parameter and returnsarray{int, int}
(translated window ID, translated slot ID) to be used withInventoryManager->locateWindowAndSlot()
.InventoryManager->locateWindowAndSlot()
now checks if the translated slot actually exists in the requested inventory, and returnsnull
if not. Previously, it would return potentially invalid slot IDs without checking them, potentially leading to crashes.