mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2024-11-21 16:35:25 +00:00
6.3 KiB
6.3 KiB
For Minecraft: Bedrock Edition 1.19.40
This is a minor feature release for PocketMine-MP, introducing some new features and improvements.
Note about API versions
Plugins which don't touch the protocol and compatible with any previous 4.x.y version will also run on these releases and do not need API bumps. Plugin developers should only update their required API to this version if you need the changes in this build.
WARNING: If your plugin uses the protocol, you're not shielded by API change constraints. You should consider using the mcpe-protocol
directive in plugin.yml
as a constraint if you do.
4.11.0-BETA1
Released 7th November 2022.
General
- Packet receive timings have now been split into two subcategories - Decode and Handle.
- Console command entry can now be disabled via the
console.enable-input
setting inpocketmine.yml
.- Best suited for headless servers (e.g. in a Docker container) where the console will never be used anyway.
- Disabling the console reader slightly reduces memory usage, because console reading currently requires an additional subprocess.
- Console command output now appears on the terminal only, and is not written to the log file.
- The output from console commands now appears with a
Command output |
prefix, instead of as a log message. - Introduced validation for the
--data
and--plugins
command line options. - Encrypted resource packs are now supported, by means of adding a
.key
file alongside the pack in theresource_packs
folder.- e.g.
MyEncryptedPack.zip
->MyEncryptedPack.zip.key
- e.g.
Gameplay
- Fixed supporting blocks of dead bush to be in line with vanilla.
- Sugarcane can now be grown using bonemeal on any part of the sugarcane. Previously, it only worked when used on the bottom block.
- Fixed modifier values for Instant Damage and Regeneration effects.
API
General
- Plugins are now always disabled before their dependencies, to ensure that they are able to shutdown properly (e.g. a core plugin depending on a database plugin may want to save data to a DB during
onDisable()
). webmozart/path-util
has been deprecated, and will be dropped in favour ofsymfony/filesystem
in PM5.- To prepare for this change, simply replace any usage of
Webmozart\PathUtil\Path
withSymfony\Component\Filesystem\Path
, which is available as a dependency in this release.
- To prepare for this change, simply replace any usage of
pocketmine
- The following API methods are now deprecated:
Server->getPlayerByPrefix()
pocketmine\entity
EntitySpawnEvent
andItemSpawnEvent
are now fired on the first tick after the entity is added to the world. Previously, these events were called directly from the entity constructor, making it impossible to get properties like velocity which are often set after the entity is created.- The following API methods are now deprecated:
Living->hasLineOfSight()
pocketmine\item
- The following new API methods have been added:
public Armor->clearCustomColor() : $this
pocketmine\inventory\transaction
- Introduced a
TransactionBuilder
class. This makes it less of a hassle to build anInventoryTransaction
server-side, since the regularInventory
API methods can be used, rather than having to manually createSlotChangeAction
s.
pocketmine\player
- The following new API methods have been added:
public Player->sendToastNotification(string $title, string $body) : void
- makes a grey box appear at the top of the player's screen containing the specified message
pocketmine\utils
- The following new API methods have been added:
public static TextFormat::addBase(string $baseFormat, string $string) : string
- used for coloured log messages, changes the base formatting of a string by inserting the given formatting codes after every RESET code
Internals
- Improved performance of
ContainerTrait
dropping items on block destroy. (24e72ec109
) - Avoid repeated calls to
Position->getWorld()
(use local variables). (2940547026
) - Revamped the way
InventoryManager
handles fake inventory slot mappings for stuff like crafting tables. (e90abecf38
) - Console polling is now done on the main thread (no longer a performance concern).
- Console reader subprocess should now automatically die if the server main process is killed, instead of persisting as a zombie.
ConsoleCommandSender
is no longer responsible for relaying broadcast messages toMainLogger
. A newBroadcastLoggerForwarder
has been added, which is subscribed to the appropriate server broadcast channels in order to relay messages. This ensures that chat messages and command audit messages are logged.DelegateInventory
now usesWeakReference
to track its inventory listener. This allows the delegate to be reused.
4.11.0-BETA2
Released 13th November 2022.
Configuration
- The
chunk-ticking.per-tick
setting is now deprecated, and will be removed in a future release.- The functionality of this setting has been removed, since it caused more problems than it solved.
- Setting it to zero will still disable chunk ticking (for now), but this should now be done by setting
chunk-ticking.tick-radius
to0
instead.
Gameplay
- Improved chunk random ticking:
- Removed the limit on chunks ticked per tick, and its associated config option is no longer respected.
- This change significantly improves crop and plant growth with large numbers of players, but may cause higher CPU usage.
- This limit was causing a linear decrease in chunk ticking speed with larger numbers of players, leading to worsened gameplay experience.
- Every chunk within the configured tick radius of a player will be ticked. Previously, chunks were randomly selected from the radius.
- Removed the limit on chunks ticked per tick, and its associated config option is no longer respected.
- Implemented Darkness effect.
API
pocketmine\world
- The following new API methods have been added:
public World->getChunkTickRadius() : int
- returns the world's simulation radiuspublic World->setChunkTickRadius(int $radius) : void
- sets the world's simulation radius
Internals
- Non-arrow projectile damage is now unscaled. Scaling according to velocity is only applied to arrows. This currently doesn't cause any observable change in behaviour, but is required for future additions.