mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-10-16 19:59:11 +00:00
112 lines
6.9 KiB
Markdown
112 lines
6.9 KiB
Markdown
# 5.34.0
|
|
Released 26th September 2025.
|
|
|
|
This is a minor feature release containing performance improvements, new gameplay features, new API additions and network changes.
|
|
|
|
**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
|
|
- PocketMine-MP now requires and uses [`pmmp/ext-encoding`](https://github.com/pmmp/ext-encoding) version `1.0.0`, a PHP extension designed to significantly improve performance of data encoding and decoding (@dktapps).
|
|
- This first pass only implements support in low-risk areas, such as network protocol and read-only data. Further integration will follow in future minor versions with additional performance improvements.
|
|
- While ext-encoding has been heavily tested, we can't be sure there won't be major issues once it reaches production. Please report any bugs you find on the GitHub issue tracker.
|
|
- New Bedrock OpenID authentication support has been implemented (@dries-c, @dktapps).
|
|
- This system fetches keys from an API provided by Microsoft. Therefore, your server must now have internet access to authenticate players.
|
|
- `/timings paste` now creates private reports by default on `timings.pmmp.io` (@dktapps).
|
|
- Private reports require an access token to view, so your timings reports can no longer be viewed by others just by guessing the ID.
|
|
- If you're using a custom timings host, be sure to update it to get support for this feature.
|
|
- The command will generate a warning in the console if the target timings host doesn't support private reports.
|
|
|
|
## Performance
|
|
- Significantly improved performance of packet encoding and decoding using `ext-encoding` (@dktapps).
|
|
- Unnecessary NBT is now stripped from items before sending them over the network. This significantly improves performance when working with writable books, shulker boxes, etc. (@dktapps).
|
|
- Improved performance of item saving in `ItemSerializer` by avoiding slow `hasNamedTag()` call followed by `getNamedTag()` (both will rebuild the NBT) (@dktapps).
|
|
|
|
## Gameplay
|
|
- Implemented basic Trident functionality (@IvanCraft623).
|
|
- Implemented Firework and Firework Star (@IvanCraft623).
|
|
- Editing the rear side of signs is now supported (@dktapps).
|
|
- Sneaking hitbox height has been adjusted to match vanilla (@Dasciam).
|
|
|
|
## API
|
|
### General
|
|
- `pocketmine/nbt` version `1.2.0` is now used ([changelog](https://github.com/pmmp/NBT/releases/tag/1.2.0)).
|
|
- `pmmp/ext-encoding` version `1.0.0` is now required and used.
|
|
- This can be used as a faster alternative to `BinaryStream` and `Binary` in most use cases. However, please note that its API is very different, and it hasn't been battle-tested yet.
|
|
- A recent JetBrains IDE stub can be found in our [custom stubs repository](https://github.com/pmmp/phpstorm-stubs/blob/fork/encoding/encoding.php).
|
|
|
|
### `pocketmine\block`
|
|
- The following API methods have been added:
|
|
- `public BaseSign->getFaceText(bool $frontFace) : SignText`
|
|
- `public BaseSign->setFaceText(bool $frontFace, SignText $text) : $this`
|
|
- `public BaseSign->updateFaceText(Player $author, bool $frontFace, SignText $text) : bool` - called by the network system when a player edits a sign, triggers `SignChangeEvent` etc.
|
|
- `protected BaseSign->getHitboxCenter() : Vector3` - returns the center of the sign's hitbox, used to decide which face of the sign the player is editing
|
|
- `protected BaseSign->getFacingDegrees() : float` (to become abstract in PM6) - returns the horizontal facing of the sign in degrees, used to decide which face of the sign the player is editing
|
|
- The following API methods have been deprecated:
|
|
- `public BaseSign->getText() : SignText` - use `getFaceText()` instead
|
|
- `public BaseSign->setText(SignText $text) : $this` - use `setFaceText()` instead
|
|
- `public BaseSign->updateText(Player $author, SignText $text) : bool` - use `updateFaceText()` instead
|
|
|
|
### `pocketmine\entity`
|
|
- The following API classes have been added:
|
|
- `NeverSavedWithChunkEntity` - implement this instead of overriding `canSaveWithChunk()` if your entity will never need a save ID
|
|
- Used currently by `Player` and `FireworkRocket`.
|
|
- `animation\FireworkParticlesAnimation`
|
|
- `object\FireworkRocket`
|
|
- `projectile\Trident`
|
|
- The following API methods have been added:
|
|
- `public Living->getSneakOffset() : float` - returns how much the entity's hitbox is shortened and eye height lowered when sneaking (0 by default)
|
|
- `protected Projectile->despawnsOnEntityHit() : bool` - returns `true` by default, overridden by tridents (to be removed in a future major version in favour of cleaner BC-breaking methods)
|
|
|
|
### `pocketmine\event\block`
|
|
- The following API methods have been added:
|
|
- `public SignChangeEvent->isFrontFace() : bool` - returns `true` if the front face of the sign is being edited, `false` for the rear face
|
|
|
|
### `pocketmine\inventory\transaction`
|
|
- `InventoryTransaction` no longer shuffles actions before executing a transaction.
|
|
- This was intended to prevent dependency on weird client behaviour, but it is no longer necessary, as the order is now consistent since the introduction of the `ItemStackRequest` system.
|
|
|
|
### `pocketmine\item`
|
|
- The following API classes have been added:
|
|
- `FireworkRocket`
|
|
- `FireworkRocketExplosion`
|
|
- `FireworkRocketType` (enum)
|
|
- `FireworkStar`
|
|
- `Trident`
|
|
- The following API methods have been added:
|
|
- `VanillaItems::FIREWORK_ROCKET() : FireworkRocket`
|
|
- `VanillaItems::FIREWORK_STAR() : FireworkStar`
|
|
- `VanillaItems::TRIDENT() : Trident`
|
|
|
|
### `pocketmine\player`
|
|
- The following API methods have signature changes:
|
|
- `Player->openSignEditor()` now accepts an optional `bool $frontFace = true` parameter
|
|
|
|
### `pocketmine\world\sound`
|
|
- The following API classes have been added:
|
|
- `FireworkCrackleSound`
|
|
- `FireworkExplosionSound`
|
|
- `FireworkLargeExplosionSound`
|
|
- `FireworkLaunchSound`
|
|
- `TridentHitEntitySound`
|
|
- `TridentHitBlockSound`
|
|
- `TridentThrowSound`
|
|
|
|
## Internals
|
|
- Many low-risk data handling areas have been switched to use `ext-encoding`, including:
|
|
- Bedrock packets
|
|
- Bedrock chunk serialization
|
|
- `FastChunkSerializer` (used for transmitting chunks between threads)
|
|
- GS4 Query
|
|
- Auxiliary read-only data loading in the `pocketmine\data\bedrock` package
|
|
|
|
# 5.34.1
|
|
Released 26th September 2025.
|
|
|
|
## Fixes
|
|
- Player login JSON processing no longer bails out on unexpected extra properties. A warning will now be logged instead (@dktapps).
|
|
- Fixed container drop issues when an ender crystal explosion causes another ender crystal nearby to explode (@dktapps, @kostamax27).
|