From 023010370b3794d0e79471c28adf2e23b09b78a8 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 18 Jan 2023 19:50:18 +0000 Subject: [PATCH] Release 5.0.0-ALPHA7 --- changelogs/5.0-alpha.md | 132 ++++++++++++++++++++++++++++++++++++++++ src/VersionInfo.php | 2 +- 2 files changed, 133 insertions(+), 1 deletion(-) diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md index de11e5c7a..09d92bc7a 100644 --- a/changelogs/5.0-alpha.md +++ b/changelogs/5.0-alpha.md @@ -737,3 +737,135 @@ Released 19th December 2022. - `EntityLegacyIds` has been removed. Legacy entity IDs found during world loading are now converted via `LegacyEntityIdToStringIdMap`. - All usages of NBT keys now use class constants instead of hardcoded strings (except for an occasional overlooked one). - All members of `BlockTypeTags` now have a `pocketmine:` prefix on the value. This does not affect constant usages. + +# 5.0.0-ALPHA7 +Released 18th January 2023. + +**This release includes changes from the following releases, which may not be mentioned:** +- [4.12.3](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.3) +- [4.12.4](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.4) +- [4.12.5](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.5) +- [4.12.6](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.6) +- [4.12.7](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.7) +- [4.12.8](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.8) +- [4.12.9](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.9) +- [4.12.10](https://github.com/pmmp/PocketMine-MP/releases/tag/4.12.10) +- [4.13.0-BETA1](https://github.com/pmmp/PocketMine-MP/releases/tag/4.13.0-BETA1) + +## Fixes +- Fixed glowing item frame placement creating the wrong tile, causing invisible items. + +## Localization +- Localized disconnect messages are now used in the following cases: + - Server full + - Player not on the server whitelist + - Player on the server ban list + - Invalid skin + - Invalid username + - Kicked using `/kick` + - Banned using `/ban` + - Failure to find a safe spawn position +- Session open, session close and session player name discovery messages are now localized. +- All permissions now have localized descriptions. These are not currently used by PocketMine-MP, but may be useful for plugins. + +## Gameplay +### Worlds +- Added support for 3D biomes. This isn't used by PocketMine-MP yet, but is necessary to be able to fully load 1.18 worlds. + +### Blocks +- Added the following new blocks: + - Chain + - Sculk + +### Items +- Added the following new items: + - Eye Drops (from Education Edition) + - Antidote (from Education Edition) + - Elixir (from Education Edition) + - Tonic (from Education Edition) + +## API +### Overview +- Biome-related APIs have changed to accommodate 3D biomes. +- Disconnect-related APIs have changed to accommodate localized disconnect messages. +- New, more powerful chat formatting API introduced to `PlayerChatEvent`. +- Glowing item frames moved to a separate block type instead of being a property of regular item frames (due to technical limitations). + +### `pocketmine\block` +- The following API methods have been removed: + - `ItemFrame->isGlowing() : bool` + - `ItemFrame->setGlowing(bool $glowing) : void` +- The following new API methods have been added: + - `public static VanillaBlocks::GLOWING_ITEM_FRAME() : ItemFrame` +- The following constants have been added: + - `BlockTypeIds::GLOWING_ITEM_FRAME` + - `BlockTypeIds::CHAIN` + - `BlockTypeIds::SCULK` +- The following new classes have been added: + - `Chain` + - `Sculk` + +### `pocketmine\event\player` +- The following API methods have changed signatures: + - `PlayerDuplicateLoginEvent->getDisconnectMessage()` now returns `Translatable|string` instead of `string` + - `PlayerDuplicateLoginEvent->setDisconnectMessage()` now accepts `Translatable|string` instead of `string` + - `PlayerKickEvent->getReason()` now returns `Translatable|string` instead of `string` + - `PlayerKickEvent->setReason()` now accepts `Translatable|string` instead of `string` + - `PlayerLoginEvent->getKickMessage()` now returns `Translatable|string` instead of `string` + - `PlayerLoginEvent->setKickMessage()` now accepts `Translatable|string` instead of `string` + - `PlayerPreLoginEvent->getFinalKickMessage()` now returns `Translatable|string` instead of `string` + - `PlayerPreLoginEvent->getKickMessage()` now returns `Translatable|string|null` instead of `string|null` + - `PlayerPreLoginEvent->setKickReason()` now accepts `Translatable|string` for the `$message` parameter instead of `string` + - `PlayerQuitEvent->getQuitReason()` now returns `Translatable|string` instead of `string` +- The following API methods have been removed: + - `PlayerChatEvent->getFormat()` (use `PlayerChatEvent->getChatFormatter()` instead) + - `PlayerChatEvent->setFormat()` (use `PlayerChatEvent->setChatFormatter()` instead) +- The following new API methods have been added: + - `public PlayerChatEvent->setChatFormatter(\pocketmine\player\chat\ChatFormatter $formatter) : void` - sets the chat formatter to be used for this event + - `public PlayerChatEvent->getChatFormatter() : \pocketmine\player\chat\ChatFormatter` - returns the chat formatter to be used for this event + +### `pocketmine\item` +- The following new classes have been added: + - `Medicine` + - `MedicineType` +- The following new class constants have been added: + - `ItemTypeIds::MEDICINE` + +### `pocketmine\network\query` +- The following API methods have changed signatures: + - `QueryInfo->getPlayerList()` now returns `list` instead of `list` + - `QueryInfo->setPlayerList()` now accepts `list` instead of `list` + +### `pocketmine\player` +- The following API methods have changed signatures: + - `Player->kick()` now accepts `Translatable|string` for `$reason` instead of `string` (to allow localized kick messages) + - `Player->disconnect()` now accepts `Translatable|string` for `$reason` instead of `string` (to allow localized disconnect messages) + - `Player->sendJukeboxPopup()` now accepts `Translatable|string` instead of `string, string[]` + +#### `pocketmine\player\chat` +- The following new classes have been added: + - `ChatFormatter` - interface implemented by chat formatters + - `StandardChatFormatter` - formats chat messages in the vanilla Minecraft style + - `LegacyRawChatFormatter` - implements the same behaviour previously used by `PlayerChatEvent->setFormat()` + +### `pocketmine\world` +- The following API methods have changed signatures: + - `World->getBiome()` now accepts `int $x, int $y, int $z` instead of `int $x, int $z` + - `World->getBiomeId()` now accepts `int $x, int $y, int $z` instead of `int $x, int $z` + - `World->setBiomeId()` now accepts `int $x, int $y, int $z` instead of `int $x, int $z` + +#### `pocketmine\world\format` +- The following new API methods have been added: + - `public SubChunk->getBiomeArray() : PalettedBlockArray` +- The following API methods have changed signatures: + - `Chunk->getBiomeId()` now accepts `int $x, int $y, int $z` instead of `int $x, int $z` + - `Chunk->setBiomeId()` now accepts `int $x, int $y, int $z` instead of `int $x, int $z` + - `Chunk->__construct()` no longer accepts `BiomeArray` as a parameter (contained in each subchunk instead) + - `SubChunk->__construct()` now accepts `int $emptyBlockId, list $blocks, PalettedBlockArray $biomes, ?LightArray $blockLight, ?LightArray $skyLight` instead of `int, list, ?LightArray, ?LightArray` +- The following classes have been removed + - `BiomeArray` + +## Internals +- Built-in commands now declare their names inside the class constructor, rather than accepting them as parameters. This improves code consistency. +- `NetworkSession` disconnect APIs now accept `Translatable|string` instead of `string` to allow localized disconnect messages. +- All external usages of `KnownTranslationKeys` are now removed. All localized messages are now sent using `Translatable` objects (usually from `KnownTranslationFactory`). diff --git a/src/VersionInfo.php b/src/VersionInfo.php index cfca3b4b5..90d1a5f9b 100644 --- a/src/VersionInfo.php +++ b/src/VersionInfo.php @@ -32,7 +32,7 @@ use function str_repeat; final class VersionInfo{ public const NAME = "PocketMine-MP"; public const BASE_VERSION = "5.0.0-ALPHA7"; - public const IS_DEVELOPMENT_BUILD = true; + public const IS_DEVELOPMENT_BUILD = false; public const BUILD_CHANNEL = "alpha"; private function __construct(){