mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2024-11-21 17:45:20 +00:00
8.8 KiB
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 threeArrow
constants:PICKUP_NONE
,PICKUP_ANY
,PICKUP_CREATIVE
. - Added new API methods
Projectile->getBaseDamage()
andProjectile->setBaseDamage()
. - Added new API methods
Entity->getScoreTag()
andEntity->setScoreTag()
.
Events
- The
Listener
interface has now received in-depth documentation about its behaviour and uses. See the top of theListener
class to read it. - It is now possible to declare
@ignoreCancelled
on an event handler without specifyingtrue
orfalse
. If no value is found,true
will be assumed. ServerCommandEvent
andRemoteServerCommandEvent
are now@deprecated
and their usage discouraged. A new genericCommandEvent
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()
andsetAttackCooldown()
to allow controlling Living entities attack cooldown times (default 10 ticks).
- Added
PlayerDeathEvent
: Added new static methodderiveMessage()
.PlayerKickEvent
: Added new methodsetReason()
.
Forms
- Added a new
pocketmine\form\Form
interface. Implementing this interface permits custom form implementations to make use ofPlayer->sendForm()
, eliminating the need to handle packets directly and also solving the form ID collision problem.
Items
Item
andItemFactory
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 bloatingPluginManager
. The API is identical to that ofPluginManager
's permission API. All methods moved toPermissionManager
have@deprecated
redirects remaining behind inPluginManager
, 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 aBadMethodCallException
when called directly.
Utils
Utils::getURL()
,Utils::postURL()
,Utils::simpleCurl()
andUtils::getIP()
have been moved to a newpocketmine\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 sinceConfig
saving should not be significant enough to cause problems anyway. See #2298 for details.
Server
- Deprecated
level
parameter offindEntity()
. 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
- Updated NBT dependency to 0.2.1 to receive bug fixes (see https://github.com/pmmp/NBT/releases/tag/0.2.1).
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-encodeForm
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 to0.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
andstart.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 preferTaskHandler->cancel()
since it does not require a task to have a circular dependency on its own executor.