Commit Graph

464 Commits

Author SHA1 Message Date
Asfadavy Aulia A.
14114f6eaf Implement Cactus Flower (#6838) 2025-10-14 14:19:57 +01:00
Asfadavy Aulia A.
06a75759bb Implement Copper variant of existing blocks (#6839) 2025-10-13 15:39:50 +01:00
Dylan K. Taylor
c09e07c44a Merge branch 'stable' of github.com:pmmp/PocketMine-MP into minor-next 2025-10-03 19:22:14 +01:00
Dylan T.
bc17ee7489 Bedrock 1.21.111 (#6824)
Co-authored-by: Dries C <15795262+dries-c@users.noreply.github.com>
2025-10-03 16:09:26 +01:00
IvanCraft623
93653a64f3 Implement Lingering potion & Area Effect Cloud (#5276)
Co-authored-by: Dylan T. <dktapps@pmmp.io>
2025-09-27 02:23:45 +01:00
Dylan T.
3336cda34a First pass ext-encoding support (high-level network I/O and read-only data) (#6799)
This implements ext-encoding only in high-level network I/O (only BedrockProtocol and stuff implemented in PM) and read-only data.
This should net a significant performance advantage while being low-risk in the case of critical issues with the extension. Any problems affecting protocol won't do permanent damage while being fairly easy to debug.

Next passes will integrate ext-encoding versions of RakLib, RakLibIpc and NBT, as well as generally using ext-encoding for writeable data.
2025-09-25 17:32:38 +01:00
IvanCraft623
ebeee29a88 Implement firework rocket & firework star (#5455)
Co-authored-by: Dylan T <dktapps@pmmp.io>
Co-authored-by: ipad54 <63200545+ipad54@users.noreply.github.com>
2025-09-20 18:04:05 +01:00
Dylan K. Taylor
bbcc0c08b5 Updated NBT library to get new ListTag handling features 2025-09-19 23:40:04 +01:00
IvanCraft623
6d2d23a210 Implement Trident (#4547)
Co-authored-by: Dylan T. <dktapps@pmmp.io>
2025-09-18 19:00:55 +01:00
Dylan K. Taylor
7d50c9d146 Merge branch 'stable' of github.com:pmmp/PocketMine-MP into minor-next 2025-09-17 01:38:53 +01:00
Dylan K. Taylor
a056af1617 Update composer dev dependencies 2025-09-15 22:41:02 +01:00
Dylan K. Taylor
c854f2c765 ItemSerializer: avoid slow NBT check
hasNamedTag() rebuilds the NBT from item properties to decide if there's any NBT.
This is a waste of resources when we then fetch the tag to encode anyway.
2025-09-10 20:06:35 +01:00
Dylan K. Taylor
beaedc3627 Tidy up in block properties aisle 2025-08-29 13:07:09 +01:00
Dylan K. Taylor
0be15a7403 Rename MultiFacing -> MultiAnyFacing
to match the trait name
2025-08-29 12:33:04 +01:00
Dylan K. Taylor
00d6171463 Implement hanging signs 2025-08-24 20:07:59 +01:00
Dylan K. Taylor
17ecf11a1b Remove stupid thing PhpStorm keeps doing 2025-08-24 16:49:49 +01:00
Dylan K. Taylor
93e33dad8e tidy CS 2025-08-24 16:42:05 +01:00
Dylan K. Taylor
4cdf064344 VanillaBlockMappings: Use some model mappings
this way there are some minor symmetry benefits, and the only asymmetric parts are the code that selects which model to use.

it also has the added benefit of removing some duplicated code paths (e.g. now it's possible to get rid of readUnitEnum() and such).
2025-08-24 16:37:42 +01:00
Dylan K. Taylor
5bf0cbec87 ... 2025-08-24 15:39:23 +01:00
Dylan K. Taylor
ef53676a59 Fix unit tests 2025-08-24 15:38:07 +01:00
Dylan K. Taylor
8f9478e82f Illager banners finally working
closes #2951
2025-08-24 15:31:10 +01:00
Dylan T.
7c521b456e Unify block serializers (#6769)
This has several advantages:

    Easier to implement new blocks (one less file to modify)
    Easier to adjust serialization of existing blocks
    Guaranteed consistency between serializers and deserializers
    Potentially, exposes more metadata for programmatic analysis, instead of having everything baked inside opaque Closures

There are some exceptions which still use the old approach: big dripleaf, cauldrons, mushroom stems, and pitcher crops. These all have multiple PM block types for a single ID, with relatively complex logic to select which to use. These weren't worth the effort to unify due to their small number. I may revisit this in the future, but I already spent a lot of brainpower on it.
2025-08-24 14:12:18 +01:00
Dylan K. Taylor
547544b5b4 Merge branch 'stable' of github.com:pmmp/PocketMine-MP into minor-next 2025-08-17 15:25:57 +01:00
Dylan K. Taylor
eea4f40138 BlockStateToObjectDeserializer: Remove duplicated CHISELED_COPPER registration
allowing overriding of serializers by the same method as first registration was a mistake...
2025-08-17 15:24:40 +01:00
Dylan K. Taylor
431790a319 Additional specialisation for colored blocks
this reduces boilerplate even further
2025-08-15 22:24:27 +01:00
Dylan K. Taylor
c0fad353a2 missed one
sadly glazed_terracotta had to be special
2025-08-15 22:09:54 +01:00
Dylan K. Taylor
e89523ce66 First look at flattened ID specialisation for block serializers
in the future we should be able to unify these, similarly to simple mappings.
unifying blocks with states will, however, be considerably more work.

only color benefits from this so far
2025-08-15 22:02:12 +01:00
ShockedPlot7560
1e8612cfc8 BlockObjectToStateSerializer: Avoid unnecessary Writer and Closure (#6759)
---------

Co-authored-by: Dylan K. Taylor <dktapps@pmmp.io>
2025-08-15 20:39:13 +01:00
pmmp-admin-bot[bot]
959fd7e5e6 Merge 'stable' into 'minor-next'
Automatic merge performed by: https://github.com/pmmp/RestrictedActions/actions/runs/16791576698
2025-08-07 00:03:34 +00:00
Dries C
173b685b02 Bedrock 1.21.100 (#6760)
---------

Co-authored-by: Dylan T. <dktapps@pmmp.io>
2025-08-06 16:41:44 +01:00
Dylan K. Taylor
5139800e13 BlockStateUpgrader: All but removed dependency on BlockStateData 2025-08-03 15:47:12 +01:00
Dylan T.
50e15db9ac Prepare 5.31.0 release (#6752) 2025-07-08 13:41:59 +01:00
Dylan K. Taylor
a662510cca Merge remote-tracking branch 'origin/stable' into minor-next 2025-06-18 19:56:02 +01:00
Dries C
9c71f4fc1c Assemble 1.21.90 (#6736) 2025-06-18 01:15:00 +01:00
Adam
bf33a625c9 Implemented Respawn Anchor (#6646)
PlayerRespawnAnchorUseEvent is also added with options SET_SPAWN and EXPLODE, which allows plugins to customise the outcome of using the anchor in PM, which currently doesn't support dimensions. The event is also cancellable.
2025-05-27 21:57:28 +01:00
Dylan K. Taylor
acf4341d71 always the CS... 2025-05-17 13:35:55 +01:00
Dylan K. Taylor
84bb9d2ab4 Consolidate Bedrock data version info
this ensures we don't have to go into a bunch of randomly scattered files to update version numbers.
2025-05-17 13:33:42 +01:00
pmmp-admin-bot[bot]
e2e16a4ec5 Merge 'stable' into 'minor-next'
Automatic merge performed by: https://github.com/pmmp/RestrictedActions/actions/runs/14931383427
2025-05-09 14:38:28 +00:00
Dries C
5e830c7320 Protocol changes for 1.21.80 (#6687)
* Bedrock 1.21.80 support

* Update bedrock-data

* Add required tags to models

* Fixed biome data loading

* Support newest world format
apparently I messed up the blockstate data version last time around... it hasn't changed since 1.21.60

* always CS has to complain...

* Sync with release versions

* Ready 5.28.0 release

* this might help...

---------

Co-authored-by: Dylan T. <dktapps@pmmp.io>
2025-05-09 15:29:05 +01:00
Dylan K. Taylor
ad6f7dfedb World: verify saveability of blocks, entities and tiles at entry points
I want to do the same for items, but items are going to be a pain in the ass.
For items there are multiple possible entry points and all of them will need to be checked:
- dropped items
- inventory contents
- lecterns
- item frames

I don't see a good way to deal with all these. We can't check for registration in the constructor
because we need to fully construct the item in order to register it.

Blocks are also a potential issue in other areas, but setBlock() is definitely the biggest offender.
2025-04-20 19:48:28 +01:00
Dries C
687112f4cd 5.27.0, Bedrock 1.21.70 support (#6665)
Co-authored-by: Dylan K. Taylor <dktapps@pmmp.io>
2025-03-27 15:48:19 +00:00
Dylan K. Taylor
c2f8e9365b BlockStateToObjectDeserializer: check that the returned state is actually registered
if not, this will cause random crashes in core code, which assumes that state IDs found on runtime chunk memory are valid and registered.

this problem exists in other places too, and probably requires a rethink of how we're dealing with this, but for now, this will do as a band-aid.
2025-03-15 20:53:49 +00:00
Dylan K. Taylor
7cfaf04b87 stfu 2025-03-14 16:10:56 +00:00
Dylan K. Taylor
d9e0e51e14 Reduce code duplication in copper block serialization handling 2025-03-14 16:08:06 +00:00
pmmp-admin-bot[bot]
19425e35ea Merge 'stable' into 'minor-next'
Automatic merge performed by: https://github.com/pmmp/RestrictedActions/actions/runs/13488997706
2025-02-24 01:26:36 +00:00
Dylan K. Taylor
3df2bdb879 Fixed door facing
this was broken in 1.21.60 update.

should've known better to expect a blockstate upgrade to mean a
blockstate fix...
2025-02-24 01:04:52 +00:00
Dylan K. Taylor
fd04894a7b Merge branch 'stable' of github.com:pmmp/PocketMine-MP into minor-next 2025-02-16 23:18:34 +00:00
Dylan K. Taylor
d2d6a59c72 ItemDeserializer: fix doc comment typo 2025-02-16 22:52:11 +00:00
Dylan K. Taylor
788ee9a008 Allow overriding deserializers for block and item IDs
there's no technical reason not to support this, since it doesn't violate any assumptions and the type returned is a base anyway.

this enables implementing stuff like snow cauldrons in a plugin, which previously would require reflection due to the minecraft:cauldron deserializer being registered already.
it also enables overriding IDs to map to custom blocks, which might be useful for overriding some functionality (although this is inadvisable - and won't alter the usage of stuff like VanillaBlocks::WHATEVER()).

we do *not* allow overriding serializers, since type IDs are expected to be paired to block implementations, and allowing them to be reassigned could lead to crashes if the new class was incorrect. So the correct approach for overriding nether portals would be to create a custom type ID as if you were adding a fully custom item. This will also allow other plugins to distinguish between your implementation and the built-in one.
2025-02-16 22:49:40 +00:00
Dylan K. Taylor
03e4b53ac4 BedrockDataFiles: added constants for folders as well as files
we probably should have it recurse too, but this is an easy win.
2025-02-16 20:57:16 +00:00