0
0
mirror of https://github.com/pmmp/PocketMine-MP.git synced 2024-11-24 02:46:12 +00:00
PocketMine-MP/changelogs/4.1.md
Dylan K. Taylor 1c60aa9769
Release 4.1.0
2022-02-07 19:22:53 +00:00

7.9 KiB

For Minecraft: Bedrock Edition 1.18.0

Note about API versions

Plugins which don't touch the protocol and compatible with any previous 4.x.y version will also run on these releases and do not need API bumps. Plugin developers should only update their required API to this version if you need the changes in this build.

WARNING: If your plugin uses the protocol, you're not shielded by API change constraints. You should consider using the mcpe-protocol directive in plugin.yml as a constraint if you do.

4.1.0

Released 7th February 2022.

General

  • Game mode names (e.g. survival, creative) may now be used for the gamemode property in server.properties.
  • Increased default maximum render distance to 16 chunks. Players with a render distance smaller than this will notice no difference.
  • The setup wizard now prompts for a maximum render distance value.
  • The setup wizard now prompts for an IPv6 port selection. Previously it would always use 19133.
  • chunk-ticking.disable-block-ticking now accepts block names like those used in the /give command.
  • The /clear command now behaves more like vanilla:
    • The order of inventories is now the same as Bedrock.
    • The cursor and offhand inventories are now cleared if necessary.

Technical

  • PlayerAuthInputPacket is now used instead of MovePlayerPacket for processing movements. This improves position and rotation accuracy.
  • && and || are now always used instead of and and or.
  • New version of pocketmine/errorhandler is used by this version, adding support for ErrorToExceptionHandler::trap(). This enables reliably capturing E_WARNING and E_NOTICE from functions such as yaml_parse() and friends.
  • New dependency versions are required by this version:
    • pocketmine/bedrock-protocol has been updated from 7.1.0 to 7.3.0.
    • pocketmine/errorhandler has been updated from 0.3.0 to 0.6.0.

API

Block

  • The following classes have been added:
    • Lectern
    • Pumpkin
  • The following public API methods have been added:
    • Block->getTypeId() : int - returns an integer which uniquely identifies the block type, ignoring things like facing, colour etc.
    • VanillaBlocks::LECTERN()
    • utils\BrewingStandSlot->getSlotNumber() : int
    • utils\FurnaceType->getCookSound() : Sound
  • The following API constants have been added:
    • tile\BrewingStand::BREW_TIME_TICKS

Crafting

  • The following API methods have been added:
    • CraftingManager->getPotionContainerChangeRecipes() : array<int, array<string, PotionContainerChangeRecipe>>
    • CraftingManager->getPotionTypeRecipes() : array<string, array<string, PotionTypeRecipe>>
    • CraftingManager->registerPotionContainerChangeRecipe(PotionContainerChangeRecipe $recipe) : void
    • CraftingManager->registerPotionTypeRecipe(PotionTypeRecipe $recipe) : void
  • The following classes have been added:
    • BrewingRecipe
    • PotionContainerChangeRecipe
    • PotionTypeRecipe

Entity

  • The following classes have been added:
    • animation\ItemEntityStackSizeChangeAnimation
  • The following public API methods have been added:
    • object\ItemEntity->isMergeable(object\ItemEntity $other) : bool
    • object\ItemEntity->setStackSize(int $size) : void
    • object\ItemEntity->tryMergeInto(object\ItemEntity $other) : bool
    • ExperienceManager->canAttractXpOrbs() : bool
    • ExperienceManager->setCanAttractXpOrbs(bool $v = true) : void
    • Entity->getSize() : EntitySizeInfo
    • Living->isGliding() : bool
    • Living->isSwimming() : bool
    • Living->setGliding(bool $value = true) : void
    • Living->setSwimming(bool $value = true) : void
  • The following protected API methods have been added:
    • Entity->getBlocksIntersected(float $inset) : \Generator<int, Block, void, void>

Event

  • BlockSpreadEvent is now called when fire spreads to the positions of blocks it burns away.
  • BlockFormEvent is now called when concrete powder turns into concrete due to contact with water.
  • The following classes have been added:
    • BlockMeltEvent - called when ice or snow melts
    • BrewItemEvent - called when a brewing stand finishes brewing potions; this is called up to 3 times (once for each brewing slot, as needed)
    • BrewingFuelUseEvent - called when a brewing stand consumes blaze powder
    • ChestPairEvent - called when two chests try to form a pair
    • PlayerToggleGlideEvent - called when a player starts or stops gliding
    • PlayerToggleSwimEvent - called when a player starts or stops swimming
    • PlayerViewDistanceChangeEvent - called whenever a player alters their render distance or requests one for the first time when connecting

Item

  • The following public API methods have been added:
    • SplashPotion->getType() : PotionType
    • VanillaItems::AIR()
  • The following API methods have been deprecated:
    • ItemFactory::air() - use VanillaItems::AIR() instead

Player

  • The following public API methods have been added:
    • Player->hasBlockCollision() : bool
    • Player->setHasBlockCollision(bool $value) - allows controlling spectator-like no-clip behaviour without changing game mode
    • Player->toggleSwim(bool $swim) : bool - called by the network system when the client tries to start/stop swimming
    • Player->toggleGlide(bool $glide) : bool - called by the network system when the client tries to start/stop gliding

Server

  • The following public API constants have been added:
    • Server::DEFAULT_SERVER_NAME
    • Server::DEFAULT_MAX_PLAYERS
    • Server::DEFAULT_PORT_IPV4
    • Server::DEFAULT_PORT_IPV6
    • Server::DEFAULT_MAX_VIEW_DISTANCE

Utils

  • Config parsing errors are now always represented by ConfigLoadException and include the path to the file in the message.
  • Added TextFormat::MINECOIN_GOLD, and support for it to the various TextFormat methods.
  • The following public API methods have been added:
    • Utils::assumeNotFalse() - static analysis crutch to silence PHPStan errors without using ignoreErrors or @phpstan-ignore-line, which are both too coarse.
  • The following public API properties have been added:
    • Terminal::$COLOR_MINECOIN_GOLD
  • The following classes have been added:
    • ConfigLoadException
  • Fixed Random->nextSignedInt() to actually return a signed int. Previously it would return any integer value between 0 and 4,294,957,295.
  • Fixed Random->nextSignedFloat() to return a float between -1.0 and 1.0. Previously it would return any value between 0.0 and 2.0.
  • VersionString->getNumber() output is now structured differently to fix overflow issues caused by the old format.

World

  • The following classes have been added:
    • sound\BlastFurnaceSound - the sound made by a blast furnace during smelting
    • sound\FurnaceSound - the sound made by a regular furnace during cooking or smelting
    • sound\ItemUseOnBlockSound
    • sound\LecternPlaceBookSound
    • sound\PotionFinishBrewingSound - the sound made by a brewing stand when a potion finishes being brewed
    • sound\SmokerSound - the sound made by a smoker during cooking

Gameplay

Blocks

  • Fire now spreads.
  • Implemented lectern blocks.
  • Added missing sounds for hoeing grass and dirt.
  • Added missing sounds for using a shovel on grass to create grass path.
  • Pumpkins can now be carved using shears.
  • Brewing stands can now be used for brewing potions.
  • The visual appearance of a brewing stand now updates correctly when the contents of its inventory changes (adding/removing potions).
  • Added missing sounds for furnace, blast furnace and smoker.
  • Fixed ender chest not dropping itself when mined with a Silk Touch pickaxe.
  • Cobwebs now drop themselves when mined using shears.
  • The correct amount of fall damage is now taken when falling from a height onto hay bales.

Items

  • Dropped items of the same type now merge with each other.