Release 4.0.0-BETA4

This commit is contained in:
Dylan K. Taylor 2021-10-06 23:49:13 +01:00
parent 8e3772ceef
commit 9e6d740570
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
2 changed files with 61 additions and 2 deletions

View File

@ -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<int, SubChunk>` instead of `SplFixedArray<SubChunk>`.
- 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.

View File

@ -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