-
-
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.
5.24.0 minor release
- Loading branch information
Showing
147 changed files
with
2,232 additions
and
1,168 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
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,108 @@ | ||
# 5.24.0 | ||
Released 22nd January 2025. | ||
|
||
This is a minor feature release, including new gameplay features, performance improvements, and minor API additions. | ||
|
||
**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. | ||
|
||
## Performance | ||
- PHP garbage collection is now managed by the server, instead of being automatically triggered by PHP. | ||
- The mechanism for GC triggering is designed to mimic PHP's to avoid behavioural changes. Only the place it's triggered from should be significantly different. | ||
- This change also avoids unnecessary GCs during object-heavy operations, such as encoding `CraftingDataPacket`. As such, performance during server join should see an improvement. | ||
- Timings is now able to directly measure the impact of GC. Previously, GC would show up as random spikes under random timers, skewing timing results. | ||
- `ChunkCache` now uses `string` for completed caches directly instead of keeping them wrapped in `CompressBatchPromise`s. This reduces memory usage, improves performance, and reduces GC workload. | ||
|
||
## Configuration | ||
- The following settings have been removed from `pocketmine.yml` and will no longer have any effect: | ||
- `memory.garbage-collection.collect-async-worker` (now always `true`) | ||
- `memory.garbage-collection.low-memory-trigger` (now always `true`) | ||
- `memory.max-chunks.trigger-chunk-collect` (now always `true`) | ||
- `memory.world-caches.disable-chunk-cache` (now always `true`) | ||
- `memory.world-caches.low-memory-trigger` (now always `true`) | ||
|
||
## Gameplay | ||
- Added the following new blocks: | ||
- All types of pale oak wood, and leaves | ||
- Resin | ||
- Resin Bricks, Slabs, Stairs, and Walls | ||
- Resin Clump | ||
- Chiseled Resin Bricks | ||
- Some blocks have had their tool tier requirements adjusted to match latest Bedrock updates. | ||
- Added the following new items: | ||
- Resin Brick | ||
- Music Disc - Creator | ||
- Music Disc - Creator (Music Box) | ||
- Music Disc - Precipice | ||
- Music Disc - Relic | ||
|
||
## API | ||
### General | ||
- Many places had their PHPDoc improved to address issues highlighted by PHPStan 2.x. This may cause new, previously unreported issues to be reported in plugins using PHPStan. | ||
|
||
### `pocketmine` | ||
- The following methods have been deprecated: | ||
- `MemoryManager->canUseChunkCache()` | ||
- `MemoryManager::dumpMemory()` - relocated to `MemoryDump` class | ||
|
||
### `pocketmine\item` | ||
- The following new enum cases have been added: | ||
- `RecordType::DISK_CREATOR` | ||
- `RecordType::DISK_CREATOR_MUSIC_BOX` | ||
- `RecordType::DISK_PRECIPICE` | ||
- `RecordType::DISK_RELIC` | ||
|
||
### `pocketmine\player` | ||
- The following new methods have been added: | ||
- `public Player->getFlightSpeedMultiplier() : float` - a base multiplier for player's flight speed | ||
- `public Player->setFlightSpeedMultiplier(float $flightSpeedMultiplier) : void` - sets the player's flight speed multiplier | ||
- The following new constants have been added: | ||
- `Player::DEFAULT_FLIGHT_SPEED_MULTIPLIER` | ||
|
||
### `pocketmine\utils` | ||
- The following new methods have been added: | ||
- `public static TextFormat::javaToBedrock(string $string) : string` - removes unsupported Java Edition format codes to prevent them being incorrectly displayed on Bedrock | ||
- The following methods have behavioural changes: | ||
- `TextFormat::toHTML()` now converts `§m` to redstone red (instead of strikethrough), and `§n` to copper orange (instead of underline). This is because the codes previously used for `STRIKETHROUGH` and `UNDERLINE` conflict with the new material codes introduced by Minecraft Bedrock. | ||
- `Terminal::toANSI()` now converts `§m` to redstone red (instead of strikethrough), and `§n` to copper orange (instead of underline), as above. However, underline and strikethrough can still be used on the terminal using `Terminal::$FORMAT_UNDERLINE` and `Terminal::$FORMAT_STRIKETHROUGH` respectively. | ||
- The following new constants have been added: | ||
- `TextFormat::MATERIAL_QUARTZ` | ||
- `TextFormat::MATERIAL_IRON` | ||
- `TextFormat::MATERIAL_NETHERITE` | ||
- `TextFormat::MATERIAL_REDSTONE` | ||
- `TextFormat::MATERIAL_COPPER` | ||
- `TextFormat::MATERIAL_GOLD` | ||
- `TextFormat::MATERIAL_EMERALD` | ||
- `TextFormat::MATERIAL_DIAMOND` | ||
- `TextFormat::MATERIAL_LAPIS` | ||
- `TextFormat::MATERIAL_AMETHYST` | ||
- The following constants have been deprecated: | ||
- `TextFormat::STRIKETHROUGH` | ||
- `TextFormat::UNDERLINE` | ||
- The following static properties have been added: | ||
- `Terminal::$COLOR_MATERIAL_QUARTZ` | ||
- `Terminal::$COLOR_MATERIAL_IRON` | ||
- `Terminal::$COLOR_MATERIAL_NETHERITE` | ||
- `Terminal::$COLOR_MATERIAL_REDSTONE` | ||
- `Terminal::$COLOR_MATERIAL_COPPER` | ||
- `Terminal::$COLOR_MATERIAL_GOLD` | ||
- `Terminal::$COLOR_MATERIAL_EMERALD` | ||
- `Terminal::$COLOR_MATERIAL_DIAMOND` | ||
- `Terminal::$COLOR_MATERIAL_LAPIS` | ||
- `Terminal::$COLOR_MATERIAL_AMETHYST` | ||
|
||
## Tools | ||
- Fixed some UI issues in `tools/convert-world.php` | ||
|
||
## Internals | ||
- Block cache in `World` is now size-limited. This prevents memory exhaustion when plugins call `getBlock()` many thousands of times with cache misses. | ||
- `RakLibServer` now disables PHP GC. As RakLib doesn't generate any unmanaged cycles, GC is just a waste of CPU time in this context. | ||
- `MemoryManager` now has the responsibility for triggering cycle GC. It's checked every tick, but GC won't take place unless the GC threshold is exceeded, similar to PHP. | ||
- This mechanism could probably do with alterations to better suit PocketMine-MP, but it was chosen to mimic PHP's own GC to minimize behavioural changes for now. | ||
- `AsyncTask` now triggers cycle GC after `onRun()` completes. As with `MemoryManager`, this is based on a threshold designed to mimic PHP's own behaviour. | ||
- `FormatConverter` now performs world provider GC periodically. This is not needed with current active providers, but was found to be a problem while developing custom providers. | ||
- Various internal adjustments were made to avoid returning incorrectly-keyed arrays in the code. These changes shouldn't affect anything as the arrays should have been properly ordered anyway. | ||
- Many places that previously used `==` and `!=` have been updated to use strict variants. This kind of change needs to be done carefully to avoid breaking `int|float` comparisons. |
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
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
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
Oops, something went wrong.