From 9e6d7405709560c0025e072324602983213276dd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 6 Oct 2021 23:49:13 +0100 Subject: [PATCH] Release 4.0.0-BETA4 --- changelogs/4.0.md | 59 +++++++++++++++++++++++++++++++++++++++++++++ src/VersionInfo.php | 4 +-- 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/changelogs/4.0.md b/changelogs/4.0.md index 644550657..0f3851543 100644 --- a/changelogs/4.0.md +++ b/changelogs/4.0.md @@ -1332,3 +1332,62 @@ Released 10th September 2021. - `Liquid->getMinAdjacentSourcesToFormSource()`: returns how many adjacent source blocks of the same liquid must be present in order for the current block to become a source itself - `Player->getPlayerInfo()` - `Liquid` minimum-cost flow calculation code has been extracted to `MinimumCostFlowCalculator`. + +# 4.0.0-BETA4 +Released 6th October 2021. + +## General +- Improved performance of lighting calculation by avoiding copies of useless data from the main thread. +- Resource pack loading now accepts `dependencies` and `capabilities` fields in the `manifest.json` (although it doesn't currently check them). +- `/help` is now localized according to language set in `server.properties`. +- Various messages related to world loading, generation and conversion are now localized according to the language set in `server.properties`. +- Compasses now point to the correct (current) world's spawn point after teleporting players to a different world. Previously, they would continue to point to the spawn of the world that the player initially spawned in. +- The `--bootstrap` CLI option has been removed. +- RakLib 0.14.2 is now required. This fixes the following issues: + - Fixed incorrect handling of sessions on client disconnect (leading to timeout debug messages). + - Fixed transferring players often not working correctly. + - Fixed disconnect screens sometimes not displaying. + +## Fixes +- Fixed server crash when UPnP encounters an error. +- Fixed server crash when clients sent items with bad NBT in inventory transactions. +- Fixed server crash when loading a plugin with legacy nested permission structure (now the plugin will fail to load, but the server won't crash). +- Fixed server crash when using `/give` with bad NBT on any item. +- Fixed server crash when loading a plugin with improperly formatted API version (now the plugin will fail to load, but the server won't crash). +- Fixed server crash when changing player gamemode during `PlayerLoginEvent`. +- Incorrect structure of `commands` in plugin manifest is now detected earlier and handled more gracefully. +- Fixed console reader subprocess lingering on server crash on Windows and screwing up the terminal. +- Fixed `Player` object memory leak when kicking players during `PlayerLoginEvent` (this caused the `World` to report warnings about leaked entities on shutdown). +- Fixed `Projectile->move()` ignoring the `dx`/`dy`/`dz` parameters given and using its own `motion` instead. +- Fixed `BlockFactory->get()` erroneously accepting meta values of `16`. +- Fixed `Block->isSameState()` false negatives for some types of slabs. +- Fixed being unable to place slabs of the same type on top of each other to create double slabs. + +## API changes +- Plugin commands in `plugin.yml` must now declare `permission` for each command. Previously, the `permission` key was optional, causing anyone to be able to use the command. + - This behaviour was removed because of the potential for security issues - a typo in `plugin.yml` could lead to dangerous functionality being exposed to everyone. + - If you want to make a command that everyone can use, declare a permission with a `default` of `true` and assign it to the command. +- Plugin permissions in `plugin.yml` must now declare `default` for each permission. Previously, the `default` key was optional, causing the permission to silently be denied to everyone (PM4) or granted to ops implicitly (PM3). + +### Block +- Added the following classes: + - `pocketmine\block\utils\LeverFacing` +- Added the following API methods: + - `pocketmine\block\Lever->isActivated()` + - `pocketmine\block\Lever->setActivated()` + - `pocketmine\block\Lever->getFacing()` + - `pocketmine\block\Lever->setFacing()` + +### World +- The following API methods have signature changes: + - `Chunk->getSubChunks()` now returns `array` instead of `SplFixedArray`. +- The following API methods have been removed: + - `FastChunkSerializer::serialize()` + - `FastChunkSerializer::deserialize()` +- The following API methods have been added: + - `FastChunkSerializer::serializeTerrain()`: serializes blocks and biomes only + - `FastChunkSerializer::deserializeTerrain()`: deserializes the output of `serializeTerrain()` + +### Utils +- The following API methods have signature changes: + - `Process::kill()` now requires an additional `bool $subprocesses` parameter. diff --git a/src/VersionInfo.php b/src/VersionInfo.php index dedf0f3ae..2bebe456a 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-BETA4"; - 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