Highlights
The latest Minecraft update, 1.20.40, brings bug fixes and experimental gameplay features, as well as improvements in parity between Java and Bedrock versions.
Continuing to provide support for Minecraft on a wide range of devices, the dedicated team of developers consistently releases updates. The most recent 1.20.40 update not only fixes various bugs, but also introduces experimental gameplay features and makes significant progress in aligning the game's Java and Bedrock versions. Although the highly anticipated next major update is not yet ready for release, the recent Minecraft Live event offered fans a preview of the exciting features to come, including the announcement of this year's Mob Vote winner.
Despite Minecraft's enduring popularity over the past decade, the game continues to expand thanks to the unwavering support from Mojang's development team. While the game regularly receives smaller updates throughout the year to address bugs and make minor adjustments for improved consistency between the two main editions, Mojang has now established a tradition of releasing substantial content updates annually. These major updates, presented with unique names, introduce a host of new features for players to enjoy and revamp core aspects of the game, such as terrain generation, caves, and even entire dimensions.
With the release of this year's Trails and Tales update in June, players may have to wait a while longer before Minecraft's next major update is ready. However, the newly launched 1.20.40 update brings a comprehensive list of changes aiming to enhance the player experience. It also includes some intriguing yet somewhat controversial experimental alterations. A significant number of parity changes have been made throughout the game, aligning the Bedrock version more closely with the Java Edition. Numerous adjustments have been made to various mobs, audio effects, entities, and gameplay features. Additionally, the update introduces experimental modifications to the villager trading system.
Villager trading has always been a highly profitable and influential aspect of the game. It allows players to easily obtain powerful weapons and gear at an early stage in Minecraft. Consequently, Mojang's attempts to weaken this feature have stirred controversy within the community since its initial proposal. The most recent update brings alterations to the acquisition of powerful enchanted books and introduces numerous adjustments to the trade offers made by villagers. However, it is important to note that these changes are currently optional and can only be accessed by manually enabling them in the experimental settings menu when creating a new world.
Developers and players have engaged in discussions about potential improvements to the acquisition of loot through Minecraft's villager trading. These current changes are considered experimental and are open to further modifications based on player feedback.
Vanilla Parity
Gameplay
Changed the default value of the Respawn Radius in the Advanced Settings to 10
Falling from a great height while in a Boat no longer deals fall damage (MCPE-152753)
Tweaked the boss bar HUD color (MCPE-43591)
Flowing Lava and Water mixing mechanics now match Java Edition (MCPE-41103)
Closing the inventory of Boat, Raft, or Minecart with Chest now emits vibrations
Mobs
Zombified Villager curing time is now randomized between 3 and 5 minutes, to match Java Edition
Zombified Villagers now have the correct biome overlays (MCPE-172377)
Camels can no longer dash while in Lava or Water
Iron Golems no longer spawn naturally in 2-block-high spaces where they would start suffocating (MCPE-173006)
Iron Golems and Snow Golems now have a crumbling-like particle effect when they are created
Cartographers no longer offer exploration maps as a trade item when not in the overworld
Audio
Guardians and Elder Guardians now make flopping sounds when on land (MCPE-26929)
The sound for picking up items is now played when using the ‘/give’ command
Stray Cats now play a sound when begging for food
Changes to Bottles (MCPE-157918)Bottles now emit sounds when filling from Water Blocks
Pouring water or potions from a Glass Bottle into a Cauldron emits the appropriate sound
Filling a Glass Bottle with Water or Potion from a Cauldron now emits the appropriate sound
Drinking from a Glass Bottle now emits the appropriate sound
Experimental Features
Villager Trade Rebalancing
To test these modifications, please enable the Feature Toggle in the Experiments Menu when creating a new world. We would like to express our gratitude to those who have shared their suggestions and feedback regarding the experimental trade change. Our aim is to rebalance the villager trade system and create a more equitable and enjoyable experience for all players. Please note that these changes are still in the experimental phase while we work on refining them. We value your input on these adjustments and encourage you to share your thoughts by visiting this link. We have been closely following the discussions surrounding the previous updates to Librarian and Wandering Trader and are excited to see the conversation continue.
Cartographers from various biomes offer unique maps for sale. By using these maps, one can easily navigate from one village to another, regardless of the village type.
Presently, cartographers have introduced 7 new map options for purchase, namely: Desert Village Map, Jungle Explorer Map, Plains Village Map, Savanna Village Map, Snow Village Map, Swamp Explorer Map, and Taiga Village Map.
Armorer
The Armorer's trades have been updated with many changes.
In terms of balancing the game, the primary modification pertains to the purchase of diamond armor. Now, in addition to emeralds, players are required to pay a modest quantity of diamonds. The objective behind this alteration is to reduce the attractiveness of the Armorer's diamond armor trades during the initial stages of the game when players have not obtained any diamonds yet. Conversely, this adjustment ensures that more experienced players who have dedicated time to gather diamonds still enjoy a significant advantage.
For those in the early stages of the game, Armorers remain a valuable resource for acquiring iron armor, shields, and emeralds.
Chainmail armor is exclusively sold by the secret Jungle and Swamp Armorers
The Savanna Armorer sells cursed diamond armor at reduced prices
The Taiga Armorer can swap one piece of diamond armor for another
Structure Loot
Certain Enchanted Books now have a high chance of generating in some structures:
Ancient Cities: Mending
Desert Temples: Unbreaking (I to III)
Jungle Temples: Unbreaking (I to III)
Fixes and Changes
Performance / Stability
Fixed a crash related to tessellation of water blocks
Fixed an issue where the game would lock up if a mob would move on a block with 0 friction (MCPE-173073)
Gameplay
Players are no longer affected by Arrow effects if the Arrow is blocked (MCPE-52904)
Villages in the End and Nether are no longer saved to the Overworld (MCPE-85954)
Players can no longer sometimes clip through blocks when gliding with Elytra into blocks (MCPE-73307)
Players can no longer sometimes clip through blocks when flying in Creative Mode and spamming the sneak button (MCPE-172785)
Mobs
Fixed a bug where the Sniffer ended digging as soon as item was created, not at the end of the specified dig duration
Camels no longer appear to slide when walking (MCPE-169666)
Camels no longer move their legs when standing still (MCPE-172846)
Camels no longer dash indefinitely when in Lava (MCPE-172369)
Blocks
Fixed a bug where the wrong side of Signs would sometimes be edited (MCPE-169067)
- Improved an uncommon bug with an incredibly low chance of occurrence (~0.000003%) that previously prevented Item Frames from properly dropping their item when hit or destroyed.
- Resolved the issue where the third person camera would pass through the lower section of the Cauldron (MCPE-173010).
Sculk Block no longer drops XP when mined with Silk Touch (MCPE-174656)
Items
Diagonal Banner patterns no longer get inverted when applied to a Shield (MCPE-169577)
Placing invalid items into offhand slot will no longer cause them to drop
Warped Fungus on a Stick is no longer held backwards in first person view (MCPE-169765)
Updated structure icons on Explorer Maps sold by Cartographers
Text-to-speech message for popup title/description is now played properly
User Interface
Improved the functionality by including a sprint button for Camels when the "sprint using the joystick" option is disabled (MCPE-172674). Issue resolved where the Sneak button partially obstructed the D-Pad Up button when utilizing touch controls (MCPE-38566).
Smithing Table no longer shows double overlapping tooltips for some slots (MCPE-168369)
Item names no longer overlaps with the absorption health bar (MCPE-152131)
Updated Brewing Stand interface to always stay within its background when scaled (MCPE-154385)
Improved disconnect message when trying to join a Realm when not a member
Autocompleting text now moves the caret to end of the line
Graphical
The glint on equipped enchanted armor is now less prominent, but its intensity becomes more noticeable as it fluctuates over time. Random lights no longer manifest in the world without a visible source (MCPE-169001).
Updated Add-On Template Packs
Updated Add-On templates for 1.20.40 with new resources, behaviors, and documentation are available to download at aka.ms/MCAddonPacks
Stability and Performance
The Sounds definition file sound_definitions.json will no longer crash the game if the wrong json type is used for a specific sound definition (MCPE-168913)
The /damage command with the "override" cause now causes damage through post hit invulnerability (MCPE-160290)
The recipe command color has been changed to white instead of blue (MCPE-173362)
Mobs
Added a new “query.is_in_lava” Query Function to Molang, to know if a mob is currently in Lava
Molang has been updated to version 1.20.40, in which the terms "block_property" and "has_block_property" have been replaced with "block_state" and "has_block_state". This change is specific to Molang expressions within packs that have a minimum engine version of 1.20.40 or higher.
Trade items no longer support the "biome" property to check villager biome types, the "is_mark_variant" filter can be used in the "filters" property instead to check the villager biome type
API
Released World.getMoonPhase, MoonPhase, and MoonPhaseCount v1.6.0
Camera APIs moved from beta to 1.6.0CamerasetCamera
fade
clear
CameraSetFacingOptions
CameraSetPostionOptions
CameraDefaultOptions
CameraSetLocationOptions
isSneaking
isSprinting
isSwimming
isClimbing
isOnGround
isInWater
addExperience
level
getTotalXP
xpEarnedAtCurrentLevel
totalXpNeededForNextLevel
resetLevel
isJumping
isFlying
All methods except "show" on ActionFormData, MessageFormData, and ModalFormData have been updated to be callable in read-only mode. The BlockInventoryComponentcontainer member variable now accurately indicates that it can be either a Container or undefined.
Fixed a versioning bug preventing @minecraft/server-ui module from working with @minecraft/server above version 1.2.0
WeatherType moved to 1.6.0Moved function setWeather to 1.6.0
Moved class EntityRemovedAfterEvent from beta to 1.6.0
Moved class EntityRemoveAfterEventSignal from beta to 1.6.0
Moved class EntityRemovedBeforeEvent from beta to 1.6.0
Moved class EntityRemoveBeforeEventSignal from beta to 1.6.0Moved event/property entityLoad from beta to 1.6.0
Moved enum EntityInitializationCause from beta to 1.6.0
Moved class EntitySpawnAfterEvent from beta to 1.6.0
Moved class EntitySpawnAfterEventSignal from beta to 1.6.0Moved event/property playerBreakBlock from beta to 1.6.0
Moved event/property playerBreakBlock from beta to 1.6.0
Moved class PlayerBreakBlockAfterEvent from beta to 1.6.0
Moved class PlayerBreakBlockAfterEventSignal from beta to 1.6.0
Moved class PlayerPlaceBlockAfterEvent from beta to 1.6.0
Moved class PlayerPlaceBlockAfterEventSignal from beta to 1.6.0
Moved class BlockEventSignalOptions from beta to 1.6.0Move isAir(): boolean from beta to 1.6.0
Move isLiquid(): boolean from beta to 1.6.0
Moved amount from beta to 1.6.0
Moved keepOnDeath: boolean from beta to 1.6.0
Moved clone(): ItemStack from beta to 1.6.0
Moved getTags(): string[] from beta to 1.6.0
Moved hasTag(tag: string): boolean from beta to 1.6.0
Moved setCanDestroy(blockIdentifiers?: string[]): void from beta to 1.6.0
Moved getCanPlaceOn(): string[] from beta to 1.6.0
Moved function getProperty to 1.6.0
Moved function resetProperty to 1.6.0
Moved function setProperty to 1.6.0
Moved getRotation from beta to 1.6.0
Move setRotation from beta to 1.6.0
The "minecraft:transformation" now restricts blocks from exceeding the 30x30x30 pixel limit, and the "minecraft:unit_cube" can no longer be translated or scaled. In the case of an invalid block, the "update" block will be displayed instead (MCPE-173799).
For Chest blocks, Trapped Chest blocks, Ender Chest blocks, and Stonecutter blocks, the state "minecraft:cardinal_direction" is now used instead of "facing_direction". This state includes string values ["south", "west", "north", and "east"] rather than the previous values [0, 1, 2, 3, 5, 6].
Items
Added a content error when attempting to load a damage sensor with an invalid "cause" value
Allow single value parsing for "minecraft:icon" item component
The Camel mob Dash Component can now be applied to rideable mobs other than Horse, Donkey, and Mule using “minecraft:dash”
Deprecated "minecraft:on_use_on" component starting in version 1.20.40
Entity Components
"behavior.random_search_and_dig" is now accessible for creators to unlock.
A new addition includes the "target_blocks" field, which allows creators to specify the list of blocks that the mob can dig on. If "target_blocks" is not specified, the default list will include Dirt, Grass, Podzol, Dirt with Roots, Moss, Mud, and Muddy Mangrove Roots.
The event 'on_item_found' now triggers both when an item is found and when digging is completed. Previously, the event would cause the digging process to prematurely stop.
The behavior "random_look_around_and_sit" now includes the exposed field "continue_sitting_on_reload" for Creators to utilize. This feature ensures that the Camel remains in a sitting position even after reloading.
“behavior.is_scenting” renamed to generic “behavior.timer_flag_1” and released to creators
“behavior.is_rising” renamed to generic “behavior.timer_flag_2” and released to creators
The content fragment after rewriting:
"behavior.is_feeling_happy" has been renamed as "behavior.timer_flag_3" and has been released to creators.
"behavior.timer_flag 1": Initiates an event when this behavior begins, and then waits for a specific duration before ceasing. In case of either timing out or being interrupted by another behavior, it triggers another event. The value returned by query.timer_flag_1 will be 1.0 on both the client and server while this behavior is active, and 0.0 otherwise.
Experimental Technical Updates
Script API
Added function getWeather
Added the chat(message: string) method
Changed ItemTypes.get to return ItemType | undefined
Changed source on ItemDefinitionTriggeredAfterEvent to be optional
north(steps?: number): Block | undefined;
east(steps?: number): Block | undefined;
south(steps?: number): Block | undefined;
west(steps?: number): Block | undefined;
offset(offset: Vector3): Block | undefined;
center(): Vector3;
BlockStatesMade get function return BlockStateType or undefined
getSculkSpreaderMade getSculkSpreader return SculkSpreader or undefined
Updated ExplosionAfterEvent and ExplosionBeforeEventgetUpdatedBlocks() will now return Block[]
setUpdatesBlocks(blocks: Block[]) now takes in a Block[]
Removed limits on the count and size of properties that can set on an entity or the world
Default values have been removed. getProperty will now always return undefined for unset properties
Dynamic property values are now limited to a maximum length of 32767 bytes.
The function removeDynamicProperty has been removed. Please use setDynamicProperty with a value of undefined to remove a property.
The function getDynamicPropertyIds has been included to retrieve an array containing all the dynamic property IDs utilized by the behavior pack on an entity or world.
The function getDynamicPropertyTotalByteCount has been added to provide the total count of bytes occupied by all the dynamic properties used by the behavior pack on an entity or world.
Adding PlayerInteractWithBlock + PlayerInteractWithEntity before & after events
Adding PlayerDimensionChangeBeforeEvent and PlayerDimensionChangeAfterEvent in beta
The entity now includes a new function called matches, which accepts EntityQueryOptions as its parameter. It will return true if the entity matches the given options, and false otherwise.
A new event called PlayerLeaveBeforeEvent has been implemented. This event triggers when a player decides to leave the server, but prior to the removal of the Player object.