Bedrock Edition beta 1.20.0.20

**Beta 1.20.0.20** (Android) or **Preview 1.20.0.20** (Windows, iOS, iPadOS, Xbox) is the first beta/*Preview* version for Bedrock Edition 1.20.0, released on April 12, 2023 which adds pitcher plants, sniffer eggs, brought more parity from *Java Edition*, and fixes bugs.

## Additions

### Blocks

Pitcher Plant
* A type of plant which grows from the pitcher pod after 4 stages (5 stages in total).
* Can be obtained by breaking a fully grown pitcher crop.
* Can be crafted into a cyan dye.
* Cannot be placed in a flower pot.

Sniffer Egg
* The sniffer egg can be found in the suspicious sand loot table found at warm ocean ruins.
* The sniffer egg is dropped when two sniffers breed.
* The sniffer egg hatches into a snifflet.
	+ When placed above a moss block, it will hatch after approximately 10 minutes.
	+ On all other blocks, it will hatch in approximately 20 minutes.

### Items

Pitcher Pod
* Can be planted on farmland and grows into a pitcher plant.
* Can only be obtained if a sniffer digs up a pitcher pod.
* Drops pitcher plant when fully grown, otherwise drops itself.

## Changes

### Blocks

Carpet
* The ID's of `carpet` have now been split up into their own ID's.

Coral
* The ID's of `coral` have now been split up into their own ID's.

Dead Bush
* Can now be placed on grass blocks and moss blocks.

Pistons
* Iron bars and glass panes can now be connected.

Sculk Sensor
* The sounds emitted by players and mobs stepping, falling, jumping, or landing on top of sculk sensors are now affected by the "Players" sound slider.

Torchflower
* Now compostable.
* Now spawns randomly on the block when placed by players.
	+ Hitboxes are now adjusted accordingly.
* Now using pick block on farmland gives itself instead of seed.
* Can now be used to craft suspicious stew.
* Now available without the "Sniffer" experimental toggle.

**Cauldron**

* Removed redundant ‘lava\_cauldron’ block that could be placed using commands (MCPE-39974)

### General

Death screen
* Added a new camera effect.

Experiments
* Removed the "Sniffer" experimental toggle.

Options
* Screen reader now describes function of "delete world" button in storage menu.
* Tweaked the contrast of the text inside of header for list of worlds in storage settings menu.

Splashes
* Added the "Enter the Render Dragon!" splash text.

### Items

Map
* The color for black terracotta now matches *Java Edition*.

Shield
* Can now be combined with banner on crafting grid to apply patterns on it.
	+ The banner is consumed on use.
	+ A Shield can be combined with a banner only if no pattern was previously applied.

### Mobs

Sniffer
* Now available without the "Sniffer" experimental toggle.
* Now spawns an sniffer egg when bred, instead of producing a snifflet.
* Now you can also find the seeds of the pitcher plant.

### World generation

Woodland Mansion
* Woodland mansion's entrance now uses cobblestone slabs.

### Technical

Add-ons
* Fixed a bug that caused player capes to stop flapping when moving forward but looking sideways in the `cape_flap_amount` by switching the rotation used from the player's looking rotation to the player's body rotation. (MCPE-153446)

Bedrock Editor
* Removed additional deprecated blocks and updated to sort blocks alphabetically.
* Fixed molang animation pausing in editor for guardian mobs.
* Fixed Editor player dying in tool mode.
* Fixed disabled command execution for `/execute` and command blocks.
* Closed emoting and achievement loopholes in editor.

Commands
* When typing a slash command, auto-complete no longer suggests block-states that are already part of the typed command. (MCPE-168055)
* Improved performance when preparing commands.

JSON
* Custom items using JSON formats 1.16.100 and formats past 1.17.0 can be loaded without the "Holiday Creator Features" toggle if there are no holiday components used.
* The `minecraft:friction` component is no longer ignored when calculating ground friction.
* Items with the entity placer item component will now successfully create the actor on air blocks if the `dispense_on` field is empty.
* Items with the entity placer item component can now be used on a monster spawner to change the spawner's actor spawn type. The item must have a format version of at least 1.19.80.
* Removed the non-functional `on_repaired` parameter from the `minecraft:repairable` item component.

Molang
* There is now a limit on the amount of nested sub-expressions each molang expression can have.

## Experimental

These additions and changes are accessible by enabling the "Next Major Update", "Beta APIs", and "Upcoming Creator Features" experimental toggles.

### Additions

#### Technical

Add-ons and script engine
* Added experimental support for `BlockTraits` in block JSON. `BlockTraits` are a shortcut for creators to add vanilla block states and setter functions to data-driven blocks.
	+ Can parse `PlacementDirection` ("`minecraft:placement_direction`") `BlockTrait` (adds the "`minecraft:cardinal_direction`" `BlockState` and `onPlayerPlace` setter function).
	+ Can access the `minecraft:cardinal_direction` state on blocks that apply the `placement_direction` trait in `block_property` molang queries and `set_block_property` event responses.

### Changes

#### Blocks

Amethyst Cluster, Bell, Buttons, Coral, Rails, and Snow
* Now can only be placed on full faces of blocks.

Decorated Pot
* No longer provide full support on their top face.

Hanging Sign
* Decreased the maximum number of characters allowed, while increasing their font size. (MCPE-163337)
* Arrows no longer get stuck shaking violently at the bottom. (MCPE-164249)
* Hanging signs attached to the bottoms of decorated pots now attach with a v-shaped chain to the pot. (MCPE-168047)
* Increased the volume of their sounds. (MCPE-163554)
* Crimson, warped, and bamboo hanging signs now have custom sounds to match their wood type. (MCPE-164246)

Suspicious Sand and Suspicious Gravel
* Do not drop anymore when falling on top of daylight detectors, signs, banners, heads, conduits, campfires, sculk sensor, or calibrated sculk sensor. (MCPE-167163)

#### Items

Brush
* Can now be enchanted with Mending, Unbreaking, and Curse of Vanishing enchantments.
* The brush now displays a tooltip when aimed at suspicious blocks on touch devices.
* Now a unique sound will be played when trying to brush non-suspicious blocks.
* Now dealt damage upon brushing brushable blocks. No damage is taken when breaking blocks. (MCPE-167263)
* Use of a brush will no longer be interrupted if clicking the left mouse button while brushing (holding right mouse button). (MCPE-167226)

Potions and Tipped Arrows
* Changed colors of following potions (all forms) and tipped arrows:
	+ Fire Resistance
	+ Harming
	+ Invisibility
	+ Leaping
	+ Night Vision
	+ Poison
	+ Slowness
	+ Strength
	+ Swiftness
	+ Turtle Master
	+ Water Breathing

Pottery Shards
* Miner pottery shards can now be found as loot when brushing suspicious sand in desert pyramids. (MCPE-168921)
* Shelter pottery shard now has the correct display string. (MCPE-168836)

Smithing Template
* Untrimmed armor pieces now render correctly in-hand and in the world when carrying an equivalent armor piece with trim.
* When swapping a trimmed armor piece with an equivalent piece without trims, both items now render correctly in the HUD hotbar.
* When swapping a trimmed armor piece with an equivalent piece without trims, both items now render correctly in UI-slots.

#### Mobs

Bamboo Raft and Bamboo Raft with Chest
* Mobs are now correctly positioned above the surface of bamboo rafts when riding them.

Camel
* Now straighten their heads after sitting down, instead of looking up or down. (MCPE-163501)
* Camels' heads no longer clip into passengers when looking up. (MCPE-164719)
* The Camel's dash bar is now displayed in pocket UI as well. (MCPE-163475)
* Camel's dismount hint is now properly localized. (MCPE-166505)

#### World generation

Cherry Grove
* Can no longer generate with invisible double tallgrass blocks above pink petals. (MCPE-168829)
* No longer generates with dandelions. (MCPE-168075)

#### Technical

Scripting
* System Events
	+ Further separation of events into distinct `before*` and `after*` handling, with some restrictions on the execution of state updates in a before event.
* Renamed Scripting Events
	+ Before Events renamed to `*BeforeEvent` and event signals renamed to `*BeforeEventSignal`.
		- Example: `BeforeItemUseEvent` renamed to ItemUseBeforeEvent and `BeforeItemUseEventSignal` renamed to `ItemUseBeforeEventSignal`.
	+ Other events renamed to `*AfterEvent` and event signals renamed to `*AfterEventSignal`.
		- Example: `WeatherChangedEvent` renamed to `WeatherChangedAfterEvent` and `WeatherChangedEventSignal` renamed to `WeatherChangedAfterEventSignal`.
	+ `chat` event renamed to `chatSend`.
	+ `events.beforeChat` renamed to `world.events.beforeChatSend`.
	+ `events.chat` renamed to `world.events.chatSend`.
	+ `BeforeChatEvent` renamed to `ChatSendBeforeEvent`.
	+ `BeforeChatEventSignal` renamed to `ChatSendBeforeEventSignal`.
	+ `ChatEvent` renamed to `ChatSendAfterEvent`.
	+ `ChatEventSignal` renamed to `ChatSendAfterEventSignal`.
	+ Fixed a bug where `resolve()` would fail to resolve custom block properties.
	+ Renamed `scoreboard` to `Entity.scoreboardIdentity`.
	+ Item Events
		- The `ItemStartUseOnEvent` now only fires for the first block that is interacted with when performing a build action.
		- The `ItemUseOnEvent` now only fires if the item is successfully used on a block.
		- `ItemUseOnEvent` property `blockLocation: Vec3` has been changed to `block: Block`.
		- `ItemStartUseOnEvent` property `blockLocation: Vec3` has been changed to `block: Block`.
		- `ItemStopUseOnEvent` property `blockLocation: Vec3` has been changed to `block: Block`.
		- `ProjectileHitEvent` property `faceLocation: Vec2` has been changed to `faceLocation: Vec3` - This position is relative to the bottom north-west corner of the block.
		- `ItemUseOnEvent` property `faceLocation: Vec2` has been changed to `faceLocation: Vec3` - This position is relative to the bottom north-west corner of the block.
	+ Entity
		- Added interface `teleportOptions {dimension?: Dimension, rotation?: Vector2, keepVelocity?: boolean, facingLocation?: Vector3, checkForBlocks?: boolean}`.
		- Added interface `Vector2 {x: number, y: number}`.
		- Added function `tryTeleport(location: Vector3, teleportOptions?: teleportOptions) : boolean` - Attempts to teleport the entity and returns false if the entity is unable to teleport safely (blocks surrounding teleport location or unloaded chunk).
		- Changed function teleport to `teleport(location: Vector3, teleportOptions?: teleportOptions) : void` - Teleports an entity.
	+ Changed function `setRotation` to `setRotation(rotation: Vector2) : void` - Sets the entity's rotation.
	+ Changed function `getRotation` to `getRotation() : Vector2` - Gets the entity's rotation.
	+ Updated function `addTag(tag: string): boolean` - The tag must be less than 256 characters.
	+ Updated method kill to return boolean instead of void. If return value is true, entity can be killed, otherwise false.
	+ Added interface `EntityApplyDamageOptions`. Additional options about the source of damage to use as input in `applyDamage`.
	+ Added interface `EntityApplyDamageByProjectileOptions`. Additional options about the source of damage to use as input in `applyDamage` in case of projectile damage.
		- Updated method `applyDamage`. Renamed parameter source to options. Parameter type also changed from `EntityDamageSource` to `EntityApplyDamageOptions | EntityApplyDamageByProjectileOptions`.
	+ `SimulatedPlayer`.
		- Changed function `getHeadRotation` to `getHeadRotation() : Vector2` - Gets the simulated players head rotation.
	+ `TitleDisplayOptions` will now accept floating point values.
	+ Added new `WorldSoundOptions` and `PlayerSoundOptions` interface types for use with the `playSound` and `player.playSound` respectively.
		- `playSound` now requires a location argument.
		- When calling `playMusic` and `queueMusic`, an error will now be thrown if *volume* is less than `0.0`.
		- When calling `playMusic` and `queueMusic`, an error will now be thrown if *fade* is less than `0.0`.
		- When calling `playSound`, an error will now be thrown if *pitch* is less than `0.01`.
		- When calling `playSound`, an error will now be thrown if *volume* is less than `0.0`.
		- When calling `playSound`, an error will now be thrown if *pitch* is less than `0.01`.
		- When calling `playSound`, an error will now be thrown if *volume* is less than `0.0`.
	+ Removed `dye_powder` item component.
	+ Entity objects now persist across dimension changes and chunk reloading. This means that if you have a reference to an invalid entity, it will become usable once the entity has been transferred or reloaded. You can check whether an entity is loaded or unloaded by reading its `lifetimeState` property.
	+ Added `read-only` property `lifetimeState` - Returns the lifetime state of the entity. Valid values include *loaded* and *unloaded*.
	+ `ItemDefinitionTriggeredEvent`
		- Renamed property item to `itemStack`.
	+ `ItemStartUseOnEvent`
		- Renamed property item to `itemStack`.
		- Replaced function `getBlockLocation` with `read-only` property `blockLocation: Vector3`.
		- Removed function `getBuildBlockLocation`.
	+ `ItemStopUseOnEvent`
		- Renamed property item to `itemStack`.
		- Replaced function `getBlockLocation` with `read-only` property `blockLocation: Vector3`.
	+ `ItemUseEvent`
		- Renamed property item to `itemStack`.
	+ `BlockHitInformation`
		- Replaced properties `faceLocationX` and `faceLocation` with `read-only` property `faceLocation: Vector2`.

## Fixes

Blocks
* Wooden logs generated in woodland mansions now have the correct facing. (MCPE-168387)
* Removed redundant "lava cauldron" block. (MCPE-39974)

Gameplay
* Fixed an issue where a piston could become invisible in rare cases.
* Players no longer take fall damage when falling through water at high speeds. (MCPE-152485)
* Players no longer fall through farmland blocks after jumping on them.
* Players no longer fall through mud blocks or farmland blocks if they are standing on the block as it becomes a complete block. (MCPE-164677)
* Fixed an issue where placing blocks while sneaking on an interactable block was not working as intended with client authoritative movement. (MCPE-168280)
* Fixed an issue where an armor stands pose would not change when right clicked while the player has sneak held and flying. (MCPE-168548)
* Weighted pressure plates now update their signal strength immediately when multiple items are placed on top. (MCPE-156773)

General
* Fixed an issue where a locally hosted dedicated server was not found by clients on the same machine.
* Fixed a bug that caused player capes to stop flapping when moving forward and looking sideways. (MCPE-153446)
* Sugar cane no longer generates air pocket when generated underwater. (MCPE-161096)
* Added a progress handler when loading into a world that will wait up to a total of 15 seconds for the primary users appearance to load.
* Lowered the time it takes to start up and load into the start screen.
* Broken and unbroken elytra now render in-hand, in the world, and in item frames with the correct icon. (MCPE-19700)
* Fixed a crash affecting some marketplace packs preventing them from loading.

Graphical
* Fixed an issue in RTX where underwater light shafts from the moon would originate from the opposite angle of the moon sprite. (MCPE-118898)

Mobs
* Ghasts now shoot fireballs out of their mouth instead of at eye level. (MCPE-35202)
* Boots do not z-fight anymore when worn by humanoid mobs and armor stands.
* The "leg" and "belt" parts of leggings do not z-fight anymore when worn by humanoid mobs and armor stands.

Multiplayer
* iOS now requests "Local Network" access in order to find games on the local network.

Player
* After choosing the main menu option on the death screen, the player hitbox will be the correct size when returning to that world. (MCPE-167045)

User Interface
* Loading animation for adding friends is now the correct size. (MCPE-159261)
* The block type icon now appears in the command block UI screen. (MCPE-159970)
* Don't show retry cloud sync prompt when encountering an out of space error. (MCPE-162455)
* Screen UI now always has a focus in control when using a controller.
* Fixed a bug where the crosshair could be visible on the new death screen.
* Fixed a bug where text formatting codes would be shown on the new death screen.
* Fix bug where respawning in VR sometimes softlocked the player on the death screen.
* Changed the overlay color on the new death screen in full VR.
* Doubled the resolution of the world thumbnails.
* Changed the world tag to no longer display "-experimental" on worlds that only use the "Holiday Creator Features" experiment.

## References

1. ↑ "Minecraft Beta & Preview - 1.20.0.20" – Minecraft Feedback, April 12, 2023.
2. ↑ "Minecraft Preview 1.20.0.20" by Jay Wells. Minecraft.net, April 12, 2023