Bedrock Edition 1.20.10

1.20.10 (1.20.11 on Xbox) is a minor update to released on July 11, 2023, which brings more parity from and fixes bugs.
==Additions==
===General===
;Experiments
*Added "Crawling" experimental toggle.
**Allow players crawl under 1 block gaps.
*Added "Recipe Unlocking" experimental toggle.
** Enable the new recipe unlocking system and the command.
;Options
*Added the slider "GUI Scale Modifier" to the accessibility section.
*Added "Extra Large GUI Scaling" accessibility and video option, to make the UI "bigger" (only works on some devices).
;Splashes
*Added a new splash text:
**Joule is neat too!
===Technical===
;JSON
*Released the following components out of experimental in JSON formats 1.20.10 and higher: 
**minecraft:cooldown item component.
**minecraft:repairable item component.
**minecraft:max_stack_size item component.
**minecraft:block_placer item component.
**minecraft:record item component.
**minecraft:shooter item component.
**minecraft:throwable item component.
**minecraft:projectile item component.
**minecraft:can_destroy_in_creative item component.
**minecraft:hover_text_color item component.
*Added unlock field to the recipe JSON format.
==Changes ==
===Blocks===
;Barrel
*Recipe now use planks instead of sticks to match .
;Concrete
*The IDs of concrete have now been split up into their own IDs.
;Decorated Pot
*If they crafted with at least one pottery sherd now have a hover tooltip displaying the pottery sherd and brick ingredients.
;Note Block
*Now produces the "harp" sound instead of "snare" using soul soil.
;Packed Mud 
*Can no longer mine faster with a shovel.
;Sculk Sensor
*Can now detect the following events: 
**Placing, rotating, or removing an item in an item frame or a glow item frame.
**Charging a respawn anchor.
** Scraping or applying wax to blocks of the copper block set.
**Switching a daylight detector to an inverted daylight detector or vice-versa.
** Adding food to a campfire.
** Adding or removing a music disc to a jukebox.
**Mud turning into clay.
**Harvesting sweet berries.
**Placing an eye of ender in an end portal frame.
** Bees entering or exiting a beehive or a bee nest.
**Interacting with composter.
**Attaching or detaching a lead from a fence.
**Attaching or detaching a lead from a mob.
**Dying a sheep.
**Picking glow berries.
**Farmland turning into dirt.
** Using a spawn egg on a monster spawner.
**Silverfish merging with blocks.
** Using a hoe on rooted dirt.
**Using a shovel to create dirt paths.
**Placing a door.
**Planting seeds in farmland.
;Shulker Box
*The IDs of shulker_box have now been split up into their own IDs.
===Command format===
; Block states
*Now "equals" (=) are used instead of "colons" (:) to match .
**Example: oak_log["pillar_axis":"x"] -> oak_log["pillar_axis"="x"]
; Observer
*Now uses the minecraft:facing_direction block state instead of facing_direction. 
**minecraft:facing_direction has six values ["down", "up", "north", "south", "east", "west"].
===Gameplay===
;Sneaking
* Sneak under 1.5 blocks tall is now available without the "Short Sneaking/Short Sneaking and Crawling" experimental toggle.
*Players can now be forced into sneak state while flying.
; Sound
* Camera position is now used for audio listening and ambient sounds.
** Previously the player position and rotation were sometimes used for audio listening.
;Rendering engine 
*Rendering of snow or rain is now based on camera position instead of player position.
=== General===
;Experiments
*Renamed the "Short Sneaking" experimental toggle to "Short Sneaking and Crawling". ("Removed/Changed" later in beta/preview 1.20.10.23)
**Now also contains the ability to crawl.
;Fog 
*Underwater and fog effects are now based on camera position rather than player position.
; Options
*"Chat message duration" accessibility option is now set to 10 seconds by default.
*"Text to Speech" narrator now reads item names when selecting items in the hotbar and the "/" button in the chat screen.
===Items===
;Boats
*Recipe no longer needs a shovel to match .
;Cobweb
*Now can't craft into strings to match .
===Mobs=== 
;Horse, Mule, and Donkey
*Can now be tempted using a golden apple, golden carrot, or enchanted golden apple. 
;Llama
* Can now be tempted using a hay bale.
;Magma Cube
*Can now be affected from Jump Boost.
===World generation=== 
;Chiseled Deepslate and Polished Basalt
*Can no longer be replaced by sculk.
;Polished Deepslate
* Can now be replaced by sculk.
;Falling Trees
*Now generate with mushrooms again.
===Technical ===
; Bedrock Editor
*Resolved an issue where the selection cursor was causing the glass block to render invisible.
*Added "Log Panel" for "Tool Mode" to display log messages. It can be accessed from the "View Menu" or by using the shortcut.
*Fixed a bug that prevented additional servers to be added from "Servers Tab" in "Editor mode".
*Fixed a bug that caused the gizmo to be hidden in "Crosshair Mode".
*Converted "properties" to "states" for custom blocks.
*Fixed a crash that could occur when attempting to change a mob’s scale while it was colliding with blocks.
* can now be used in the editor without the need to enable the "Beta APIs" experimental toggle.
; JSON
*Added deprecation error message for the part_visibility component.
*Fixed an issue where adding a minecraft:peek component to a custom entity would cause the game to crash.
*Updated the minecraft:geometry block component to allow bone visibility to be defined with a molang expression.
*Added a content error when minecraft:balloonable is used on minecraft:player to prevent issues as this component is not supported in this way.
*Invalid JSON objects within the entity component minecraft:behavior.nearest_attackable_target will no longer crash the game.
==Experimental==
These additions and changes are accessible by enabling the "Crawling", "Recipe Unlocking", "Beta APIs", and "Experimental Cameras" experimental toggles.
===Additions===
====Command format====
; 
*A new command that gives or takes (unlocks or locks) recipes for a player.
*Syntax: 
**/recipe <victim: target> give <recipe: string>
***Gives (unlocks) a specified recipe to a player.
**/recipe <victim: target> take <recipe: string>
***Takes (locks) a specified recipe from a player.
**If * is specified in <recipe: string>, it will unlock or lock all recipes for the player.
==== Gameplay====
;Crawling
*Added the ability to crawl.
** Created new player crawling animation.
**Players will now begin crawling when in a 1 block gap, similar to sneaking.
**Crawling is the same speed as sneaking.
**Players will automatically stand up or begin sneaking if they leave the 1 block gap.
*Players can now be forced into crawl state while flying.
===Changes===
====Command format====
;
*Changed camera command fade color to take integer values from 0 to 255 rather than 0.0 to 1.0 fractional values.
*Camera fade command now enforces fade duration limits; fade in, hold, and fade out must be between 0 and 10 seconds.
*Ensuring camera pitch can only be between -90 and 90 degrees.
*Added example:example_player_listener camera preset.
*Added example:example_player_effects camera preset.
*Rendering of experimental minecraft:free camera no longer affected by player state like night vision.
====Gameplay====
;Recipe book
*Recipes are now unlocked when the player collect materials for it.
**Picking up an item teaches the player how to craft that item.
*A new notification appears when the player find a new crafting material.
====Technical==== 
;API 
*Dynamic properties can now optionally have default values.
*Increased dynamic property registration limits:
**Actors: ~1KB -> 128KB
**World: ~10KB -> 1MB
*ScreenDisplay
**Removed clearTitle()- Use setTitle with an empty string to clear the title.
**Updated fadeInSeconds, staySeconds, fadeOutSeconds to fadeInDuration, stayDuration, fadeOutDuration on TitleDisplayOptions (seconds to ticks).
**Updated setTitle to reset the times per each new title.
**Added RawMessage support for setTitle, updateSubtitle, and setActionBar.
*Entity
**Added read-only property isGliding- Returns whether the player is gliding with elytra.
** Added read-only property isJumping- Returns whether the player is using the jump action.
**Added read-only property sFlying- Returns whether the player is flying (e.g. creative or spectator mode).
**Added read-only property isSprinting- Returns whether the entity is sprinting.
**Added read-only property isSwimming- Returns whether the entity is swimming.
**Added read-only property isClimbing- Returns whether the entity is climbing (e.g. player on a ladder or spider on a wall).
**Added read-only property isOnGround- Returns whether the entity is on the ground.
**Added read-only property isInWater- Returns whether the entity is in water.
**Added read-only property isFalling- Returns whether the entity is falling.
** Added read-only property fallDistance- Returns the current fall distance (used for calculating fall damage).
**Added function fly- Makes the player fly (e.g. creative or spectator mode).
**Added function stopFlying- Makes the player stop flying (e.g. creative or spectator mode).
**Added function glide- Makes the player glide with elytra.
**Added function stopGliding- Makes the player stop gliding with elytra.
** Added function swim- Makes the player swim.
**Added function stopSwimming- Makes the player stop swimming.
*Entity effects
**Updated function addEffect(effectType: EffectType | string, duration: number, options?: EntityEffectOptions): void to return void and to throw if the effect does not exist or the parameters are out of bounds.
**Updated function getEffect(effectType: EffectType | string): Effect | undefined to throw if the effect does not exist.
**Updated function removeEffect(effectType: EffectType | string): boolean to throw if the effect does not exist.
*BlockEvents
**Added events PressurePlatePushEvent, PressurePlatePopEvent, TargetBlockHitEvent, and TripWireTripEvent.
*ContainerSlot
**Removed function clone-.
*EntityHealableComponent
**Removed filters: FilterGroupproperty.
*EntityAttributeComponent
**Added effectiveMin: number Returns the minimum possible value for the component.
**Added effectiveMax: number Return the maximum possible value for the component.
** Renamed value property to defaultValue.
**Renamed current property to currentValue.
**Renamed setCurrent method to setCurrentValue.
*Added EntityHealthChangedAfterEvent It is triggered when any health change happens for an entity.
* System
**Replaced events with system.beforeEvents and system.afterEvents.
**Renamed event beforeWatchdogTerminate to watchdogTerminate and moved it to beforeEvents.
**Moved scriptEventReceive to afterEvents.
*MessageReceiveAfterEvent
**Removed property sourceType.
*ScriptEventSource
**Replaced enum MessageSourceTypewith a new enum ScriptEventSource.
*ScriptEventCommandMessageAfterEvent
**Changed property sourceType from MessageSourceType to ScriptEventSource.
**Increased maximum message length from 256 to 2048 characters.
*Dynamic Property identifiers are now limited to 1024 characters.
*Removed MinecraftEffectTypes defined in @minecraft/server.
*Moved several APIs to stable 1.30.
**Moving tryTeleport(location: Vector3, duration: number, options: ScriptTeleportOptions) to 3.0.
**Moving teleport(location: Vector3, options: ScriptTeleportOptions) to 3.0.
**Moved function getComponent to 3.0.
**Moved world event PlayerJoinAfterEvent to 3.0.
**Moved world event PlayerLeaveAfterEvent to 3.0.
** Moved world event PlayerSpawnAfterEvent to 3.0.
**Moved EntityComponent EntityHealableComponent to 3.0.
**Moved EntityComponent EntityHealthComponent to 3.0.
**Moved class FeedItem to 3.0.
** Moved class FeedItemEffect to 3.0.
**Moved addEffect(effectType: string | EffectType, duration: number, options: EntityEffectOptions) to 3.0.
**Moved getEffect(effectType: string | EffectType) to 3.0.
**Moved getEffects to 3.0.
**Moved removeEffect(effectType: string | EffectType) to 3.0.
**AfterEvents 
***Moved ButtonPushEvent to 3.0.
***Moved LeverActivateEvent to 3.0.
**Moved function spawnEntity to 3.0.
**Moved function spawnItem to 3.0.
*Spawnpoint updates
**Removed function clearSpawn.
**Removed property spawnDimension.
**Added function getSpawnPoint: DimensionLocation | undefined - Returns the player's spawn point.
**Added function setSpawnPoint(spawnPoint?: DimensionLocation): void - Sets the player's spawn point, or clears it if spawnPoint is undefined.
** Renamed function getDefaultSpawnPosition to getDefaultSpawnLocation.
**Renamed function setDefaultSpawn to setDefaultSpawnLocation.
**DimensionLocation
***Added new interface DimensionLocation - Represents a location in a dimension.
** Added hasParticipantfunction to ScoreboardObjective.
**The following functions in ScoreboardObjective can now accept Entity or string types as participants:
***getScore
***setScore
**removeParticipant
**Removed getScore, setScore from ScoreboardIdentity and Scoreboard.
* Removed the removeFromObjective function from ScoreboardIdentity.
*Raycasting
**Changed function getBlockFromRay.
***Changed return type from Block to BlockRaycastHit | undefined.
**Changed function getEntitiesFromRay.
*** Changed return type from Entity[] to EntityRaycastHit[].
**Changed function getBlockFromViewDirection.
***Changed return type from Blockto BlockRaycastHit | undefined.
**Changed function getEntitiesFromViewDirection. 
***Changed return type from Entity[] to EntityRaycastHit[].
**Added interface BlockRaycastHit.
**Added interface EntityRaycastHit.
*Renamed leverActivate after event to leverAction.
**Removed class EntityHitAfterEvent.
**Added class EntityHitBlockAfterEvent.
** Added class EntityHitEntityAfterEvent.
** Class WorldAfterEvents.
***Removed property entityHit.
***Added property entityHitBlock.
*** Added property entityHitEntity.
** Added helper function isValid to several classes in order to check if the object is valid. This can safely be used on any handle to a native object before accessing or using the object, to ensure the underlying object still exists and is valid to use.
***Block (checks the block is a valid position in bounds and the containing chunk is loaded & ticking).
*** Container (checks the relevent container inventory exists and is valid).
***Effect (checks the owning entity is valid and the effect exists on that entity).
***ScreenDisplay (checks the owning player is valid).
***ScoreboardObjective (checks the objective entry exists and is attached to a valid scoreboard).
***Entity (checks that the entity exists in the world. Will return true if the entity is dead). 
**** Player
****SimulatedPlayer (Note simulated players do not automatically get removed from the world, so isValid will return true long after they are dead).
***ContainerSlot (checks the item context is valid: Container exists in the world, such as the owning entity, and the slot is within the container bounds).
****Already existed as a readonly property, changed to a method for consistency.
***Component
****EntityAttributeComponent (checks the owning entity is valid and the attribute exists on the entity).
****BlockLiquidContainerComponent (checks block exists and is a valid cauldron type).
*****Added read only method isValidLiquidwhich checks if the liquid in the cauldron matches the component in question (EG. BlockLavaContainerComponent checks for lava liquid).
****EntityComponent (checks the owning entity exists).
****ItemComponent (checks the owning item exists).
*World
**Renamed getTime to getTimeOfDay.
**Renamed setTime to setTimeOfDay.
**setTimeOfDay now accepts a TimeOfDay enum as an argument.
**The timeOfDay argument for setTime must now be within 0-23999 (inclusive).
**Added getDay.
*Updated the following enums' values to be PascalCase instead of camelCase.
**ClipboardMirrorAxis
**ClipboardRotation
**HttpRequestMethod
**FormCancelationReason
** Direction
**DisplaySlotId
**EntityLifetimeState
**FluidType
**ObjectiveSortOrder
**ScoreboardIdentityType
**ScriptEventSource
**SignSide
**WatchdogTerminateReason
**WeatherType 
;JSON
*Items with the minecraft:block_placer component will now place blocks with correct orientation.
*Items in format version 1.20.10 and above with the minecraft:throwable component will trigger "item use" events when thrown.
*Custom items with minecraft:block_placer will no longer place certain blocks in the wrong location.
*Changed minecraft:shooter to only consume ammo when charging the item if charge_on_draw is set true.
*Deprecate minecraft:render_offsets component in JSON formats 1.20.10 and higher.
==Fixes==
;Others
*Players will now always spawn projectiles from the camera position when sneaking, swimming, or gliding.
* Loyalty tridents will always return to the player's camera.
* Players will now spawn particle effects when eating in the correct position if they are sneaking, swimming, or gliding.
*Players will no longer suffocate when short sneaking in certain scenarios.
*Players without permission to open/close containers can no longer interact with chiseled bookshelves.
*Switch: Fixed issues with highlighted blocks and mob shadows appearing through the pumpkin head overlay.
*Shields no longer flicker when held in both hands on RTX.
*Fixed sleep and camera fade effect not covering the screen until after first-person rendering happens.
* Fixed black pixels being generated on maps when "Client-Side Chunk Generation" is enabled.
*Command positions will now use the current position/rotation when running mcfunctions via .
*The paper doll will now show up properly when crawling.
*Suspicious blocks now display correctly on maps.
*Shield no longer clips inside the armor stand model while in the riposte pose.
*Sniffer can no longer dig up seeds in the air.
*Fixed a crash that could happen when running the go_and_give_items_to_noteblock goal.
*Custom items with minecraft:block_placer will no longer place certain blocks in the wrong location.
*Fixed command to shake camera without also shaking player.
*Reordered the gamepad tooltips for UI screens so that the buttons align with the same side as a controller.
*Fixed an issue where legacy crawling was not working correctly with the sneak and crawl toggle turned off.
*Fixed bug where scoreboard values would not be updated on the client when updated from script.
*Fixed a crash.
==References==
pt:Edição Bedrock 1.20.10
zh:基岩版1.20.10