Minecraft is a sandbox game developed by Mojang Studios. The game was created by Markus “Notch” Persson in the Java programming language. Following several early private testing versions, it was first made public in May 2009 before being fully released in November 2011, with Notch stepping down and Jens “Jeb” Bergensten taking over development. The game received a new update, which focuses on the game’s issues. Let’s dive deep into the Minecraft Bedrock 1.21.90 update patch notes.
Minecraft Bedrock 1.21.90 Update Patch Notes

Features and Bug Fixes
Blocks
Dried Ghast
- Can be found in the Nether in Nether Fossil structures
- Can be crafted with 1 Soul Sand Block and 8 Ghast Tears
- When waterlogged it undergoes 3 states over about 20 minutes until it spawns a Ghastling mob
- Makes sounds and shows particles depending on state
- If mined during the waterlogging, it will revert to its “dry” state regardless of what state it has reached during waterlogging
- Will revert states back to its initial “dry” state when it is taken away from being waterlogged, using the same time scale
- Piglins can give Dried Ghast Blocks when bartered with
- Added new achievement “Stay Hydrated!”
Mobs
- the_end_light_flash sound effect now triggers when the light flashes in The End dimension in Vibrant Visuals
Blocks
- Crimson and Warped Roots cannot be lit on fire or burn anymore (MCPE-80066)
- Fixed issue where Jungle Leaves did not become transparent when setting all leaf types to be transparent (MCPE-110630)
- Dispensing a Lava Bucket on waterlogged blocks no longer empties the bucket without placing Lava (MCPE-178295)
- Maximum Beacon beam height is now 2048 (MCPE-190223)
- Beacon now renders from any loaded chunk in worlds versioned 1.21.90 and higher
- Fixed Sculk Vein block looking small and elongated when held or in an item frame
Accessibility
- Text to speech will select an appropriate voice if available when changing in-game language on Android, iOS, and Win10
Commands
- Fixed a bug where players could hear sounds played with /playsound even if they were in a different dimension than the one the sound was played in (MCPE-184566)
- The camera default command will now properly reset third person camera view offset values
- The /controlscheme command no longer requires the “Experimental Creator Camera” toggle
Gameplay
- Fixed a crash that would sometimes occur when using Command Blocks
- Fixed an issue where swapping item slots during an attack against a mob would re-select the original item slot used during the attack instead of staying on the new inventory slot item
- Fixed entering the water while sprinting from double tapping forward no longer automatically enters the swimming state (MCPE-216867)
- Repositioned the teleporting point when using an End Gateway to not be too close to a cliff edge, if possible. As a result, End island portals that teleport the player outside of the map border will no longer kill the player (MCPE-174465) (MCPE-174465)
- Fixed issue where sprint jump attacking would sometimes remove all of the player’s momentum (MCPE-189501)
- Fixed a bug where hitting blocks while swimming would cause players to slow down too much (MCPE-201832)
- Using a custom equippable block item in creative mode will no longer duplicate the item and equip it; it will simply place the block in the world
- Added a painting of a good boy by artist Sarah Boeving
General
- Gamertags are now used on all platforms to identify players in cross-platform multiplayer games
Items
- The Trident is now grouped with other tools/weapons in the Creative inventory (MCPE-181002)
- Mace with Wind Burst enchantment once again launches players as high as it does on Java Edition (MCPE-185829)
- The recipe for Leads has been updated to no longer require a Slime Ball
- Now the Mooshroom Spawn Egg uses its own colors and no longer has two pixels that are the same as the Cow Spawn Egg texture
- Spore Blossoms destroyed by water are now dropped as items (MCPE-127677)
- The size of the Blaze and Breeze spawn eggs have been reduced to better match the mobs’ in-game size (MCPE-217634)
- Fixed inconsistent pixels on the Pale Oak Boat and Pale Oak Boat with Chest items to match other boat items
- The Green Harness item no longer uses the Gray Harness texture when Vibrant Visuals is enabled
Mobs
- Piglin Brutes will now despawn properly on peaceful difficulty (MCPE-88837)
- Mobs will no longer clip through blocks sometimes when viewing them at a distance when they auto step up a block
- Shadows are no longer rendered for entities that are riding a vehicle, unless said vehicle is invisible (MCPE-200797)
- Pigs saddled by hand no longer drop two saddles when killed (All pigs saddled by hand between 1.21.70 and now will still drop their duplicated saddles on death)
- Increased attack range for Blaze from 16 to 48 blocks to match its target detection range (MCPE-35647)
- Increased Blaze attack sound distance to 32 to match Java Edition
- Fixed bug where Ghasts could not move while shooting fireballs (MCPE-201849)
- Slimes and Magma Cubes no longer jump twice when finding or losing their targets (MCPE-114701)
- Fixed a bug where Magma Cubes and Slimes could still damage players briefly after dying (MCPE-166394)
- Now the Cold Cow variant has the correct mirroring of its horn texture
- Flying mobs no longer make footstep sounds when moving close to the ground
- Ghasts can no longer spawn in areas that are too small, preventing suffocation on spawn
- Spiders and Cave Spiders can once again spawn with a Stray rider in cold biomes (MCPE-89549)
- Spiders and Cave Spiders can once again spawn with a Wither Skeleton rider in the Nether (MCPE-89549)
- Horses, Donkeys, and Mules can now be fed carrots to heal, grow, and improve their temper
- Happy Ghast can now be pushed by other mobs even while being ridden, except when made immobile by a player standing on it
Sounds
- Fixed a bug where Parrots imitating a Drowned used Zombie sounds
- Fixed a bug where Parrots imitating a Wither Skeleton used Skeleton sounds (MCPE-174857)
- Sound files for breaking and placing Grass blocks are now slightly louder
- Leashing, unleashing, collecting leashed mobs, and leashing mobs to other mobs now play custom sounds
- Fence knots now play a sound when destroyed, either by being punched or when all their leashed entities are gone (MCPE-21743)
- Music will now fade normally when leaving a world if game pause is disabled (MCPE-212932)
- @minecraft/server 2.0.0 is now released, 2.1.0-beta is the new beta version for @minecraft/server. See https://learn.microsoft.com/en-us/minecraft/creator/documents/scriptingv2.0.0overview for more details on 2.0.0
- AddedisValid property on Camera from beta to stable
- Moved TicksPerDay from beta to stable
- Moved enum ScriptTintMethod from beta to stable
- Moved enum ScriptBlockMapColorComponent from beta to stable
- Added integer overflow detection in ScoreboardObjective.addScore. Original value will be retained when overflow is detected
- NamespaceNameError now has better error information and the name property value will now be set to “NamespaceNameError”
- BlockComponentPlayerDestroyEvent renamed to BlockComponentPlayerBreakEvent
- PlayerPlaceBlockBeforeEvent
- permutationBeingPlaced renamed to permutationToPlace
- BlockCustomComponent
- onPlayerDestroy renamed to onPlayerBreak
- Added lookAt method on Entity
- Added customComponentParameters: CustomComponentParameters to ItemCustomComponentInstance
- Added customComponentParameters: CustomComponentParameters to BlockCustomComponentInstance
- Custom components V2 now support assigning string, array, object, bool, or number
- GameMode enum member names changed
- survival renamed to Survival
- creative renamed to Creative
- adventure renamed to Adventure
- spectator renamed to Spectator
- Released getBlockBelow and getBlockAbove on Dimension to 2.0.0
- Changed players property on PlayAnimationOptions to an array of Player objects, instead of string names in 2.0.0
- Changed the following APIs to use the local coordinates on a unit cube rather than the world coordinates for 2.0.0 (MCPE-216825)
- Example: The location { x: 123.123, y: -22.44, z: -400.678 } will now be { x: 0.123, y: 0.44, z: 0.678 }
- BlockRaycastHit.faceLocation
- BlockHitInformation.faceLocation
- BlockComponentPlayerInteractEvent.faceLocation
- PlayerPlaceBlockBeforeEvent.faceLocation
- ItemUseOnAfterEvent.faceLocation
- ItemComponentUseOnEvent.faceLocation
- PlayerInteractWithBlockAfterEvent.faceLocation
- PlayerInteractWithBlockBeforeEvent.faceLocation
- Released error ContainerRulesError to 2.0.0
- Removed CameraDefaultOptions for V2.0
- Added setDefaultCamera(cameraPreset: string, easeOptions?: CameraEaseOptions): void to V2.0. This will replace passing the CameraDefaultOptions into the Camera.setCamera function. Will also now reset the position and rotation of third-person cameras back to the values defined in the JSON
- Added localizationKey read only property to Dimension, which is the key for localization of a dimension’s name used in language files
- Added EntityHungerComponent, EntitySaturationComponent, EntityExhaustionComponent that allows read and write access to Hunger, Saturation, and Exhaustion values on player objects
- Added totalArmor and totalToughness read only properties to EntityEquippableComponent
- Renamed CameraEaseOptions to just EaseOptions to for V2.0 scripting
- Fixed a bug where the includeLiquidBlocks property on BlockRaycastOptions would not correctly result in hits on Flowing water This affects the following API methods in all versions:
- entity.getBlockFromViewDirection, dimension.getBlockFromRay, dimension.getBlockBelow & dimension.getBlockAbove
- Improved the naming used for the name property of several custom error classes
- Block custom component event beforeOnPlayerPlace is now called when an item using replace_block_item is set to true for V2.0.0 and higher custom components
- In 2.0.0, when using setCurrentValue of an EntityAttributeComponent, the desired value is checked against the effectiveMin and effectiveMax. If the value is out of bounds, an error is thrown
- Moved class ShutdownEvent from beta to 2.0.0
- Moved class ShutdownBeforeEventSignal from beta to 2.0.0
- Moved isEditorWorld on System from beta to 2.0.0
- Moved enum GraphicsMode from beta to 2.0.0
- Moved graphicsMode on Player from beta to 2.0.0
Updated Movement Controls
Editor just got a serious upgrade! 🎮 We’ve revamped the movement controls to make navigation smoother and more intuitive. The default up/down keys are now E and Q, freeing up Shift and Space for other actions. You can now toggle mouse mode with the T key, and scroll zooms toward your cursor for better control. We’ve also added middle-click drag to pan across the XZ plane, plus Z and C keys to orbit around your block cursor. Need a broader view? Use SHIFT+Z and SHIFT+C to orbit around your entire selection. Dive in and explore with ease! 🧭
Vibrant Visual Settings Improvements
We’ve made it easier to fine-tune your visual style with updates to Vibrant Visual Settings! 🌇 New controls give you more flexibility when adjusting lighting, atmosphere, and other visual elements. We’ve also added time-of-day scrubbers, so you can instantly see how your settings look across different times of day—making it simpler to achieve the perfect mood for your world.
Pick blocks by color in the Block Picker
Building just got more colorful! 🌈 You can now filter blocks by color in the Block Picker, making it easier to focus on aesthetics over specific block types. Whether you’re going for bold gradients or matching a vibe, this new feature helps you create highly visual builds with ease. Let your creativity shine! 🎨✨
Hollow Selection Trim Action
Added a new Hollow trim action to Selection. This trim action converts your current selection into a new selection volume representing only the fully enclosed non-air blocks—perfect for hollowing out brush-shaped structures and creating internal spaces with ease.
Line Tool Improvements
Added new mouse controls and hotkeys to the Line Tool for faster, more flexible editing. You can now left-click to add connected points or Ctrl+click to add disconnected ones. New shortcuts let you nudge points, adjust line thickness, convert to selection, and more—all designed to streamline your building workflow.
- Updated SentryOptions properties:
- dsn: Updated to allow the usage of SecretString, allowing for secrets from @minecraft/server-admin to be used to initialize Sentry
- (new) maxBreadcrumbs: The maximum number of breadcrumbs to store and report per error event to Sentry. Default is 20, supported values range from 0 (no breadcrumbs) to 100
- (new) sampleRate: A number between 0 and 1 that indicates the percentage of events that should be sent to Sentry. For example, a value of 0.5 means that 50% of events will be sent. Default is 1 (100% of events). 0 means no events will be sent
- (new) debug: When set to true, additional content logging from the Sentry system will be enabled. Defaults to false
@minecraft/server 2.1.0-beta
- Custom Command registration will create an alias from the command name without the namespace
- If the name has already been claimed, then the alias will not be created and a content log warning will appear
- Removed unused classes: EntityIterator, EntityTypeIterator, FilterGroup, and PlayerIterator
- Added class PlayerHotbarSelectedSlotChangeAfterEvent. This will be triggered every time the hotbar slot changes.
- Added enum PlayerInventoryType
- Added class PlayerInventoryItemChangeAfterEvent. This will be triggered every time an item changes in the player’s inventory. This includes the 27 inventory slots and 9 for hotbar
- Updated class Container
- reverseFind has been renamed to findLast
- contains now returns undefined if it fails to find the item
- firstEmptySlot now returns undefined if it fails to find an empty slot
- firstItem now returns undefined if it fails to find the item
- find now returns undefined if it fails to find the item
- reverseFindnow returns undefined if it fails to find the item
- Added stopSound and stopAllSounds to Dimension and Player
- Added enum LiquidSettings in beta
- Added optional property liquidSettings to scripting interfaces JigsawPlaceOptions and JigsawStructurePlaceOptions in beta. Defaults to ApplyWaterlogging
- New cheatsRequired property on CustomCommand interface
- If undefined or true (default is true), custom command execution requires that cheats are enabled. If false, then the custom command can execute without cheats enabled.
- Removed Player.isOp()
- Add read-only property playerPermissionLevel to Player
- Add property commandPermissionLevel to Player
- Added PlayerPermissionLevel enum with Visitor, Member, Operator values
- Added enum ContainerRulesErrorReason to beta. Contains the reasons that ContainerRulesError can fail.
- Added interface ContainerRules to beta. Contains rules that if broken on container operations will throw a ContainerRulesError
- Container
- Added optional property readonly containerRules?: ContainerRules to beta. If the rules of the container are broken will throw a ContainerRulesError
- Added property readonly weight: number to beta. The total weight of all ItemStacks in the container
- ItemStack
- Added property readonly weight: number to beta. The total weight all the items in the ItemStack
- Added class ItemInventoryComponent to beta. This component will be on all items that contain a minecraft:storage_item component and will allow access to its container
- BlockMovableComponent APIs have been added to beta
- BlockMovableComponent::movementType
- BlockMovableComponent::stickyType
- Enabled Player.applyImpulse and Player.clearVelocity in beta, which no longer throw errors
@minecraft/debug-utilities 1.0.0-beta
- Added new Debug Drawing feature
- Added new classes: DebugArrow, DebugBox, DebugCircle, DebugDrawer, DebugLine, DebugShape, DebugSphere, DebugText
- Added new global object for accessing and using this new feature: debugDrawer: DebugDrawer
- Fixed a crash with the Debug Drawing system after using the /reload command
- Fixed an issue where Debug Drawing primitives wouldn’t be visible after using the /reload command
- Fixed an issue where Debug Drawing primitives wouldn’t be visible for new players joining the world
Blocks
- Added minecraft:random_offset component under the Upcoming Creator Features toggle. This allows for blocks to randomly offset like foliage does in the Vanilla game
Example:
{
"format_version": "1.21.80",
"minecraft:block": {
"description": {
"identifier": "test:test_block"
},
"components": {
"minecraft:collision_box": {
"origin": [-4.0, 4.0, -4.0],
"size": [8, 8, 8]
},
"minecraft:random_offset": {
"x": {
// This is the range of possible values we can pick from
"range": {
"min": -4,
"max": 4
},
// This is the equally spaced steps across the given range.
// Provide 0 for all possible values in the range
"steps": 16
},
"y": {
"range": {
"min": -4,
"max": 4
},
"steps": 16
},
"z": {
"range": {
"min": -4,
"max": 4
},
"steps": 16
}
}
}
}
- Added minecraft:movable component under the Upcoming Creator Features toggle. This allows for blocks to configure how they should react when moved by a Piston
- “movement_type” (Required): Specifies how the block should react when moved by a piston
- “push_pull”: Will allow a block to be pushed by a Piston/Sticky Piston and pulled by a Sticky Piston (e.g. Grass)
- “push”: Will allow a block to be pushed by a Piston/Sticky Piston (e.g. Glazed Terracotta)
- “immovable”: Will not allow a block to be pushed or pulled by a Piston/Sticky Piston (e.g. Bedrock)
- “popped”: Will pop a block when pushed by a Piston/Sticky Piston (e.g. Leaves)
- “sticky” (Optional): Specifies how the block should handle adjacent blocks when moved by a Piston
- “none”: Default. Will not add any additional behavior
- “same”: Will move adjacent blocks along with it when moved by a piston. It will not move different blocks with “sticky”: “same” (e.g. A Honey Block can move another Honey Block but not a Slime Block)
- NOTE: This field only works when used with “movement_type”: “push_pull” “format_version”: “1.21.90”,
“minecraft:movable”: {
“movement_type”: “push_pull”,
“sticky”: “same”
- NOTE: This field only works when used with “movement_type”: “push_pull” “format_version”: “1.21.90”,
- “movement_type” (Required): Specifies how the block should react when moved by a piston
Block Components
- Added field “uv_lock” to “minecraft:geometry” block component behind UpcomingCreatorFeatures experiment
- UV locking will allow faces to have the same texture orientations as the default geometry state, regardless of how “minecraft:transformation” component rotates the geometry
- UV locking will not be supported for geometry using Box UVs if the box sides are not equal, in other words the box has non square UVs. Geometry with per-face UVs and non-square faces will be supported
- UV locking will not be supported if Block Json format_version is less than 1.19.80.
Commands
- Added optional property liquidSettings to /place structure and /place jigsaw commands. Defaults to apply_waterlogging
Jigsaw
- Jigsaw structures being placed in water no longer replace water incorrectly
- Added optional property liquid_settings to minecraft:jigsaw JSON to allow control over handling liquids when placing structures. Defaults to apply_waterlogging.
Components
- The BlockDestructionParticlesComponent has a new field called particle_count allowing creators to determine the amount of particles that are generated on the destruction of the block
User Interface
- The touch screen d-pad control now shows the correct buttons when using camera relative control schemes
World Generation
- Terrain Matching Jigsaw Template pools will no longer create floating islands
- Namespaces can now be used in Template Pool element location and Jigsaw Block identifiers

