Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
70fb9bb
ChorusPlant: fixed recalculateCollisionBoxes() depending on the world
dktapps Jan 27, 2025
e5a783c
Merge 'stable' into 'minor-next'
pmmp-admin-bot[bot] Jan 28, 2025
88937f1
Merge 'stable' into 'minor-next'
pmmp-admin-bot[bot] Feb 2, 2025
0a9a45a
Improve block break progress
GameParrot Feb 2, 2025
21ccd90
ChunkCache: parameterize dimension ID
dktapps Feb 2, 2025
70368ea
Merge branch 'stable' into minor-next
dktapps Feb 2, 2025
03f98ee
New version of NBT for performance improvements
dktapps Feb 2, 2025
ca4debb
Merge 'stable' into 'minor-next'
pmmp-admin-bot[bot] Feb 4, 2025
9b3b452
Optimise collision box checks by caching some basic info (#6606)
dktapps Feb 6, 2025
e29aa2f
Added resin material color (#6622)
ipad54 Feb 11, 2025
2670e81
Merge branch 'stable' of github.com:pmmp/PocketMine-MP into minor-next
dktapps Feb 12, 2025
246c177
InventoryAction: avoid throwaway Item clones
dktapps Feb 16, 2025
788ee9a
Allow overriding deserializers for block and item IDs
dktapps Feb 16, 2025
d2d6a59
ItemDeserializer: fix doc comment typo
dktapps Feb 16, 2025
fd04894
Merge branch 'stable' of github.com:pmmp/PocketMine-MP into minor-next
dktapps Feb 16, 2025
51cf681
World: fixed overflow checks for getCollisionBlocks(), closes #6630
dktapps Feb 16, 2025
9744bd7
CraftingManager: make a less dumb hash function
dktapps Feb 17, 2025
67272f8
Merge branch 'stable' of github.com:pmmp/PocketMine-MP into minor-next
dktapps Feb 18, 2025
c876253
tools/blockstate-upgrade-schema-utils: added dump-table command
dktapps Feb 18, 2025
a08b06d
also sort table by ID
dktapps Feb 18, 2025
19425e3
Merge 'stable' into 'minor-next'
pmmp-admin-bot[bot] Feb 24, 2025
e2f5e3e
Update composer dependencies
dktapps Feb 26, 2025
afac178
Merge branch 'stable' into minor-next
dktapps Feb 26, 2025
9382e6e
Merge 'stable' into 'minor-next'
pmmp-admin-bot[bot] Mar 2, 2025
09f0ce4
Merge 'stable' into 'minor-next'
pmmp-admin-bot[bot] Mar 5, 2025
aad2bce
readme: call out Easy tasks issues
dktapps Mar 9, 2025
2291546
phpstan: added rule to ban new $class
dktapps Mar 9, 2025
95284bc
change error identifier
dktapps Mar 9, 2025
7af5eb3
crafting: validate array inputs
dktapps Mar 9, 2025
ac7b5b3
Merge 'stable' into 'minor-next'
pmmp-admin-bot[bot] Mar 9, 2025
afc4a3c
Fixed entity position offset not being included in AddActorPacket (#6…
leolee3914 Mar 9, 2025
a655309
Merge 'stable' into 'minor-next'
pmmp-admin-bot[bot] Mar 10, 2025
00df508
Update bug-report.yml
dktapps Mar 12, 2025
73a4b07
actions: tidy support response message
dktapps Mar 12, 2025
7ae90dd
Merge 'stable' into 'minor-next'
pmmp-admin-bot[bot] Mar 13, 2025
341c7a0
CopperMaterial: fixed missing @return $this docs
dktapps Mar 14, 2025
069ecf0
Merge branch 'stable' into minor-next
dktapps Mar 14, 2025
d9e0e51
Reduce code duplication in copper block serialization handling
dktapps Mar 14, 2025
7cfaf04
stfu
dktapps Mar 14, 2025
09acbfa
dependabot: ignore phpstan/phpstan updates
dktapps Mar 15, 2025
802e373
Merge 'stable' into 'minor-next'
pmmp-admin-bot[bot] Mar 15, 2025
e03c586
GarbageCollectorManager: promote debug message to info
dktapps Mar 15, 2025
8b57e90
:japanese_goblin:
dktapps Mar 15, 2025
463be36
Update composer dependencies
dktapps Mar 15, 2025
4407e58
Update composer dependencies (minor-next)
dktapps Mar 15, 2025
4ef21fa
Merge branch 'stable' into minor-next
dktapps Mar 15, 2025
c2f8e93
BlockStateToObjectDeserializer: check that the returned state is actu…
dktapps Mar 15, 2025
1c6a4bd
Bump pocketmine/locale-data in the production-patch-updates group (#6…
dependabot[bot] Mar 17, 2025
de26ebd
Prepare 5.26.0 release
dktapps Mar 22, 2025
f123df5
changelog: use more accurate terminology
dktapps Mar 22, 2025
f416cb8
Merge pull request #6658 from pmmp/minor-next-release
dktapps Mar 22, 2025
c80a4d5
5.26.1 is next
pmmp-admin-bot[bot] Mar 22, 2025
c9e8560
Bump phpstan/phpstan-strict-rules in the development-patch-updates gr…
dependabot[bot] Mar 24, 2025
687112f
5.27.0, Bedrock 1.21.70 support (#6665)
dries-c Mar 27, 2025
e88b81a
5.27.1 is next
pmmp-admin-bot[bot] Mar 27, 2025
84ba06c
added back api
KanadeBlue Mar 29, 2025
89d8b56
d
KanadeBlue Mar 29, 2025
c6b76cb
Merge branch 'stable' into Patch-3
KanadeBlue Mar 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ body:
attributes:
value: |
## Version, OS and game info
> [!WARNING]
> "Latest" is not a valid version.
> Failure to fill these fields with valid information may result in your issue being closed.

- type: input
attributes:
Expand Down
4 changes: 4 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ updates:
update-types:
- "version-update:semver-major"
- "version-update:semver-minor"

#since we lock this to exact versions, it causes conflicts with minor-next & major-next in composer.lock
#better to just test updates to this locally anyway since almost every version breaks something
- dependency-name: phpstan/phpstan
groups:
production-patch-updates:
dependency-type: production
Expand Down
5 changes: 1 addition & 4 deletions .github/workflows/support.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,7 @@ jobs:

- Check our [Documentation](https://doc.pmmp.io) to see if you can find answers there

- Ask the community on our [Discord server](https://discord.gg/bmSAZBG) or our [Forums](https://forums.pmmp.io)


[Docs](https://pmmp.rtfd.io) | [Discord](https://discord.gg/bmSAZBG) | [Forums](https://forums.pmmp.io)
- Ask the community on our [Discord server](https://discord.gg/bmSAZBG)

close-issue: true
lock-issue: false
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ PocketMine-MP accepts community contributions! The following resources will be u
* [Building and running PocketMine-MP from source](BUILDING.md)
* [Contributing Guidelines](CONTRIBUTING.md)

New here? Check out [issues with the "Easy task" label](https://github.com/pmmp/PocketMine-MP/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22Easy%20task%22) for things you could work to familiarise yourself with the codebase.

## Donate
PocketMine-MP is free, but it requires a lot of time and effort from unpaid volunteers to develop. Donations enable us to keep delivering support for new versions and adding features your players love.

Expand Down
71 changes: 71 additions & 0 deletions changelogs/5.26.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# 5.26.0
Released 22nd March 2025.

This is a minor feature release focused on performance 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.

## Performance
- Significantly improved performance of entity movement. Load testing with item entities showed a 3x increase in the number of entities supported without lag.
- Significantly improved performance of on-ground checks for player movement. This still needs further work, but optimisations implemented in this version should improve performance substantially.
- Updated `pocketmine/nbt` dependency with performance improvements to `TAG_Compound` and `TAG_List` comparison. This should improve performance of inventory-related actions.
- `InventoryTransaction` now avoids useless item clones when processing transactions, which should improve performance of inventory-related actions.

## Dependencies
- `pocketmine/bedrock-protocol` has been updated to `36.2.0`, which adds new functions to access some packet fields.
- `pocketmine/nbt` has been updated to `1.1.0`, which improves performance when comparing NBT object trees.

## Gameplay
- Block breaking animation speed now takes into account the following: jumping, being in water, haste, mining fatigue

## Tools
- `blockstate-upgrade-schema-utils.php` now has a new `dump-table` command, which turns a `.bin` palette table file into human-readable text for debugging.

## API
### `pocketmine\block`
- The following methods have been added:
- `public RuntimeBlockStateRegistry->hasStateId(int $stateId) : bool` - checks whether the given state ID is registered

### `pocketmine\crafting`
- The following methods have been deprecated:
- `CraftingManager::sort()` - this was implicitly internal anyway

### `pocketmine\utils`
- The following constants have been added:
- `TextFormat::MATERIAL_RESIN`
- The following static properties have been added:
- `Terminal::$COLOR_MATERIAL_RESIN`

### `pocketmine\data\bedrock\block`
- `BlockStateToObjectDeserializer` now permits overriding **deserializers** for Bedrock IDs. This may be useful to implement custom state handling, or to implement missing block variants (such as snow cauldron).
- This was originally prohibited since 5.0.0. However, there is no technical reason to disallow overriding **deserializers**.
- Overriding **serializers** is still **not permitted**. Reusing type IDs doesn't make any sense and would break internal design contracts.
- If you want to make a custom version of a vanilla block, create a custom type ID for it, exactly as you would for a regular custom block.
- The following methods have been added:
- `public BlockStateToObjectDeserializer->getDeserializerForId(string $id) : ?(\Closure(BlockStateReader) : Block)`

### `pocketmine\data\bedrock\item`
- `ItemDeserializer` now permits overriding **deserializers** for Bedrock IDs. As above, this may be useful to implement custom data handling, or to implement missing variants of existing items.
- This was originally prohibited since 5.0.0. However, there is no technical reason to disallow overriding **deserializers**.
- Overriding **serializers** is still **not permitted**. Reusing type IDs doesn't make any sense and would break internal design contracts.
- As above, if you want to make a custom version of a vanilla item, create a custom type ID for it, exactly as you would for a regular custom item.
- The following methods have been added:
- `public ItemDeserializer->getDeserializerForId(string $id) : ?(\Closure(SavedItemData) : Item)`

## Internals
- `new $class` is now banned on new internals code by a PHPStan rule. Closures or factory objects should be used instead for greater flexibility and better static analysis.
- `CraftingManager` now uses a more stable hash function for recipe output filtering.
- `ChunkCache` now accepts `int $dimensionId` in the constructor. This may be useful for plugins which implement the nether.
- `RuntimeBlockStateRegistry` now precomputes basic collision info about known states for fast paths.
- This permits specialization for common shapes like cubes and collisionless blocks, which allows skipping complex logic in entity movement calculation. This vastly improves performance.
- Any block whose class overrides `readStateFromWorld()` or `getModelPositionOffset()` will *not* be optimised.
- `Block->recalculateCollisionBoxes()` now has a hard requirement not to depend on anything other than available properties. It must not use `World` or its position.
- This change was problematic for `ChorusPlant`, which used nearby blocks to calculate its collision boxes.
- Blocks which need nearby blocks should override `readStateFromWorld()` and set dynamic state properties, similar to fences.
- This design flaw will be corrected with a major change to `Block` internals currently in planning for a future major version.
- `Block->getCollisionBoxes()` may not be called at all during gameplay for blocks with shapes determined to be simple, like cubes and collisionless blocks.
- `BlockStateToObjectDeserializer` now checks if the returned blockstate is registered in `RuntimeBlockStateRegistry` to promote earlier error detection (instead of crashing in random code paths).
18 changes: 18 additions & 0 deletions changelogs/5.27.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# 5.27.0
Released 27th March 2025.

This is a support release for Minecraft: Bedrock Edition 1.21.70.

**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.

## Interim releases
If you're upgrading from 5.25.x directly to 5.27.0, please also read the following changelogs, as the interim releases contain important changes:
- [5.26.0](https://github.com/pmmp/PocketMine-MP/blob/5.26.0/changelogs/5.26.md#5260) - Performance improvements and other internal improvements

## General
- Aded support for Minecraft: Bedrock Edition 1.21.70.
- Removed support for earlier versions.
8 changes: 4 additions & 4 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,25 +34,25 @@
"adhocore/json-comment": "~1.2.0",
"netresearch/jsonmapper": "~v5.0.0",
"pocketmine/bedrock-block-upgrade-schema": "~5.1.0+bedrock-1.21.60",
"pocketmine/bedrock-data": "~4.0.0+bedrock-1.21.60",
"pocketmine/bedrock-data": "~4.1.0+bedrock-1.21.70",
"pocketmine/bedrock-item-upgrade-schema": "~1.14.0+bedrock-1.21.50",
"pocketmine/bedrock-protocol": "~36.0.0+bedrock-1.21.60",
"pocketmine/bedrock-protocol": "~37.0.0+bedrock-1.21.70",
"pocketmine/binaryutils": "^0.2.1",
"pocketmine/callback-validator": "^1.0.2",
"pocketmine/color": "^0.3.0",
"pocketmine/errorhandler": "^0.7.0",
"pocketmine/locale-data": "~2.24.0",
"pocketmine/log": "^0.4.0",
"pocketmine/math": "~1.0.0",
"pocketmine/nbt": "~1.0.0",
"pocketmine/nbt": "~1.1.0",
"pocketmine/raklib": "~1.1.0",
"pocketmine/raklib-ipc": "~1.0.0",
"pocketmine/snooze": "^0.5.0",
"ramsey/uuid": "~4.7.0",
"symfony/filesystem": "~6.4.0"
},
"require-dev": {
"phpstan/phpstan": "2.1.6",
"phpstan/phpstan": "2.1.8",
"phpstan/phpstan-phpunit": "^2.0.0",
"phpstan/phpstan-strict-rules": "^2.0.0",
"phpunit/phpunit": "^10.5.24"
Expand Down
Loading