Bedrock Edition beta 1.16.100.56

**Beta 1.16.100.56** is the seventh beta version for Bedrock Edition 1.16.100, released on September 17, 2020, which makes technical changes, and fixes bugs.

## Changes

### General

Add-ons and script engine
* Added `minecraft:placement_filter` component which allows the player to set conditions for where the block can be placed.
* Added serialization to Block Descriptor.
* Added static `anyMatch` functions to BlockDescriptor to compare a list of BlockDescriptors against: `Block*`, `BlockLegacy`, or `BlockDescriptor`.
* Added a function to compare two BlockDescriptors.
* Changed the BlockDescriptor BlockLegacy member variable to a Block\*, to set the block states during deferred block resolution and get the block with the states set.
* Removed all the existing Block\* json parsing.
* Added unit tests to verify parsing and serializing block descriptors.
* Added unit tests to verify comparing a BlockDescriptors against each other.
* Added unit tests to verify getting a block from BlockDescriptor with the states set.

Experimental Gameplay
* Added "Experimental Add-On Features" toggle.

Technical
* `DataDrivenBlockEvents`
	+ Adds support for parsing and performing the following event responses:
		- Added the `set_block_at_pos` event response.
		- Spawn Loot.
		- Set Block.
	+ Added support for the `on_interact trigger` component.
		- Added support for the `on_player_placing` trigger component.
		- Also added MoLang queries for `cardinal_block_face_placed_on` and `cardinal_player_facing` for getting placement context.

* `DataDrivenBlockModels`
	+ Added the first pass of the new data driven block tessellation pipelin.
	+ Added the `minecraft:geometry` component to allow using a block model for rendering.
	+ Added the `minecraft:unit_cube` component to allow using a default unit cube for rendering. Unit cubes get some extra effects like ambient occlusion and face removal.
	+ Added the `minecraft:material_instances` component to allow mapping faces and `material_instances` in a geometry file to an actual material.

* `DataDrivenBlockModels` - `SmoothLighting`
	+ Fixed smooth lighting and ambient occlusion with new data driven blocks.

* `ExecuteCommand`
	+ Added support to item json events for the `execute_command` keyword.

* Items
	+ Created `RepairableItemComponent` that data-drives how an item is repaired in game.
	+ Renamed and split item ID to be in parity with the Java item IDs.
	+ Added new `BlockRaycastComponent` that can override the AABB used for outlines and raycasting.
	+ Added new `BlockCollisionComponent` that can override the AABB used for entity collision.
	+ Added new `BlockPropertyComponent` that can replace the blockProperties : `Unwalkable`, `Infiniburn`, `PreventsJumping`, `Immovable`, `BreakOnPush`, `OnlyPistonPush` and `BreaksWhenHitByArrow`.
	+ Added new `BlockQueuedTickingComponent` that triggers events for a block on a range of time set by the creator.
	+ Added new `BlockRandomTickingComponent` that triggers events for a block randomly.
	+ Added a Rotation Component that allows a block to rotate The component only allows axis-aligned rotations.
	+ Adds the base implementation of the `CraftingTableComponent`.
		- Allows the creation of custom crafting tables.
		- Currently only supports 3x3 grids.

* Records
	+ Items can now be made records to play music in jukeboxes. Their component variables:
		- `sound_event` A string value corresponding to a sound event in the game code. This string must be one these for music to play: "13", "cat", "blocks", "chirp", "far", "mall", "mellohi", "stal", "strad", "ward", "11", "wait", "pigstep"
		- `duration` A float value that determines how long particles are spawned from the JukeBox Block, should approximately match length of sound event.
		- `comparator_signal` An integer value that represents the strength of the analogue signal, used by the Comparator Block.

* `RunCommand`
	+ Added support to entity json events for the run\_command keyword alongside the current add and remove keywords.
	+ Updated the following components to parse and use BlockDescriptor instead of Block\*: `BlockBreakSensorComponent`, `BlockListEventMap`, `BreathableComponent`, `BreedableComponent`, `BuoyancyComponent`, `EntityPlacerItemComponent`, `PreferredPathComponent`, `SeedItemComponentLegacy`.
	+ Updated the following features to parse and use BlockDescriptor instead of Block\*: `NoSurfaceOreFeature`, `OreFeature`, `SingleBlockFeature`.
	+ Updated the following goal definitions to parse and use BlockDescriptor instead of Block\*: `GoalDefinition`, `RaidGardenGoal`, `VanillaGoalDefinition`.
	+ Updated the following surfaces code to parse and use BlockDescriptor instead of Block\*: `MesaSurfaceAttributes`, `SurfaceMaterialAdjustmentAttributes`, `SurfaceMaterialAttributes`.
	+ Updated the following tests to reflect the changes from updating code to use BlockDescriptors: `BuoyancyComponentServerTests`, `FeatureHelperTests`, `NoSurfaceOreFeatureTests`, `OreFeatureTests`, `SingleBlockFeatureTests`.
	+ Updated the following trees to parse and use BlockDescriptor instead of Block\*: `AcaciaTreeCanopy`, `AcaciaTreeTrunk`, `FallenTreeTrunk`, `FancyTreeCanopy`, `FancyTreeTrunk`, `MegaPineTreeCanopy`, `MegaTreeCanopy`, `MegaTreeTrunk`, `PineTreeCanopy`, `RoofedTreeCanopy`, `SimpleTreeCanopy`, `SimpleTreeTrunk`, `SpruceTreeCanopy`, `TreeHelper`.

* Schema
	+ Split `allowed_blocks` into `use_on` and `dispense_on`.
	+ `use_on` specifies what blocks an entity placer item is allowed to be used on, omit to allow all blocks.
	+ `dispense_on` specifies what blocks an entity placer item is allowed to be dispensed on, omit to allow all blocks.

## Fixes

Performance and stability
* Fixed several crashes that could occur during gameplay.
* Fixed a crash on startup on Xbox One.

Achievement screen
* Time played now displays correctly on the achievement screen (MCPE-66331).
* Allow navigating the focus to the summary by pressing left on the gamepad when narration is enabled.
* Updated input legends for achievement list and achievement reward.
* "Screen" is now narrated when opening an achievement detail screen.
* Fixed how we calculate how many rewards a player has.
* Show the achievements, even after a timeout, when the data has been fetched.
* Don't play click sounds when using a mouse button that is not primary.
* Fix issue where the scrollbar would appear even when there is no content to scroll.
* Added acceleration to focus navigation while using a gamepad.
* Fixed focus persistency while switching from the All tab.
* Fixed support for the mouse "back button" to go back from the achievements screen.
* Fixed support for the Escape button to go back from the achievements screen.
* Fixed an issue where the Input Legend for a Tab would be "open" even when the Tab was already selected.

General
* Fixed text-to-speech not reading the messages on various screens.
* Fixed maps not being in the list of items when using the `/clear` command.
* Fixed sign-in button becoming unresponsive after backing out of sign-in prompt screen.

Gameplay
* Cobblestone is now shown as the default ingredient for stone tools (MCPE-71843).
* Reduced and reintroduced linear attenuation for raid horn sound (MCPE-85593).
* The correct sounds are now played for breaking and placing item frames (MCPE-98901).

## References

1. ↑ "Minecraft Beta - 1.16.100.56 (Xbox One/Windows 10/Android)" – Minecraft Feedback, September 17, 2020.