
Changes:
Player Emotes
Several improvements have come to the emote system in Bedrock Edition!
Emote usage now appears in chat
The emote wheel now has four slots with an improved interface
Quick emoting with new hotkeys
Easier sorting of emotes
Creating a new character now automatically applies four default emotes
Vanilla Parity:
Improvements have been made with vanilla parity to align with Java Edition, especially with horse breeding, mobs, and blocks.
Gameplay
Fixed an issue where night could not be skipped if one or more players were on the death screen
Eating and drinking animations are now always centered, regardless of screen aspect ratio
Mobs
Breeding horses can now produce random variants
When breeding horses, the baby Horse now has a chance of being better than its parents in speed, jump strength, and health. This change is intended to make Horse breeding a viable way of getting great Horses, if a player starts with good parents and puts in enough time and Golden Carrots
Horses cannot be pushed over Fences covered by Carpets anymore
Ghasts’ sound volume will now fade the further they are from the playe
Villagers will now emit anger particles when hit by a player outside of a village
Fixed a bug where Zombified Piglins would spawn in the Nether in light levels above 11
Minecarts can now eject mobs into liquid blocks
Witches will now drink a Fire Resistance Potion when standing on a Campfire
Blocks
Bells that are connected to multiple blocks no longer drop when one block is broken
Note Block sound attenuation over a distance is now linear
Impact sounds of projectiles on Amethyst blocks and clusters are now audible
Dead Bush will now drop Sticks when broken with any tool except Shears, even those with the Silk Touch enchantment. Vines will drop nothing in the same situation
Experimental Features:
Added the Brush item
Added the Decorated Pot block
Added four Pottery Shards (Arms Up, Skull, Prize, and Archer)
Added the Suspicious Sand block
Added Suspicious Sand to the Desert Temple
Added Suspicious Sand to the Desert Well
Brush
The Brush is a craftable item you can use to brush things
Pottery Shards and Decorated Pots
Pottery Shards have pictures on them. They cannot be crafted and must be found in the world. Hint: you will need a Brush! By crafting four of these together you can create a Decorated Pot with a picture on each side.
You can also use Brick items instead of Pottery Shards in the crafting recipe. The sides that were made from Brick items will not have pictures.
Smash a Decorated Pot with any block-breaking tool to break it apart and get the Pottery Shards back! Or hit it with your fist to pick up the pot without breaking it.
Suspicious Sand
Desert Temples and Desert Wells now contain Suspicious Sand. This fragile block is hard to spot and easy to destroy, so be careful!
If you manage to find the Suspicious Sand and brush it with your Brush, you will extract objects that were buried long ago.
We're giving you an early look at these Archaeology features. We want to spend more time developing them. Please let us know where you think we can improve or expand!
Sniffer
The Sniffer is the mob vote winner of Minecraft Live 2022 and the first [HS1] extinct mob brought to life and added to the game
Sniffers cannot be tempted or tamed
Sniffers are passive friendly mobs
Sniffer sniffs in the air and occasionally dig for seeds
Torchflower
The Torchflower seed can be planted on farmland and grows into a flower
The seed can be used to breed two Sniffers
The full-grown flower can be harvested and replanted but can also be crafted into a dye
Fixes:
Stability and Performance
Fixed an issue where simultaneously pressing the "Mine" and "Place" button on any input device while targeting a Structure Block could cause the game to crash
Fixed a crash on Nintendo Switch when attempting to log in while set to local network mode
Fixed a crash that could occur when entering a 1.7.1.0 world in 1.8 or above
Gameplay
The player's crosshair now properly mines/interacts with items in front of them while swimming/gliding, rather than 1 block above their position
Players no longer take rapid damage when touching damaging blocks
Projectiles shot while swimming/gliding no longer spawn from above the player's position
Items dropped while swimming/gliding, manually or on death, no longer spawn from above the player's position
Mobs
Fixed a bug where an Allay holding a Lead wasn't able to be leashed unless the player held a full stack of 64 Leads in hand
Parrots will no longer shake while on a player riding a Horse that is turning mid-jump
Fixed a bug causing global entities (e.g. Ender Dragon and projectiles) to stop rendering when out of normal entity render distance
Blocks
Sounds from all Button types and Lever are now controlled by "Blocks" slider in Audio Settings
Redstone source can now power a single block from different sides at the same time
Destroying Mangrove Log or Mangrove Wood now properly cause leaves to decay
End Crystals occupying the same space as a block will no longer cause that block to disappear
Players are now able to place top Slabs in blocks that are only partially blocked by an entity
Players can no longer see through partial blocks when sneaking or riding in third person
Composter now always consumes an item when becoming full
Importing experimental blocks into a non-experimental world using the Structure Block will now correctly place unknown blocks, which are not interactable
Error messages about building outside the world height limits no longer appear when simply interacting with blocks at the world height limits from certain angles
Fixed a bug where Observers would not detect changes due to corrupted data
Hoppers now pull in items from above them through all blocks that have a lower height than a full block
Items
Crossbows now shake while charging arrows
Spawn eggs for Snow Golem, Wither, and Trader Llama now appear correctly in the inventory and hotbar
Written Books can now be moved in the inventory even when the player has identical Written Books
Touch Controls
Updated the How to Play screen with information on new touch controls
Changing input modes from Gamepad to Touch while an item is selected will return the selected to the inventory or drop it
Fixed an issue on the Furnace screen where double-tapping the output window caused other slots to become unselectable
Fixed a bug where stack splitting was automatically initiated on the first slot when opening a small Chest
Allowed left and right D-pad buttons to keep input when the forward button is pressed
Added the leave Boat button when the player falls from a height within in the Boat
Fixed an issue that prevented players from removing equipped armor by tapping on an item or block in the Creative inventory
Tweaked the keyboard interaction on Android devices for text input fields
User Interface
Fixed an issue where the "Mine" tooltip was appearing when targeting a block with a Trident in Creative game mode
Navigating right with controller left stick on the Marketplace sidebar now collapses it
Added a new 'Marketplace' icon to the Marketplace screen sidebar
Ocean Explorer, Woodland Explorer, and Treasure Maps now show the proper icon in the inventory
Fixed a bug where mouse scrolling on the Friend Options dropdown would not scroll the dropdown contents
Resolved an issue where graphical elements of the Sign-In/Sign-Up screen could extend beyond the bounds of the dialog container
When starting a new world in Pocket UI, removed the "Press Open Chat to open chat" message for players with text-to-speech turned off
Double-clicking on the Furnace output slot will no longer drop the item
Fixed a bug where moving the player or camera with a controller while text-to-speech for UI was turned on would cause the narrator to say "X of Y"
Fixed a bug where the Edit World screen couldn't be opened for a world if the corresponding world directory had a space in it
The loading screen no longer flickers when entering the Nether in immersive VR mode
The swap item animation now plays when switching hotbar items of the same type with the same durability
Spectator Mode
Phasing through blocks in third person view no longer makes the camera zoom in and out towards the player’s head
End Gateways can no longer be used in Spectator Mode
Realms
Added a Sign In button on the Realms screen if player is not yet signed in
Fixed the issue that the "Find Friends" button and the "Close Realm" buttons would be autofocused when the "Members" or "Subscription" tab was clicked
Fixed a bug where players were not able to create another world on Realms if the first Create World on Realms attempt was interrupted
Fixed a bug where players could see duplicate applied packs with unknown titles the first time they entered the Realms settings screen
Resetting a Realms World now correctly updates the World settings
Removed the Close button in the Play on Realm popup dialog when using controllers
Updated the reset/replace world confirmation text to make it clearer what each function does
Fixed the world list not updating with a new Realm immediately after accepting an invite
In Realms Settings->Members, the dropdown '...' menu can now be open/closed with the Enter key and navigated with arrow keys
Technical Updates:
Updated Add-On Template Packs
Updated Add-On templates for 1.19.70 with new resources, behaviors, and documentation are available to download at aka.ms/MCAddonPacks
General
Behavior packs with scripts can now be removed from worlds
Item loot table conditions are no longer ignored in-game when used inside functions
Carrots now display the proper name in item tooltips when used in can_place_on and can_destroy item components
In JSON formats 1.19.70 and later, blocks fail to load if the "condition" field in Block Permutations is not a valid Molang string
Crafting Table component no longer appends "tile." when defaulting to use block name for crafting table label
Wool Blocks
Wool has been flattened into separate blocks, namely:
white_wool
orange_wool
magenta_wool
light_blue_wool
yellow_wool
lime_wool
pink_wool
gray_wool
light_gray_wool
cyan_wool
purple_wool
blue_wool
brown_wool
green_wool
red_wool
black_wool
Commands, recipes, loot tables, etc. will still work with wool and an aux value or color state, but wool will not be suggested in the command prompt. Instead, the new wool block names will.
Commands
Fixed a crash with deferred command execution when the executing actor is removed before execution
Summon command no longer causes some entities to be spawned in at an angle
Removed support for field "data" in commands /clone, /execute, /fill, /setblock and /testforblock beyond version 1.19.70, eg. /setblock ~ ~ ~ minecraft:wool 1 will only have its equivalent /setblock ~ ~ ~ minecraft:wool ["color":"orange"] supported
Here are some additional examples[JW1] [JW2] [JW3] :
/setblock ~~~ green_wool [] [] is equivalent to the old 0
/setblock ~~~ wood ["wood_type": "oak"]
/setblock ~~~ coral ["dead_bit" : true , "coral_color" : "blue" ]
/setblock ~~~ coral_fan ["coral_fan_direction" : 1, "coral_color" : "pink"]
/setblock ~~~ wool ["color": "blue"]
/fill ~ ~ ~ ~5 ~5 ~5 gold_block [] replace air
More information about commands can be found at learn.microsoft.com/minecraft/creator/commands
Volume arguments no longer floor the selector's position
Selecting targets by volume will now select all entities whose hitbox collides with the volume box. This is versioned for 1.19.70 and later
Previous behavior works as expected on versions less than 1.19.70
Volume arguments for selectors (dx, dy, dz) now support float values
Rotation in the teleport command is now relative to the executor of the command instead of the target. Old usage of rotations in commands will stay relative to the target mob for backwards compatibility
Entity Properties
Fixed an issue where Entity Property value changes could be discarded if done by events fired as part of removal of active behaviors caused by other events
Mobs
Witch potion drinking and ranged attack behaviour is now defined in its .json file
The game will no longer create a content error when Bee spawn eggs are used on a Mob Spawner
GameTest Framework (Experimental)
Test
Added optional searchDistance parameter to assertEntityPresent(entityTypeIdentifier: string, blockLocation: BlockLocation, searchDistance?: number, isPresent?: boolean)
Added assertEntityInstancePresentInArea(entity: Entity, isPresent?: boolean) to check if an entity instance is present in the test area
Made the searchDistance parameter optional in assertItemEntityPresent
API (Experimental)
IMPORTANT BREAKING CHANGE: The classes Location and BlockLocation no longer exist in the beta script API. All usages of these classes have been changed to use the Vector3 interface (that is, { x: 1, y: 2, z: 3} objects)
Also, note that several changes were made to properties and get/set methods across objects (listed below) to make them more consistent in calling structure
World Events
Added event entityDie - It is fired when an entity dies
Modified projectileHit to be a readOnly property on the Events class
Player
Added method getSpawnPosition - Gets the spawnPoint position
Added property spawnDimension - Gets the spawnPoint dimension
Added method setSpawn(spawnPosition : Vec3, spawnDimension : Dimension) i Sets spawnPoint with a position and dimension
Added method clearSpawn - Sets the spawnPoint position and dimension to undefined
Renamed function tell to sendMessage
World
Renamed function say to sendMessage
Added method 'getDefaultSpawnPosition' - Gets the spawnPoint position
Added method 'setDefaultSpawn'(spawnPosition : Vec3) - Sets the spawnPoint position within 'overworld' dimension
BeforeChatEvent
Added function getTargets(): Player[] - Gets chat Player targets
Added function setTargets(players: Player[]) - Sets chat Player targets
Removed property targets
BeforeDataDrivenEntityTriggerEvent
Added function getModifiers(): DefinitionModifier[] - Gets entity definition modifiers
Added function setModifiers(modifiers: DefinitionModifier[]) - Sets entity definition modifiers
Removed property modifiers
BoolBlockProperty
Added function getValidValues(): boolean[] - Gets all valid boolean values for the BoolBlockProperty
Removed property validValues
Converted BlockHitInformation to an interface
ChatEvent
Added function getTargets(): Player[] - Gets chat Player targets
Removed property targets
Converted Color to an interface
DataDrivenEntityTriggerEvent
Added function getModifiers(): DefinitionModifier[] - Gets Entity definition modifiers
Removed property modifiers
DefinitionModifier
Added function getComponentGroupsToAdd(): string[] - Gets component groups that will be added with the DefinitionModifier
Added function setComponentGroupsToAdd(newGroups: string[]): void - Sets component groups that will be added with the DefinitionModifier
Added function getComponentGroupsToRemove(): string[] - Gets component groups that will be removed with the DefinitionModifier
Added function setComponentGroupsToRemove(removedGroups: string[]): void - Sets component groups that will be removed with the DefinitionModifier
Added function getTriggers(): Trigger[] - Gets event triggers of the DefinitionModifier
Added function setTriggers(newTriggers: Trigger[]): void - Sets event triggers of the DefinitionModifier
Removed property componentGroupsToAdd
Removed property componentGroupsToRemove
Removed property triggers
DirectionBlockProperty
Added function getValidValues(): Direction[] - Gets all valid direction enum values for the DirectionBlockProperty
Removed property validValues
Entity
Added function getViewDirection(): Vector3 - Gets view direction of the Entity
Added function getRotation(): XYRotation - Gets rotation of the Entity
Added function getVelocity(): Vector - Gets velocity of the Entity
Removed property viewDirection
Removed property rotation
Removed property velocity
Added function playAnimation(animationName: string, options?: PlayAnimationOptions)
Plays the specified animation for an entityReplaced general setVelocity call with methods to apply impulses to entities:
Added function clearVelocity(): void - Sets the current velocity of the Entity to zero
Added function applyImpulse(vector: Vector3): void - Applies impulse vector to the current velocity of the Entity
Added function applyKnockback(directionX: number, directionZ: number, horizontalStrength: number, verticalStrength: number): void - Applies knockback to the Entity in specified direction based on vertical and horizontal strength
Removed function setVelocity
EntityAgeableComponent
Added function getDropItems(): string[] - Gets items that drop when entity grows
Added function getFeedItems(): EntityDefinitionFeedItem[] - Gets items that can be fed to the entity
Removed property dropItems
Removed property feedItems
EntityBreathableComponent
Added function getBreatheBlocks(): BlockPermutation[] - Gets blocks entity can breathe in
Added function getNonBreatheBlocks(): BlockPermutation[] - Gets blocks entity can't breathe in
Removed property breatheBlocks
Removed property nonBreatheBlocks
EntityHealableComponent
Added function getFeedItems(): FeedItem[] - Gets healing items for the EntityHealableComponent
Removed property items
Converted EntityHitInformation to an interface
EntityRideableComponent
Added function getFamilyTypes(): string[] - Gets supported rider entity types
Added function getSeats(): Seat[] - Gets rider information for each seat
Removed property familyTypes
Removed property seats
EntityTameableComponent
Added function getTameItems(): string[] - Gets tame items of the EntityTameableComponent
Removed property tameItems
FeedItem
Added function getEffects(): FeedItemEffect[] - Gets effect of the FeedItem
Removed property effects
IntBlockProperty
Added function getValidValues(): number[] - Gets all valid integer values for the IntBlockProperty
Removed property validValues
ItemDurabilityComponent
Added function getDamageRange(): NumberRange - Gets the range of numbers that describes the chance of the item losing durability
Removed property damageRange
Converted NumberRange to an interface
ProjectileHitEvent
Added function getBlockHit(): BlockHitInformation - Gets block hit information from the ProjectileHitEvent
Added function getEntityHit(): EntityHitInformation - Gets entity hit information from the ProjectileHitEvent
Removed property blockHit
Removed property entityHit
StringBlockProperty
Added function getValidValues(): string[] - Gets all valid string values for the StringBlockProperty
Removed property validValues
ItemStack
ItemStack can now be constructed using a string identifier
Removed constructor parameter data
Removed property data
Removed function clearLore - To clear lore, call setLore with an empty array or undefined
Setting nameTag to an empty string will now clear the name tag
Setting nameTag to a string longer than 255 characters will now result in an exception
Setting amount greater than the maximum stack size will now clamp the value to the maximum stack size
Setting amount to a value less than 1 will now result in an exception
Item lore can now be cleared by calling setLore(undefined) or setLore([])
Fixed a bug where calling function ItemStack.getComponent or ItemStack.getComponents would fail on ItemStacks returned from EntityItemComponent.itemStack
Added read-only property getMaxAmount: number - Returns the maximum stack size for the item
Added read-only property isStackable: bool - Returns whether the item is stackable
Added function isStackableWith(itemStack: ItemStack): bool - Returns whether the item can be stacked with the given item
Added read-only property type: ItemType - Returns the type of the item
Added function clone(): ItemStack - Returns a copy of the item stack
Added property keepOnDeath: bool - Sets whether the item is kept on death
Added property lockMode: ItemLockMode - Sets whether the item can be moved or dropped
Added function setCanPlaceOn(blockIdentifiers?: string[]) - Sets which blocks the item can be placed on
Added function setCanDestroy(blockIdentifiers?: string[]) - Sets which blocks this item can destroy
ContainerSlot
Removed function clearItem - To clear the item, call setItem with undefined
Removed function clearLore - To clear lore, call setLore with an empty array or undefined
General changes to more consistently use methods when working with simple data-only objects vs. properties:
BeforeExplosionEvent
Added function getImpactedBlocks(): Vector3[] - Gets the blocks locations that are impacted the by the explosion
Added function setImpactedBlocks(blocks: Vector3[]): void - Sets the blocks locations that are impacted the by the explosion
Removed property impactedBlocks
BeforeItemUseOnEvent
Added function getBlockLocation(): Vector3 - Gets the location of the block being impacted
Removed property blockLocation
BlockInventoryComponent
Removed property location
BlockLavaContainerComponent
Removed property location
BlockPistonComponent
Added function getAttachedBlocks(): Vector3[] - Gets the blocks locations that are impacted by the activation of this piston
Removed property attachedBlocks
Removed property location
BlockPotionContainerComponent
Removed property location
BlockRecordPlayerComponent
Removed property location
BlockSignComponent
Removed property location
BlockSnowContainerComponent
Removed property location
BlockWaterContainerComponent
Removed property location
Added function getHeadLocation(): Vector3 - Gets the head location of the Entity
Removed property headLocation
ExplosionEvent
Added function getImpactedBlocks(): Vector3[] - Gets the blocks locations that are impacted the by the explosion
Removed property impactedBlocks
ItemStartUseOnEvent
Added function getBlockLocation(): Vector3 - Gets the location of the block being impacted
Added function getBuildBlockLocation(): Vector3 - Gets the location of the resulting build block
Removed property blockLocation
Removed property buildBlockLocation
ItemStopUseOnEvent
Added function getBlockLocation(): Vector3 - Gets the location of the block being impacted
Removed property blockLocation
ItemUseOnEvent
Added function getBlockLocation(): Vector3 - Gets the location of the block being impacted
Removed property blockLocation
NavigationResult
Added function getPath(): Vector3[] - Gets the locations of the blocks that comprise the navigation route
Removed property path
Player
Added function getHeadLocation(): Vector3 - Gets the head location of the Player
Removed property headLocation
Block
Added function isAir - Returns if the block is an air block (i.e. empty space)
Added function isLiquid - Returns if the block is a liquid (e.g., a water block and a lava black are liquid, while an air block and a stone block are not)
Added function isSolid - Returns if the block is solid (e.g., a cobblestone block and a diamond block are solid, while a ladder block and a fence block are not)
The following blocks now have an inventory component:
Barrel
Beacon
Blast Furnace
Brewing Stand
Dispenser
Dropper
Furnace
Hopper
Jukebox
Lectern
Smoker
BlockPermutation
BlockPermutation has been significantly refactored! Every BlockPermutation now share a unique JavaScript handle so exact equality (===
) will work for permutations that share exactly the same state values. We've also added utility methods that make interacting with permutations easier, which includes the removal of the XBlockProperty classes and now directly return properties (boolean | number | string) or a while collection of properties ( Record<string, boolean | number | string>)
Added method matches(blockName: string, properties?: BlockProperties): boolean which is used to match a block with optional states against a BlockPermutation
Added method withProperty(name: string, value: boolean | number | string): BlockPermutation; which returns a new block permutation with a given property set to a specific value. Throws if the provided data cannot be resolved as a valid block permutation
Added function static resolve(blockName: string, properties?: BlockProperties): BlockPermutation which resolve a BlockPermutation from a block name and optional states. Throws if the provided data cannot be resolved as a valid block permutation
Updated methods getProperty and getAllProperties to return values directly instead of wrapped into class objects. Example code:
Before:
const blockPermutation = MinecraftBlockTypes.stoneSlab.createDefaultBlockPermutation();
blockPermutation.getProperty(MinecraftBlockProperties.stoneSlabType).value = 'stone_brick';
blockPermutation.getProperty(MinecraftBlockProperties.topSlotBit).value = true;
Now:
const blockPermutation = BlockPermutation.resolve('minecraft:stone_slab', {
stone_slab_type: 'stone_brick',
top_slot_bit: true,
});
BlockProperties
Added new class to expose BlockPropertyType
BlockPropertyType
Added new class to track "definitional" data about block properties. This is how you can find which values are valid for each block property
Data-Driven Custom Blocks
Released block properties and permutations out of experimental in JSON formats 1.19.70 and higher
Added a content warning when loading world with more than 65536 custom block permutations. Custom block permutation counts are logged in debug log