0
0
mirror of https://github.com/pmmp/PocketMine-MP.git synced 2025-10-31 14:29:19 +00:00
Files
PocketMine-MP/changelogs/5.36.md
2025-10-22 01:26:32 +01:00

5.6 KiB

5.36.0

Released 22nd October 2025.

This is a minor feature release containing performance improvements, new gameplay features, new API additions and network changes.

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 some useful URLs to the console log on server startup. (@dktapps, @Wraith0x10)
  • Block containers like Campfire no longer get completely deleted when one invalid item is encountered. (@dktapps)
  • Block containers now log more useful errors when encountering item data loading errors when loaded from disk. (@dktapps)
  • Improved handling of invalid items in stored player inventories, reducing crashes. (@dktapps)

UI

  • The /particle command now supports sonicexplosion particles. (@Pupggerss)

Gameplay

  • Improved Cactus growth logic. (@DavyCraft648)
  • Short grass and small ferns can now be grown into double tallgrass and large ferns using bone meal. (@remminiscent)
  • Implemented exposure calculation for explosions. Obstructions such as walls will now protect entities from explosion damage (if they don't get destroyed). (@Wraith0x10)
  • Added the following blocks:
    • Cactus Flower (@DavyCraft648)
    • Copper Bars
    • Copper Chain
    • Copper Lantern
    • Copper Torch
  • Added the following items:
    • Lingering Potion (@IvanCraft623)
  • Added the following entities:
    • Area Effect Cloud (@IvanCraft623)

API

pocketmine\block

  • The following constants have been added:
    • Cactus::MAX_HEIGHT
  • LightningRod now implements CopperMaterial, allowing it to have oxidation and waxed properties.

pocketmine\entity

  • The following new classes have been added:
    • effect\EffectCollection - manages a set of effects, but doesn't consume them. Used by AreaEffectCloud.
    • object\AreaEffectCloud

pocketmine\event

  • The following new classes have been added:
    • AreaEffectCloudApplyEvent - called when an area effect cloud tries to update the effects on entities it's touching

pocketmine\item

  • The following new methods have been added:
    • Item::safeNbtDeserialize() - works like Item::nbtDeserialize() but logs any SavedDataLoadingException thrown instead of bailing out
    • SplashPotion->willLinger() - returns whether this splash potion is a lingering potion
    • VanillaItems::LINGERING_POTION()
  • The following methods have signature changes:
    • SplashPotion->__construct() now has an extra bool $linger = false parameter (to be made mandatory in a future major version)

pocketmine\world

  • The following classes have been added:
    • particle\SonicExplosionParticle

pocketmine

  • The following constants have been added:
    • VersionInfo::GITHUB_URL

Internals

  • pmmp/Language was merged as a subtree in the resources/translations folder. (@dktapps)
    • This will reduce friction when adding new strings, and also shorten the timeline for merging new Crowdin translations.
    • Unfortunately this does make the commit log for this version very noisy.
    • Note that only eng.ini should be modified manually. All other translations are updated by Crowdin via automated pull requests.
  • Various old, unused translation strings have been removed, along with their KnownTranslationFactory and KnownTranslationKeys entries. (@dktapps)
  • NetworkSession now supports throwing FilterNoisyPacketException from packet handlers to drop consecutive repeated packets. (@dktapps)
    • This solves high FPS packet spam issues (InventoryTransactionPacket on right-click, AnimatePacket on left-click) causing players to get kicked.
    • Server workload when dealing with these players should also be significantly reduced.
    • This system may need improvement in the future if multiple packets get spammed at once (interleaved), but current cases don't require that level of complexity.
  • New version of BedrockProtocol integrated. (@dktapps)
    • Significant changes to the construction of AvailableCommandsPacket:
      • AvailableCommandsPacket now works with raw, unlinked data only. It will not attempt to resolve string or enum dictionary references. This vastly improves the ability to debug the packet, as well as simplifying its code and making it possible to do symmetric binary encoding tests.
      • New AvailableCommandsPacketAssembler and AvailableCommandsPacketDisassembler classes are now provided to allow transforming unlinked AvailableCommandsPacket data into linked high-level structures that are easier to work with. The usage of these should be almost identical to before.
      • See this pull request for more information.
    • Removed legacy backwards-compatible aliases for LevelSoundEvent and EntityMetadataFlags enums.
  • Removed unnecessary logic repetition in Living->lookAt(). (@armorshard1)
  • EffectManager now inherits most of its functionality from EffectCollection. (@IvanCraft623)
  • Fixed a crash in PHP 8.5 in the Normal generator's biome noise calculation when the calculated hash overflows into a float. (@dktapps)
    • This is almost certainly not working as intended, but unfortunately we can't change it without causing cliff edges in existing worlds. The issue has been worked around instead.