forked from NetherGamesMC/PocketMine-MP
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'upstream/stable' into stable
- Loading branch information
Showing
162 changed files
with
2,381 additions
and
1,641 deletions.
There are no files selected for viewing
This file was deleted.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
name: Bug report | ||
description: Report a feature of PocketMine-MP not working as expected | ||
body: | ||
- type: markdown | ||
attributes: | ||
value: | | ||
## Plugin information | ||
> [!IMPORTANT] | ||
> It's strongly recommended to test for bugs without plugins before reporting an issue. | ||
> This helps avoid wasting maintainers' time on bugs that are not actually caused by PocketMine-MP. | ||
> | ||
> If you're not sure whether a plugin might be causing your issue, please seek help on our [Discord](https://discord.gg/bmSAZBG) before writing an issue. | ||
- type: dropdown | ||
attributes: | ||
label: Plugin information | ||
options: | ||
- "I haven't tested without plugins" | ||
- Bug happens without plugins | ||
- Bug only happens with certain plugins (describe below) | ||
validations: | ||
required: true | ||
|
||
- type: markdown | ||
attributes: | ||
value: | | ||
## Bug description | ||
> [!TIP] | ||
> Helpful information to include: | ||
> - Steps to reproduce the issue | ||
> - Error backtraces | ||
> - Crashdumps | ||
> - Plugin code that triggers the issue | ||
> - List of installed plugins (use /plugins) | ||
> [!IMPORTANT] | ||
> **Steps to reproduce are critical to finding the cause of the problem!** | ||
> Without reproducing steps, the issue will probably not be solvable and may be closed. | ||
- type: textarea | ||
attributes: | ||
label: Problem description | ||
description: Describe the problem, and how you encountered it | ||
placeholder: e.g. Steps to reproduce the issue | ||
validations: | ||
required: true | ||
- type: textarea | ||
attributes: | ||
label: Expected behaviour | ||
description: What did you expect to happen? | ||
validations: | ||
required: true | ||
|
||
- type: markdown | ||
attributes: | ||
value: | | ||
## Version, OS and game info | ||
- type: input | ||
attributes: | ||
label: PocketMine-MP version | ||
placeholder: Use the /version command in PocketMine-MP | ||
validations: | ||
required: true | ||
- type: input | ||
attributes: | ||
label: PHP version | ||
placeholder: Use the /version command in PocketMine-MP | ||
validations: | ||
required: true | ||
- type: input | ||
attributes: | ||
label: Server OS | ||
placeholder: Use the /version command in PocketMine-MP | ||
validations: | ||
required: true | ||
- type: input | ||
attributes: | ||
label: Game version (if applicable) | ||
placeholder: e.g. Android, iOS, Windows, Xbox, PS4, Switch | ||
validations: | ||
required: false |
This file was deleted.
Oops, something went wrong.
This file was deleted.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
name: Crash | ||
description: Report a crash in PocketMine-MP (not plugins) | ||
title: Server crashed | ||
body: | ||
- type: markdown | ||
attributes: | ||
value: | | ||
> [!TIP] | ||
> Submit crashdump `.log` files to the [Crash Archive](https://crash.pmmp.io/submit). | ||
> If you can't submit the crashdump to the Crash Archive, paste it on a site like [GitHub Gist](https://gist.github.com) or [Pastebin](https://pastebin.com). | ||
> [!CAUTION] | ||
> DON'T paste the crashdump data directly into an issue. | ||
- type: input | ||
id: crashdump-url | ||
attributes: | ||
label: Link to crashdump | ||
validations: | ||
required: true | ||
|
||
- type: textarea | ||
attributes: | ||
label: Additional comments (optional) | ||
description: Any other information that might help us solve the problem |
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,19 @@ | ||
name: Feature addition, change, or removal | ||
description: Propose adding new features, or changing/removing existing ones | ||
body: | ||
- type: textarea | ||
attributes: | ||
label: Problem description | ||
description: Explain why a change is needed | ||
validations: | ||
required: true | ||
- type: textarea | ||
attributes: | ||
label: Proposed solution | ||
description: Describe what changes you think should be made | ||
validations: | ||
required: true | ||
- type: textarea | ||
attributes: | ||
label: "Alternative solutions or workarounds" | ||
description: "Describe other ways you've explored to achieve your goal" |
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
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
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
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
Oops, something went wrong.