-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
90 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
# 5.14.0 | ||
Released 5th April 2024. | ||
|
||
**For Minecraft: Bedrock Edition 1.20.70** | ||
|
||
This is a minor feature release, including performance improvements, minor gameplay features, new API features, and various internal 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 support for a `--no-log-file` command-line option, which disables the creation of a `server.log` file. | ||
- **Use this with caution.** If you don't have another mechanism for collecting logs (e.g. Docker), this may make debugging harder. | ||
- Added support for automatic `server.log` rotation. When the `server.log` exceeds 32 MB, it will be renamed and moved to the `log_archive` folder in the server's data directory. | ||
- Files in the `log_archive` folder can be safely modified or deleted without stopping the server. | ||
- We suggest a cron job or similar to manage old log files (e.g. deleting or compressing them). | ||
- Added a new cache mechanism for `PocketMine-MP.phar`. This has several advantages: | ||
- Caches are now reused by all threads - this significantly reduces `/tmp` usage (previously every thread generated its own cache, wasting lots of space) | ||
- Dead cache files are automatically cleaned up by new servers - this means that a server crash loop won't flood `/tmp` anymore | ||
- `/status` now reports a more accurate number of threads on Windows. | ||
- Large resource packs are now able to be properly downloaded from the server. | ||
- Larger player skin sizes are now accepted by the server. | ||
- Improved logging from world providers to reduce spam when chunks contain invalid data. | ||
- Added more error logging for Anvil, PMAnvil and MCRegion worlds. | ||
- PHP deprecation warnings no longer cause the server to crash. This should make it easier for server owners to update to newer PHP versions. | ||
|
||
## Performance | ||
- Improved world loading performance. This was achieved through a combination of changes: | ||
- Improvements to `BlockStateUpgrader` to avoid unnecessary work | ||
- Improvements to `BlockStateUpgradeSchema` to clean up stupid code | ||
- Improvements to `BlockStateReader` unused state handling | ||
- Optimizations to `RegistryTrait` (see below) | ||
- Improved performance of `RegistryTrait::__callStatic()` accessor by introducing a fast-path optimization. Ensure that you access registries with the correct function name case to benefit from this. | ||
- This improves the performance of `VanillaBlocks::WHATEVER()`, `VanillaItems`, etc. | ||
|
||
## Tools | ||
- `tools/generate-blockstate-upgrade-schema.php` now supports generating schemas using `flattenedValueRemaps` (described in [BlockStateUpgradeSchema](https://github.com/pmmp/BedrockBlockUpgradeSchema/releases/tag/4.0.0)). | ||
|
||
## Gameplay | ||
- Added sounds for armour equipping and unequipping. | ||
- Added sound for picking berries from a sweet berry bush. | ||
|
||
## API | ||
### `pocketmine\block\utils` | ||
- The following enum cases have been added: | ||
- `BannerPatternType::GLOBE` | ||
- `BannerPatternType::PIGLIN` | ||
|
||
### `pocketmine\event\player` | ||
- The following classes have been added: | ||
- `PlayerResourcePackOfferEvent` - called before the server tells a connecting client which resource packs are available to download - allows customizing the pack list and other options | ||
|
||
### `pocketmine\item` | ||
- The following API methods have been added: | ||
- `public ArmorMaterial->getEquipSound() : ?\pocketmine\world\Sound` - returns the sound to play when this armour is equipped or unequipped | ||
- The following API methods have signature changes: | ||
- `ArmorMaterial->__construct()` now accepts an optional `?Sound $equipSound` parameter | ||
|
||
### `pocketmine\utils` | ||
- The following API methods have signature changes: | ||
- `MainLogger->__construct()` now accepts `null` for the `$logFile` parameter - this disables the creation of a logger thread and log file | ||
- `MainLogger->__construct()` now accepts an optional `?string $logArchiveDir` parameter. If set, this enables log archiving in the specified directory when the current log file exceeds 32 MB. | ||
|
||
## Dependencies | ||
- Now uses [`pocketmine/bedrock-block-upgrade-schema` version 4.0.0](https://github.com/pmmp/BedrockBlockUpgradeSchema/releases/tag/4.0.0). | ||
- Now uses [`pmmp/ext-pmmpthread` version 6.1.0](https://github.com/pmmp/ext-pmmpthread/releases/tag/6.1.0). | ||
- Now uses [`pocketmine/errorhandler` version 0.7.0](https://github.com/pmmp/ErrorHandler/releases/tag/0.7.0). | ||
- Now uses [`pocketmine/raklib` version 1.1.0](https://github.com/pmmp/RakLib/releases/tag/1.1.0). | ||
- Now uses [`pocketmine/raklib-ipc` version 1.0.0](https://github.com/pmmp/RakLibIpc/releases/tag/1.0.0). | ||
|
||
## Internals | ||
- (Re)Added support for RakLib packet ACK receipts. This was used to throttle resource pack sending and prevent network overloading. | ||
- Added `NetworkSession->sendDataPacketWithReceipt()` to make use of this feature. | ||
- `PacketSender` now requires an additional `?int $receiptId` parameter. | ||
- `ResourcePackPacketHandler` now uses `sendDataPacketWithReceipt()` to send resource packs, and delays sending the next chunk until the current one is acknowledged. | ||
- `ResourcePackPacketHandler` now accepts resource pack info directly in the constructor, instead of `ResourcePackManager`. This eases the implementation of `PlayerResourcePackOfferEvent`. | ||
- Increased `ZlibCompressor::DEFAULT_MAX_DECOMPRESSION_SIZE` to 8 MB (previously 2 MB). While this weakens server security, it appears to be necessary to deal with extremely bloated Persona skins. | ||
- Increased max split packet parts accepted by `RakLib` to 512 (previously 128). Again, this is necessary to deal with extremely bloated Persona skins. | ||
- Added a new cache mechanism for `PocketMine-MP.phar`. | ||
- `ext-phar`'s default mechanism is extremely wasteful (generating a separate cache file per thread), and doesn't clean up after itself. | ||
- The new cache mechanism is shared between all threads, and automatically cleans up stale caches. | ||
- The phar stub (`build/server-phar-stub.php`) now converts the phar contents into a `.tar`, and decompresses all the files into `$TMPDIR/PocketMine-MP-phar-cache.<random>/`. | ||
- `phar://` URIs still work with this system, but `new Phar(__FILE__)` must be replaced by `new PharData(__FILE__)` within PocketMine-MP core code. | ||
- Backtraces from a `phar`'d server will now point to a location in the extracted phar cache, rather than the phar itself. | ||
- `block_factory_consistency_check` test (actually for `RuntimeBlockStateRegistry`) now stores less data, and is no longer affected by changes to internal state ID construction. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters