diff --git a/changelogs/4.0.md b/changelogs/4.0.md index 88914ea8a..70add2c99 100644 --- a/changelogs/4.0.md +++ b/changelogs/4.0.md @@ -1393,3 +1393,53 @@ Released 6th October 2021. ### Utils - The following API methods have signature changes: - `Process::kill()` now requires an additional `bool $subprocesses` parameter. + +# 4.0.0-BETA5 +Released 12th October 2021. + +## General +- Exception log format has been changed. Now, exception info is logged in one big block message. This saves space on the console and improves readability, as well as reducing the ability for bad `ThreadedLoggerAttachment`s to break exception output. +- Log messages are now pushed to `server.log` before calling logger attachment, instead of after. This fixes messages not being written to disk when an error occurs in a logger attachment. +- Improved startup performance when loading many plugins. +- The `worlds` config in `pocketmine.yml` no longer supports attaching the generator settings to the `generator` key (use the `preset` key instead). +- Using an unknown generator in `server.properties` or `pocketmine.yml` will now cause a failure to generate the world. +- Using invalid/incorrect world generator options (presets) in `server.properties` or `pocketmine.yml` will now cause a failure to generate the world. +- Generator options of existing worlds are now validated before loading them. If they are invalid, the server will fail to load them. +- Several more log messages have been localized, including plugin loading errors. + +## Fixes +- Fixed server crash when using `/give` to give an item by ID which doesn't exist in Minecraft. +- Fixed server crash when boolean `server.properties` options were given an integer value (e.g. `0` or `1` instead of `false` or `true`). +- Fixed stats reporting checking for a nonexistent `pocketmine.yml` setting. +- Fixed use of commands without the proper permission sending a message `commands.generic.permission` instead of the proper message. +- Fixed entities set on fire appearing to stay on fire, although not taking any damage. +- Fixed a duplicate `MB` suffix on the `Memory freed` output of `/gc`. +- Fixed the server attempting to generate a world if it failed to load. + +## API +### Block +- The following API methods have been renamed: + - `Block->getPositionOffset()` -> `Block->getModelPositionOffset()`. + +### Event +- `@handleCancelled` PhpDoc annotation can no longer be used on event handlers for non-cancellable events. +- The following API methods have been added: + - `StructureGrowEvent->getPlayer()` + +### Inventory +- The following API methods have been added: + - `Inventory->getAddableItemQuantity()` + +### Scheduler +- `ClosureTask` now permits closures without an explicit return type (useful for arrow functions). + +### Utils +- The following API methods have been added: + - `Config::parseProperties()` + - `Config::writeProperties()` + - `Config::parseList()` + - `Config::writeList()` + +### World +- The following API methods have signature changes: + - `GeneratorManager->registerGenerator()` now requires a `\Closure $presetValidator` parameter. This is used to check generator options of worlds and configs before attempting to use them. diff --git a/src/VersionInfo.php b/src/VersionInfo.php index 8b9fb420b..3cf7af10b 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -30,9 +30,9 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; public const BASE_VERSION = "4.0.0-BETA5"; - public const IS_DEVELOPMENT_BUILD = true; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_NUMBER = 0; - public const BUILD_CHANNEL = ""; + public const BUILD_CHANNEL = "beta"; private function __construct(){ //NOOP