diff --git a/changelogs/4.0-snapshot.md b/changelogs/4.0-snapshot.md index 724e58e3b..522e5cf80 100644 --- a/changelogs/4.0-snapshot.md +++ b/changelogs/4.0-snapshot.md @@ -210,7 +210,8 @@ However, if we add `src-namespace-prefix: pmmp\TesterPlugin` to the `plugin.yml` - Blocks with IDs >= 256 are now supported. - Block state and variant metadata have been separated. - Variant is considered an extension of ID and is immutable. - - `Block->setDamage()` has been removed. `Block->readStateFromData()` is now used for state deserialization. + - `Block->setDamage()` has been removed. + - All blocks now have getters and setters for their appropriate block properties, such as facing, lit/unlit, colour (in some cases), and many more. These should be used instead of metadata. - Tile entities are now created and deleted automatically when `World->setBlock()` is used with a block that requires a tile entity. - Some tile entities' API has been exposed on their corresponding `Block` classes, with the tile entity classes being deprecated. - The `pocketmine\tile` namespace has been relocated to `pocketmine\block\tile`. @@ -230,6 +231,7 @@ However, if we add `src-namespace-prefix: pmmp\TesterPlugin` to the `plugin.yml` - `Block->isFullCube()` - The following hooks have been added: - `Block->onAttack()`: called when a player in survival left-clicks the block to try to start breaking it + - `Block->onEntityLand()`: called when an entity lands on this block after falling (from any distance) - `Block->onPostPlace()`: called directly after placement in the world, handles things like rail connections and chest pairing - The following API methods have been renamed: - `Block->getDamage()` -> `Block->getMeta()` @@ -306,8 +308,11 @@ However, if we add `src-namespace-prefix: pmmp\TesterPlugin` to the `plugin.yml` - `Entity->width`: moved to `EntitySizeInfo`; use `Entity->size` instead - `Entity->eyeHeight`: moved to `EntitySizeInfo`; use `Entity->size` instead - The following API methods have been added: + - `Entity->getFallDistance()` + - `Entity->setFallDistance()` - `ItemEntity->getDespawnDelay()` - `ItemEntity->setDespawnDelay()` + - `Living->calculateFallDamage()`: this is `protected`, and may be overridden by subclasses to provide custom damage logic - `Human->getHungerManager()` - `Human->getXpManager()` - The following methods have signature changes: @@ -320,6 +325,7 @@ However, if we add `src-namespace-prefix: pmmp\TesterPlugin` to the `plugin.yml` - `HungerManager`: contains hunger-management functionality extracted from `Human` - `ExperienceManager`: contains XP-management functionality extracted from `Human` - The following API methods have been moved / renamed: + - `Entity->fall()` -> `Entity->onHitGround()` (and visibility changed to `protected` from `public`) - `Living->removeAllEffects()` -> `EffectManager->clear()` - `Living->removeEffect()` -> `EffectManager->remove()` - `Living->addEffect()` -> `EffectManager->add()` @@ -511,6 +517,7 @@ However, if we add `src-namespace-prefix: pmmp\TesterPlugin` to the `plugin.yml` - `EntityItemPickupEvent`: player (or other entity) picks up a dropped item (or arrow). Replaces `InventoryPickupItemEvent` and `InventoryPickupArrowEvent`. - Unlike its predecessors, this event supports changing the destination inventory. - If the destination inventory is `null`, the item will be destroyed. This is usually seen for creative players with full inventories. + - `EntityTrampleFarmlandEvent`: mob (or player) jumping on farmland causing it to turn to dirt - `StructureGrowEvent`: called when trees or bamboo grow (or any other multi-block plant structure). - The following events have been removed: - `EntityArmorChangeEvent` @@ -589,6 +596,9 @@ However, if we add `src-namespace-prefix: pmmp\TesterPlugin` to the `plugin.yml` ### Item #### General - A new `VanillaItems` class has been added, which contains static methods for creating any currently-known item type. This should be preferred instead of use of `ItemFactory::get()` where constants were used. +- `StringToItemParser` has been added, which allows mapping any string to any item, irrespective of IDs. These mappings are used by `/give` and `/clear`, and are made with custom plugin aliases in mind. + - Yes, this means you can finally add your own custom aliases to `/give` without ugly hacks! +- `LegacyStringToItemParser` has been added, which is a slightly more dynamic (but still inadvisable) replacement for `ItemFactory::fromString()`. - `Item->count` is no longer public. - The hierarchy of writable books has been changed: `WritableBook` and `WrittenBook` now extend `WritableBookBase`. - The following API methods have signature changes: @@ -1005,6 +1015,8 @@ However, if we add `src-namespace-prefix: pmmp\TesterPlugin` to the `plugin.yml` - The following API methods have been added: - `World->registerChunkListener()` - `World->unregisterChunkListener()` + - `World->getBlockAt()` (accepts int x/y/z instead of Vector3, faster for some use cases) + - `World->setBlockAt()` (accepts int x/y/z instead of Vector3, faster for some use cases) - `Chunk->isDirty()` (replacement for `Chunk->hasChanged()`) - `Chunk->getDirtyFlag()` (more granular component-based chunk dirty-flagging, used to avoid saving unmodified parts of the chunk) - `Chunk->setDirty()` @@ -1210,6 +1222,7 @@ However, if we add `src-namespace-prefix: pmmp\TesterPlugin` to the `plugin.yml` - note block - red, green, blue and purple torches (from Minecraft: Education Edition) - sea pickle + - slime - smoker - underwater torches (from Minecraft: Education Edition) - additional wood variants of the following: @@ -1228,9 +1241,14 @@ However, if we add `src-namespace-prefix: pmmp\TesterPlugin` to the `plugin.yml` - red nether brick - red sandstone (and variants) - stone-like slabs of many variants +- Non-player entities now bounce when falling on beds. +- Players and mobs now receive reduced fall damage when falling on beds. ### Items - Implemented the following items: - records - compounds (from Minecraft: Education Edition) - black, brown, blue and white dyes + +### Inventory +- Implemented offhand inventory.