# 5.21.0 Released 3rd November 2024. This is a minor feature release, including gameplay features and minor internals 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. ## Gameplay - Added the following new blocks: - Campfire - Chiseled Copper - Chiseled Tuff - Chiseled Tuff Bricks - Copper Bulb - Copper Door - Copper Grate - Copper Trapdoor - Polished Tuff, Slabs, Stairs and Walls - Soul Campfire - Tuff Bricks, Slabs, Stairs and Walls - Tuff Slab, Stairs and Walls - Added the following new types of painting: - backyard - baroque - bouquet - cavebird - changing - cotan - endboss - fern - finding - humble - lowmist - meditative - orb - owlemons - passage - pond - prairie_ride - sunflowers - tides - unpacked - Armor slots are now properly restricted (on the server side) to only contain the appropriate type of armor or headwear. - Implemented Aqua Affinity enchantment. Since the server doesn't currently enforce any movement restrictions in water, this enchantment works based on client-side behaviour only. ## API ### `pocketmine\block` - The following new API methods have been added: - `public ChiseledBookshelf->getLastInteractedSlot() : ?ChiseledBookshelfSlot` - `public ChiseledBookshelf->setLastInteractedSlot(?ChiseledBookshelfSlot $lastInteractedSlot) : $this` - The following new classes have been added: - `utils\CopperMaterial` - interface implemented by all copper-like blocks with oxidation and waxed properties - `CopperBulb` - `CopperDoor` - `CopperGrate` - `CopperTrapdoor` - `SoulCampfire` - `Campfire` - The following enums have new cases: - `utils\BannerPatternType` has new cases `FLOW` and `GUSTER` ### `pocketmine\crafting` - The following enums have new cases: - `FurnaceType` has new cases `CAMPFIRE` and `SOUL_CAMPFIRE` ### `pocketmine\event` - The following new classes have been added: - `block\CampfireCookEvent` - called when a campfire finishes cooking an item ### `pocketmine\inventory` - Added support for slot validators, which permit restricting the types of items a player can put into an inventory slot. - The following new classes have been added: - `transaction\action\SlotValidator` - interface - `transaction\action\CallbackSlotValidator` - class allowing a closure to be used for slot content validation - `SlotValidatedInventory` - implemented by inventories which support the use of slot validators ### `pocketmine\item` - The following new API methods have been added: - `public Item->getCooldownTag() : ?string` - returns the cooldown group this item belongs to, used for ensuring that, for example, different types of goat horns all respect a general horn cooldown - The following new classes have been added: - `ItemCooldownTags` - list of cooldown group tags used by PocketMine-MP ### `pocketmine\world\sound` - The following new classes have been added - `CampfireSound` - sound made by campfires while lit ## Tools - `tools/blockstate-upgrade-schema-utils.php` (formerly `generate-blockstate-upgrade-schema.php`) has several improvements: - Support for generating `flattenedProperties` rules as per [BedrockBlockUpgradeSchema 5.0.0](https://github.com/pmmp/BedrockBlockUpgradeSchema/releases/tag/5.0.0) - Improved criteria for flattened property selection to minimize the amount of rules required - Several subcommands are now available: - `generate` - generates a schema from provided data - `update` - regenerates an existing schema in a newer format - `update-all` - regenerates a folder of existing schemas in a newer format (useful for updating `BedrockBlockUpgradeSchema` en masse) - `test` - verifies that a schema produces the results expected by provided data ## Internals - Fixed incorrect visibility of `createEntity` in spawn eggs. - Added support for newer `BedrockBlockUpgradeSchema` in `BlockStateUpgrader`. # 5.21.1 Released 12th November 2024. ## Fixes - Fixed server crash when applying a cooldown to an item with 1 count. - Fixed garbage collector cycle count increase on player disconnect. - Fixed weakness effect being applied to all attack types, causing damage splash potions to become weaker. - Fixed Enchanted Golden Apple regeneration effect amplifier to match vanilla. # 5.21.2 Released 29th November 2024. ## Fixes - Fixed blocks destroyable by water being able to be placed inside water. - Fixed deprecation warnings about nullable typehints on PHP 8.4. - Fixed `Utils::getNiceClosureName()` not working correctly on PHP 8.4. - Fixed incorrect break animations when breaking the block behind an instantly-breakable block like a torch. - Fixed candle extinguish logic. - Fixed various documentation issues around array key types. - Introduced a new PHPStan rule along with `Utils::promoteKeys()` to improve PHPStan error reporting around unspecified array key types. Previously, some errors were missed due to PHPStan's BenevolentUnionType. ## DevOps - `pmmp/server-developers` team is now automatically requested for review on any new PR. - `Status: Waiting on Author` label is now automatically removed from PRs when they are updated.