From bf7014e0eca06bc5d00205967ef3d16792af4036 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 7 Nov 2022 15:18:05 +0000 Subject: [PATCH] Release 4.11.0-BETA1 --- changelogs/4.11-beta.md | 67 +++++++++++++++++++++++++++++++++++++++++ src/VersionInfo.php | 4 +-- 2 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 changelogs/4.11-beta.md diff --git a/changelogs/4.11-beta.md b/changelogs/4.11-beta.md new file mode 100644 index 000000000..9da45f30c --- /dev/null +++ b/changelogs/4.11-beta.md @@ -0,0 +1,67 @@ +**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 in `pocketmine.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 the `resource_packs` folder. + - e.g. `MyEncryptedPack.zip` -> `MyEncryptedPack.zip.key` + +## 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`](https://packagist.org/packages/webmozart/path-util) has been deprecated, and will be dropped in favour of [`symfony/filesystem`](https://packagist.org/packages/symfony/filesystem) in PM5. + - To prepare for this change, simply replace any usage of `Webmozart\PathUtil\Path` with `Symfony\Component\Filesystem\Path`, which is available as a dependency in this release. + +### `pocketmine` +- The following API methods are now deprecated: + - `Server->getPlayerByPrefix()` + +### `pocketmine\entity` +- `EntitySpawnEvent` and `ItemSpawnEvent` 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 an `InventoryTransaction` server-side, since the regular `Inventory` API methods can be used, rather than having to manually create `SlotChangeAction`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. (24e72ec109c1442b09558df89b6833cf2f2e0ec7) +- Avoid repeated calls to `Position->getWorld()` (use local variables). (2940547026db40ce76deb46e992870de3ead79ad) +- Revamped the way `InventoryManager` handles fake inventory slot mappings for stuff like crafting tables. (e90abecf38d9c57635fa0497514bba7e546a2469) +- 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 to `MainLogger`. A new `BroadcastLoggerForwarder` 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 uses `WeakReference` to track its inventory listener. This allows the delegate to be reused. diff --git a/src/VersionInfo.php b/src/VersionInfo.php index fc590de79..4f8e3cb16 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -31,8 +31,8 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; - public const BASE_VERSION = "4.10.2"; - public const IS_DEVELOPMENT_BUILD = true; + public const BASE_VERSION = "4.11.0-BETA1"; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "beta"; private function __construct(){