diff --git a/changelogs/4.25.md b/changelogs/4.25.md new file mode 100644 index 00000000000..032c09ce8fe --- /dev/null +++ b/changelogs/4.25.md @@ -0,0 +1,16 @@ +# 4.25.0 +Released 26th October 2023. + +**For Minecraft: Bedrock Edition 1.20.40** + +This is a support release for Minecraft: Bedrock Edition 1.20.40. + +**Plugin compatibility:** Plugins for previous 4.x versions will run unchanged on this release, unless they use internal APIs, reflection, or packages like the `pocketmine\network\mcpe` 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 Minecraft: Bedrock Edition 1.20.40. +- Removed support for older versions. diff --git a/changelogs/5.7.md b/changelogs/5.7.md new file mode 100644 index 00000000000..65830c22040 --- /dev/null +++ b/changelogs/5.7.md @@ -0,0 +1,20 @@ +# 5.7.0 +Released 26th October 2023. + +**For Minecraft: Bedrock Edition 1.20.40** + +This is a support release for Minecraft: Bedrock Edition 1.20.40. + +**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 Minecraft: Bedrock Edition 1.20.40. +- Removed support for older versions. + +## Fixes +- Fixed `cartography_table`, `smithing_table`, `stripped_cherry_log` and `stripped_cherry_wood` not working in `StringToItemParser`. +- Fixed `Promise::onCompletion()` always calling the reject handler if the promise was already completed. diff --git a/composer.json b/composer.json index 6b73c15554e..1775f4e4dd4 100644 --- a/composer.json +++ b/composer.json @@ -33,10 +33,10 @@ "composer-runtime-api": "^2.0", "adhocore/json-comment": "~1.2.0", "pocketmine/netresearch-jsonmapper": "~v4.2.1000", - "pocketmine/bedrock-block-upgrade-schema": "~3.2.0+bedrock-1.20.30", - "pocketmine/bedrock-data": "~2.5.0+bedrock-1.20.30", + "pocketmine/bedrock-block-upgrade-schema": "~3.3.0+bedrock-1.20.40", + "pocketmine/bedrock-data": "~2.6.0+bedrock-1.20.40", "pocketmine/bedrock-item-upgrade-schema": "~1.5.0+bedrock-1.20.30", - "pocketmine/bedrock-protocol": "~24.0.0+bedrock-1.20.30", + "pocketmine/bedrock-protocol": "~25.0.0+bedrock-1.20.40", "pocketmine/binaryutils": "^0.2.1", "pocketmine/callback-validator": "^1.0.2", "pocketmine/color": "^0.3.0", diff --git a/composer.lock b/composer.lock index 92f4d028531..cdb41d563ed 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6c48ad06b67c3aa3890f004b197d17bc", + "content-hash": "feefde772166966ee8065e613fe9a56e", "packages": [ { "name": "adhocore/json-comment", @@ -122,16 +122,16 @@ }, { "name": "pocketmine/bedrock-block-upgrade-schema", - "version": "3.2.0", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/pmmp/BedrockBlockUpgradeSchema.git", - "reference": "874e1c0c9b7b620744d08b59c78354fe9f028dfa" + "reference": "ee46b9367af262bbddd9f122d4d5b5b495b892e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/874e1c0c9b7b620744d08b59c78354fe9f028dfa", - "reference": "874e1c0c9b7b620744d08b59c78354fe9f028dfa", + "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/ee46b9367af262bbddd9f122d4d5b5b495b892e7", + "reference": "ee46b9367af262bbddd9f122d4d5b5b495b892e7", "shasum": "" }, "type": "library", @@ -142,22 +142,22 @@ "description": "Schemas describing how to upgrade saved block data in older Minecraft: Bedrock Edition world saves", "support": { "issues": "https://github.com/pmmp/BedrockBlockUpgradeSchema/issues", - "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/3.2.0" + "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/3.3.0" }, - "time": "2023-09-20T17:03:43+00:00" + "time": "2023-10-16T16:11:02+00:00" }, { "name": "pocketmine/bedrock-data", - "version": "2.5.1+bedrock-1.20.30", + "version": "2.6.0+bedrock-1.20.40", "source": { "type": "git", "url": "https://github.com/pmmp/BedrockData.git", - "reference": "8f9d96047a731c37b18b28c2bfcdfa2705bb303f" + "reference": "37e780d28b470230bda3579b04cb50d406e3fbe6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/8f9d96047a731c37b18b28c2bfcdfa2705bb303f", - "reference": "8f9d96047a731c37b18b28c2bfcdfa2705bb303f", + "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/37e780d28b470230bda3579b04cb50d406e3fbe6", + "reference": "37e780d28b470230bda3579b04cb50d406e3fbe6", "shasum": "" }, "type": "library", @@ -168,9 +168,9 @@ "description": "Blobs of data generated from Minecraft: Bedrock Edition, used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/BedrockData/issues", - "source": "https://github.com/pmmp/BedrockData/tree/2.5.1+bedrock-1.20.30" + "source": "https://github.com/pmmp/BedrockData/tree/bedrock-1.20.40" }, - "time": "2023-09-27T11:40:15+00:00" + "time": "2023-10-26T10:39:13+00:00" }, { "name": "pocketmine/bedrock-item-upgrade-schema", @@ -200,16 +200,16 @@ }, { "name": "pocketmine/bedrock-protocol", - "version": "24.0.0+bedrock-1.20.30", + "version": "25.0.0+bedrock-1.20.40", "source": { "type": "git", "url": "https://github.com/pmmp/BedrockProtocol.git", - "reference": "38a516274aa6641b0da38011af35a5587fc87895" + "reference": "69c36c96f6835e93fc278071aa2bb9829abe5cf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockProtocol/zipball/38a516274aa6641b0da38011af35a5587fc87895", - "reference": "38a516274aa6641b0da38011af35a5587fc87895", + "url": "https://api.github.com/repos/pmmp/BedrockProtocol/zipball/69c36c96f6835e93fc278071aa2bb9829abe5cf8", + "reference": "69c36c96f6835e93fc278071aa2bb9829abe5cf8", "shasum": "" }, "require": { @@ -241,9 +241,9 @@ "description": "An implementation of the Minecraft: Bedrock Edition protocol in PHP", "support": { "issues": "https://github.com/pmmp/BedrockProtocol/issues", - "source": "https://github.com/pmmp/BedrockProtocol/tree/24.0.0+bedrock-1.20.30" + "source": "https://github.com/pmmp/BedrockProtocol/tree/25.0.0+bedrock-1.20.40" }, - "time": "2023-09-20T16:57:53+00:00" + "time": "2023-10-26T11:03:10+00:00" }, { "name": "pocketmine/binaryutils", @@ -2964,5 +2964,5 @@ "platform-overrides": { "php": "8.1.0" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 9088094a247..e6cae5059ce 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,7 +31,7 @@ final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "5.6.2"; + public const BASE_VERSION = "5.7.1"; public const IS_DEVELOPMENT_BUILD = true; public const BUILD_CHANNEL = "stable"; diff --git a/src/data/bedrock/block/BlockStateData.php b/src/data/bedrock/block/BlockStateData.php index c5712cf6c7a..54f13ba5602 100644 --- a/src/data/bedrock/block/BlockStateData.php +++ b/src/data/bedrock/block/BlockStateData.php @@ -42,8 +42,8 @@ final class BlockStateData{ public const CURRENT_VERSION = (1 << 24) | //major (20 << 16) | //minor - (30 << 8) | //patch - (50); //revision + (40 << 8) | //patch + (3); //revision public const TAG_NAME = "name"; public const TAG_STATES = "states"; diff --git a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php index cf3535097ec..0f64fb17b2b 100644 --- a/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php +++ b/src/data/bedrock/block/convert/BlockObjectToStateSerializer.php @@ -1113,7 +1113,7 @@ private function registerSerializers() : void{ }); $this->map(Blocks::CHEST(), function(Chest $block) : Writer{ return Writer::create(Ids::CHEST) - ->writeHorizontalFacing($block->getFacing()); + ->writeCardinalHorizontalFacing($block->getFacing()); }); $this->map(Blocks::CHISELED_QUARTZ(), fn(SimplePillar $block) => Helper::encodeQuartz(StringValues::CHISEL_TYPE_CHISELED, $block->getAxis())); $this->map(Blocks::CHISELED_RED_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::RED_SANDSTONE, StringValues::SAND_STONE_TYPE_HEIROGLYPHS)); @@ -1274,7 +1274,7 @@ private function registerSerializers() : void{ $this->map(Blocks::ELEMENT_CONSTRUCTOR(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_ELEMENT_CONSTRUCTOR, new Writer(Ids::CHEMISTRY_TABLE))); $this->map(Blocks::ENDER_CHEST(), function(EnderChest $block) : Writer{ return Writer::create(Ids::ENDER_CHEST) - ->writeHorizontalFacing($block->getFacing()); + ->writeCardinalHorizontalFacing($block->getFacing()); }); $this->map(Blocks::END_PORTAL_FRAME(), function(EndPortalFrame $block) : Writer{ return Writer::create(Ids::END_PORTAL_FRAME) @@ -1606,7 +1606,7 @@ private function registerSerializers() : void{ }); $this->map(Blocks::STONE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_STONE)); $this->map(Blocks::STONECUTTER(), fn(Stonecutter $block) => Writer::create(Ids::STONECUTTER_BLOCK) - ->writeHorizontalFacing($block->getFacing())); + ->writeCardinalHorizontalFacing($block->getFacing())); $this->map(Blocks::STONE_BRICKS(), fn() => Helper::encodeStoneBricks(StringValues::STONE_BRICK_TYPE_DEFAULT)); $this->map(Blocks::STONE_BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_STONE_BRICK)); $this->mapStairs(Blocks::STONE_BRICK_STAIRS(), Ids::STONE_BRICK_STAIRS); @@ -1637,7 +1637,7 @@ private function registerSerializers() : void{ }); $this->map(Blocks::TRAPPED_CHEST(), function(TrappedChest $block) : Writer{ return Writer::create(Ids::TRAPPED_CHEST) - ->writeHorizontalFacing($block->getFacing()); + ->writeCardinalHorizontalFacing($block->getFacing()); }); $this->map(Blocks::TRIPWIRE(), function(Tripwire $block) : Writer{ return Writer::create(Ids::TRIP_WIRE) diff --git a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php index ce39c2739c5..e54ce95eebe 100644 --- a/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php +++ b/src/data/bedrock/block/convert/BlockStateToObjectDeserializer.php @@ -994,7 +994,7 @@ private function registerDeserializers() : void{ }); $this->map(Ids::CHEST, function(Reader $in) : Block{ return Blocks::CHEST() - ->setFacing($in->readHorizontalFacing()); + ->setFacing($in->readCardinalHorizontalFacing()); }); $this->map(Ids::CHORUS_FLOWER, function(Reader $in) : Block{ return Blocks::CHORUS_FLOWER() @@ -1095,7 +1095,7 @@ private function registerDeserializers() : void{ }); $this->map(Ids::ENDER_CHEST, function(Reader $in) : Block{ return Blocks::ENDER_CHEST() - ->setFacing($in->readHorizontalFacing()); + ->setFacing($in->readCardinalHorizontalFacing()); }); $this->map(Ids::EXPOSED_COPPER, fn() => Helper::decodeCopper(Blocks::COPPER(), CopperOxidation::EXPOSED())); $this->map(Ids::EXPOSED_CUT_COPPER, fn() => Helper::decodeCopper(Blocks::CUT_COPPER(), CopperOxidation::EXPOSED())); @@ -1504,7 +1504,7 @@ private function registerDeserializers() : void{ }); $this->map(Ids::STONECUTTER_BLOCK, function(Reader $in) : Block{ return Blocks::STONECUTTER() - ->setFacing($in->readHorizontalFacing()); + ->setFacing($in->readCardinalHorizontalFacing()); }); $this->map(Ids::SWEET_BERRY_BUSH, function(Reader $in) : Block{ //berry bush only wants 0-3, but it can be bigger in MCPE due to misuse of GROWTH state which goes up to 7 @@ -1530,7 +1530,7 @@ private function registerDeserializers() : void{ }); $this->map(Ids::TRAPPED_CHEST, function(Reader $in) : Block{ return Blocks::TRAPPED_CHEST() - ->setFacing($in->readHorizontalFacing()); + ->setFacing($in->readCardinalHorizontalFacing()); }); $this->map(Ids::TRIP_WIRE, function(Reader $in) : Block{ return Blocks::TRIPWIRE() diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 5b65ca1b5f6..30d802f60ac 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -642,7 +642,7 @@ private function sendDisconnectPacket(Translatable|string $message) : void{ }else{ $translated = $message; } - $this->sendDataPacket(DisconnectPacket::create($translated)); + $this->sendDataPacket(DisconnectPacket::create(0, $translated)); } /** diff --git a/src/world/format/io/data/BedrockWorldData.php b/src/world/format/io/data/BedrockWorldData.php index 20b1210f98d..d92576f21ad 100644 --- a/src/world/format/io/data/BedrockWorldData.php +++ b/src/world/format/io/data/BedrockWorldData.php @@ -51,12 +51,12 @@ class BedrockWorldData extends BaseNbtWorldData{ public const CURRENT_STORAGE_VERSION = 10; - public const CURRENT_STORAGE_NETWORK_VERSION = 618; + public const CURRENT_STORAGE_NETWORK_VERSION = 622; public const CURRENT_CLIENT_VERSION_TARGET = [ 1, //major 20, //minor - 30, //patch - 2, //revision + 40, //patch + 1, //revision 0 //is beta ];