diff --git a/changelogs/5.0-alpha.md b/changelogs/5.0-alpha.md index eade91d27..66f338047 100644 --- a/changelogs/5.0-alpha.md +++ b/changelogs/5.0-alpha.md @@ -305,3 +305,117 @@ Again, it's acknowledged this is rather more cumbersome than it should be, but t - The following classes have been added: - `pocketmine\world\format\io\GlobalBlockStateHandlers` - `pocketmine\world\format\io\GlobalItemDataHandlers` + +# 5.0.0-ALPHA2 +Released 14th July 2022. + +## Core +- Reduced memory usage of the server on startup. +- Fixed error spam when loading item frames without items in them. + +## Gameplay +### Blocks +- Added the following new blocks: + - Cakes with Candle & Dyed Candle + - Candle & Dyed Candle + - Cartography Table (not currently usable due to maps not being implemented) + - Copper block (random oxidation not yet implemented) + - Cut Copper block, stairs and slabs (random oxidation not yet implemented) + - Crying Obsidian + - Gilded Blackstone + - Glow Item Frame + - Hanging Roots + - Lightning Rod + - Netherite Block + - Smithing Table + - Tinted Glass + - Warped Wart Block + - Wither Rose + +### Items +- Added the following new items: + - Honey Bottle + - Netherite Axe + - Netherite Boots + - Netherite Chestplate + - Netherite Helmet + - Netherite Ingot + - Netherite Leggings + - Netherite Pickaxe + - Netherite Scrap + - Netherite Shovel + - Netherite Sword + +## API +### `pocketmine\block` +- Dependency between `BlockFactory` and `VanillaBlocks` has been inverted. + - Now, blocks are defined in `VanillaBlocks`, and automatically registered in `BlockFactory`. + - Manual registration in `BlockFactory` is still required for custom blocks. + - `BlockFactory` now has only one purpose, which is to map internal blockstate IDs to `Block` objects when reading blocks from chunks. +- The following new API methods have been added: + - `public Block->isFireProofAsItem()` + - `public Block->onProjectileHit()` + - `public ItemFrame->isGlowing()` + - `public ItemFrame->setGlowing()` +- The following new classes have been added: + - `BaseCake` + - `CakeWithCandle` + - `CakeWithDyedCandle` + - `Candle` + - `CartographyTable` + - `CopperSlab` + - `CopperStairs` + - `Copper` + - `DyedCandle` + - `GildedBlackstone` + - `HangingRoots` + - `LightningRod` + - `SmithingTable` + - `WitherRose` + - `utils\CandleTrait` + - `utils\CopperOxidation` + - `utils\CopperTrait` + +### `pocketmine\crafting` +- The following enum classes have new members: + - `ShapelessRecipeType` has new members `CARTOGRAPHY` and `SMITHING` + +### `pocketmine\data` +- `LegacyToStringBidirectionalIdMap` has been reduced to `LegacyToStringIdMap`. + - Since we never map from string ID to legacy ID, bidirectional mapping is no longer necessary. + - This affects the following subclasses: + - `LegacyBiomeIdToStringIdMap` + - `LegacyBlockIdToStringIdMap` + - `LegacyEntityIdToStringIdMap` + - `LegacyItemIdToStringIdMap` +- The following internal API methods have been added: + - `public LegacyToStringIdMap->add(string $string, int $legacy) : void` - adds a mapping from a custom legacy ID to custom string ID, needed for upgrading old saved data + - `public LegacyBlockStateMapper->addMapping(string $stringId, int $intId, int $meta, BlockStateData $stateData) : void` - adds a mapping from legacy block data to a modern blockstate, needed for upgrading old saved data + - `public BlockStateData->getState(string $name) : ?Tag` +- The following internal API methods have signature changes: + - `BlockStateData->__construct()` now accepts `array for `$states` instead of `CompoundTag` + - `BlockStateData->getStates()` now returns `array` instead of `CompoundTag` (allows reducing memory usage) +- The following classes have been added: + - `UnsupportedItemTypeException` + +### `pocketmine\item` +- `ItemFactory` has been removed. + - Vanilla item registration is now done via `VanillaItems`. + - The procedure for registering a custom item is the same as in ALPHA1, minus the `ItemFactory` step. +- The following API methods have been added: + - `public ArmorTypeInfo->getToughness() : int` + - `public ArmorTypeInfo->isFireProof() : bool` + - `public Item->isFireProof() : bool` +- The following API methods have signature changes: + - `ArmorTypeInfo->__construct()` now accepts optional parameters `int $toughness` and `bool $fireProof` +- The following classes have been added: + - `HoneyBottle` +- The following enums have new members: + - `ToolTier` has new member `NETHERITE` + +### `pocketmine\world` +- The following API methods have signature changes: + - `SubChunk->__construct()` parameter `$blocks` has been renamed to `$blockLayers`. +- The following classes have been added: + - `CopperWaxApplySound` + - `CopperWaxRemoveSound`