0
0
mirror of https://github.com/pmmp/PocketMine-MP.git synced 2024-11-21 17:45:20 +00:00
PocketMine-MP/changelogs/3.2.md
2019-06-11 16:44:05 +01:00

8.8 KiB

For Minecraft: Bedrock Edition 1.6.0

This is a minor feature release, including support for Minecraft Bedrock 1.6.0, some new minor gameplay features and some API deprecations and additions.

Note

Plugins compatible with any previous 3.x.y version will also run on this build and do not need API bumps.

However, some API features have been deprecated in this version. Plugin developers do not need to do anything about these deprecations immediately, however they may raise harmless warnings if used.

Features marked @deprecated are recommended not to be used, but will continue to work for any future 3.x.y versions. They will be removed in the next major release (4.0).

3.2.0

Core

  • Level generators are now registered only when needed instead of as soon as a worker starts. This drastically reduces memory consumption on servers with lots of workers.
  • Async workers are now garbage-collected along with everything else on the default schedule. Idle workers with 0 queued tasks will be shutdown and removed from the pool to reduce memory usage.
  • UPnP error messages are now more informative of troubleshooting steps.
  • Errors are no longer caught in cases where they are unrecoverable.

API

Entity

  • Arrow pickup mode can now be controlled via Arrow->setPickupMode(). This accepts one of three Arrow constants: PICKUP_NONE, PICKUP_ANY, PICKUP_CREATIVE.
  • Added new API methods Projectile->getBaseDamage() and Projectile->setBaseDamage().
  • Added new API methods Entity->getScoreTag() and Entity->setScoreTag().

Events

  • The Listener interface has now received in-depth documentation about its behaviour and uses. See the top of the Listener class to read it.
  • It is now possible to declare @ignoreCancelled on an event handler without specifying true or false. If no value is found, true will be assumed.
  • ServerCommandEvent and RemoteServerCommandEvent are now @deprecated and their usage discouraged. A new generic CommandEvent has been introduced in its place, which allows capturing commands from any type of command sender. This was done in response to difficulties of code duplication when wanting to intercept commands from both console and players.
  • EntityDamageEvent
    • Added MODIFIER_WEAPON_ENCHANTMENTS constant for attack damage bonuses due to enchantments like Sharpness.
    • Added new API methods getAttackCooldown() and setAttackCooldown() to allow controlling Living entities attack cooldown times (default 10 ticks).
  • PlayerDeathEvent: Added new static method deriveMessage().
  • PlayerKickEvent: Added new method setReason().

Forms

  • Added a new pocketmine\form\Form interface. Implementing this interface permits custom form implementations to make use of Player->sendForm(), eliminating the need to handle packets directly and also solving the form ID collision problem.

Items

  • Item and ItemFactory now support negative item IDs (needed for future extended blocks support).
  • Updated ItemIds interface with new constants.

Permission

  • Added a new PermissionManager class which encapsulates all of the permission-management functionality originally bloating PluginManager. The API is identical to that of PluginManager's permission API. All methods moved to PermissionManager have @deprecated redirects remaining behind in PluginManager, which will be removed in the next major release (4.0).

Plugin

  • PluginBase->getConfig() will now automatically save the default config if it does not already exist.
  • Plugin data directories will now be automatically created on plugin load, eliminating the need for boilerplate @mkdir($this->getDataFolder()) calls at the top of every plugin.

Tile

  • Tile::createNBT() will now throw a BadMethodCallException when called directly.

Utils

  • Utils::getURL(), Utils::postURL(), Utils::simpleCurl() and Utils::getIP() have been moved to a new pocketmine\utils\Internet class. The original methods are @deprecated and will be removed for the next major version (4.0).
  • Removed the ability for Config to be asynchronously saved. This was discussed for removal because of various problems that it causes. It was deemed not worth fixing since Config saving should not be significant enough to cause problems anyway. See #2298 for details.

Server

  • Deprecated level parameter of findEntity(). This parameter was premature optimization. Code using it will continue to work as before.

Gameplay

General

  • Air bubbles are now regenerated at the same speed as vanilla UpdateAquatic, instead of instantly when leaving water.
  • Implemented Conduit Power effect.

Enchantments

  • Implemented the following enchantments: Thorns, Sharpness, Knockback, Fire Aspect, Power, Punch, Flame, Infinity, Mending.

Items

  • Added the following new items: Scute

3.2.1

  • Fixed VerifyLoginTask completion bug when players get disconnected prior to the task completing.
  • Fixed client crash issue due to outdated runtime ID mappings.

3.2.2

3.2.3

  • Errors thrown during level tick will now crash the server instead of spamming the console.
  • Fixed arrows despawning too soon after hitting the ground.
  • Fixed projectiles despawning before colliding if they were airborne for > 60 seconds.
  • Fixed crash related to Flame enchantment when the player shooting the arrow was on fire.

3.2.4

  • Fixed levels unloaded during an earlier level's tick on the same tick causing a crash.
  • PermissibleBase->clearPermissions() now properly unsubscribes from all permissions.
  • Fixed incorrect break check for standing torch.
  • Fixed drops for brewing stand.
  • Fixed block picking brewing stand, bed, double slab, cake, farmland, and mob heads giving the wrong items.
  • Fixed blocks not placing correctly when clicking on redstone ore.
  • Fixed unknown PC items in tile inventories crashing the server - now they'll be quietly removed instead.
  • Fixed server freezing when eating chorus fruit from high altitude.
  • readline is now disabled by default on Windows and must be explicitly enabled with --enable-readline due to thread-safety issues.
  • Fixed server crash when trying to use non-implemented splash potions.
  • Removed incorrect maximum region file size cap which may have caused some worlds to be incorrectly detected as corrupted.

3.2.5

  • Player->sendForm() now throws a proper exception when failing to JSON-encode Form objects given to it.
  • Fixed crash when handling later packets in a batch when an earlier packet triggered termination of the player's connection.
  • Fixed a race condition causing progress updates in AsyncTasks to be lost when published near completion.
  • Fixed bad decoding for some packets with unsupported structures.
  • Crash dumps no longer report 20 empty lines when an error occurs in eval()'d code.
  • pocketmine/nbt dependency updated to 0.2.2 to fix bugs (see NBT repo for changelog).

3.2.6

  • Chunk ticking no longer occurs in chunks which have an adjacent unloaded chunks, fixing things like grass ticking triggering unintentional chunk loading.
  • Fixed some lighting propagation issues where step count is the same but light level is different.
  • Fixed full-chunk light repopulation producing broken lighting when the generator hasn't been registered on a worker.
  • Fixed a missing field in MoveEntityDeltaPacket.
  • Added client-sided rate limiting for crashdump reporting to mitigate involuntary DDoS of the crash archive.
  • Fixed a bug in start.cmd where quotes would appear around the "couldn't find installation" message.

3.2.7

  • Added a network-layer check for item NBT size to avoid unexplained client-sided crashes due to length overflow.
  • Fixed some desync bugs with double chests when one half of a double chest is unloaded.
  • Anonymous class timings will now have a cleaned path for the identifier relative to the plugins directory.
  • Anonymous class timings now render correctly on timings.pmmp.io.
  • Fixed empty garbage subchunks not getting removed from long-life chunks.
  • start.ps1, start.sh and start.cmd no longer recognize source-code installations. Since source-code installations should only be used by developers who know what they are doing anyway, this was considered unwise to keep.
  • Fixed a bug/oversight in network chunk preparation that caused chunk prepare to be 4x slower than necessary.
  • Chunk->fastSerialize() now doesn't serialize useless data (data is omitted based on chunk flags). This significantly reduces the amount of useless data getting copied for generation, population and light calculation.
  • TaskHandler->cancel() was incorrectly marked as @internal in 2014. This has been fixed. Plugin developers should in fact prefer TaskHandler->cancel() since it does not require a task to have a circular dependency on its own executor.