Skip to main content

Minecraft: Bedrock Edition 1.21.70 - Spring to Life

Script API

  • Unhandled rejected scripting promises in scripting now include callstacks when logged.

@minecraft/server 1.18.0

  • Moved CameraFixedBoomOptions from beta to stable

  • Moved LiquidType enum from beta to stable.

  • Moved liquid detection methods in Block from beta to stable.

  • Moved liquid detection methods in BlockPermutation from beta to stable.

  • Moved method Player.spawnParticle from beta to stable.

Biomes

Client Biome Components

  • Add minecraft:dry_foliage_color component to override color for dry_foliage tint method

@minecraft/server 1.18.0

  • Renamed system.scriptEvent to system.sendScriptEvent

  • Moved NamespaceNameErrorReason from beta to @minecraft/server 1.18.0

  • Moved system.sendScriptEvent from beta to @minecraft/server 1.18.0

  • Moved NamespaceNameError from beta to @minecraft/server 1.18.0

  • Released InputInfo.getButtonState, InputButton, and ButtonState to @minecraft/server 1.18.0

  • Released InputInfo.getMovementVector to @minecraft/server 1.18.0

  • Released PlayerButtonInputAfterEvent, AfterEvents.playerButtonInput and InputEventOptions to @minecraft/server 1.18.0

  • Several APIs have been given the Readonly permission, which allows them to now be called inside Before Event callbacks.

    • All methods for BlockVolume.
    • All methods for Vector.
  • Changed spawnEntity method on Dimension to now take a variant of either a string or EntityType.

  • Added placeFeature and placeFeatureRule APIs to the Dimension class

  • Added isValid property to the Camera class.

Biomes

  • Fix client_biome loading so grass_appearance and foliage_appearance settings are added if not specified when format_version is lower than 1.21.60 (MCPE-189816)

Blocks

  • water and lava no longer will turn into flowing_water or flowing_lava when neighbor updates happen. water and lava now will respond to queued ticks without needing to change into another block

  • "minecraft:material_instances" component has a new experimental boolean field "isotropic" for format version 1.21.70 and higher, this field controls rotating the face UVs randomly based on BlockPos

  • Empty Bell blocks no longer crash the game when moved by a sticky piston JIRA: (MCPE-188687)

  • Updated the /fill, /clear and /testforblock Commands

    • Fixed a bug where these commands would recognize IDs of some flattened blocks as block group names and affect all variants under those groups
  • Add dry_foliage tint method which uses the textures/colormap/dry_foliage.png color map

Commands

  • Fixed commands not executing when command is entered with leading spaces (MCPE-147815)

  • Moved the place feature and place featurerule subcommands out of the Upcoming Creator Features experiment

  • Removed set_movement_authority command.

Components

  • Added the 'minecraft:replaceable' component which determines if a new block can replace the existing block at a particular position. If the component is not added to a block it is not replaceable.

  • Multiple components that used effect durations can now be set to "infinite" including:

    • "minecraft:attack": "effect_duration"
    • "minecraft:healable": "duration" in the "effects" list
    • "minecraft:mob_effect": "effect_time"
    • "minecraft:projectile": "durationeasy", "durationnormal", and "durationhard" can now all use "infinite"
    • "minecraft:food": "duration" in the "effects" list
    • "minecraft:spell_effects": "duration" in the "add_effects" list
    • "minecraft:combat_regeneration": "regeneration_duration"
  • Added the "minecraft:is_collidable" component

    • This component allows other mobs to have vertical and horizontal collisions with the component's owner
      • For a collision to occur, both mobs must have a "minecraft:collision_box" component
      • This component can only be used on mobs and enables collisions exclusively between mobs
    • Please note that this type of collision is unreliable for moving mobs
      • It is recommended to use this component only in scenarios where the mob remains stationary
    • Collidable behavior is closely related to stackable behavior
      • While the "minecraft:is_collidable" component governs how other mobs interact with the component's owner, the "minecraft:is_stackable" component describes how an entity interacts with others of its own kind
  • The "entity_sensor" component now has two additional fields:

    • "y_offset", applies a vertical offset to the entity's position when calculating distances to other entities
    • "find_players_only", restricts the search to Players only, affecting all subsensors
  • Added the "minecraft:body_rotation_axis_aligned" component, that causes the entity's body to automatically rotate to align with the nearest cardinal direction based on its current facing direction

    • Combining this with the "minecraft:body_rotation_blocked" component will cause the entity to align to the nearest cardinal direction and remain fixed in that orientation, regardless of future changes in its facing direction
  • Added validation for asset references in components

    • Content errors will log missing references for the following fields:
      • item references
      • block reference in item component in "minecraft:block_placer"
      • loot table reference in block component "minecraft:loot"
  • The "entity_sensor" component's "find_players_only" field now functions correctly, properly restricting searches to Players only and affecting all subsensors

  • Added the "minecraft:input_air_controlled" component, that enables controlling flying rideables

    • Functions similarly to "minecraft:input_ground_controlled", but instead of limiting acceleration to the XZ-plane, this component applies acceleration in the direction the player is looking in three dimensions
    • Supports adjustments to strafing and backward movement speeds, allowing entities to fly at equal speeds in all directions or move slower when strafing or reversing
    • This component is experimental and as such requires "use_beta_features" to be enabled
    • It may undergo significant changes or even be replaced as development progresses

Creator

  • ItemTag support in the match_tool loot table condition no longer requires enabling the "Upcoming Creator Features" experiment toggle

Data-driven Jigsaw Structures

  • Fixed placement of Jigsaw structures that contain blocks with minecraft:tick component.

Dedicated Server

  • Exposed two new parameters for dedicated server when in server-auth-with-rewind. These will make the server more strict on player positions. Look in server.properties for more information on what these do.

    • server-authoritative-movement-strict default to false and can be set to true. Will affect Player position acceptance
    • server-authoritative-dismount-strict default to false and can be set to true. Will affect Player position when dismounting
  • Exposed a new parameter for dedicated server. This will make the server more strict on entity interactions. Look in server.properties for more information on what these do.

    • server-authoritative-entity-interactions-strict default to false and can be set to true. Will affect Entity interaction acceptance
  • Removed server-authoritative-movement parameter. It will now always use server-auth-with-rewind.

Editor

We are excited to announce Editor v0.9! To learn more about Editor and its multiblock world editing capabilities, check out the documents HERE, or learn how to build an Editor Extension HERE

Feature Highlights in Editor v0.9

Realms Integration

You can now publish your Editor Project directly to Realms, making it simple to play or test your world on any device. Need to tweak something? You can also download your Realms world back into the Editor for further edits. Just make sure you’re signed in with an active Realms subscription.

Grid Repeat

Grid Repeat is a new mode within the Repeater Tool which allows you to effortlessly repeat a selection in the x, y, and z directions, making tasks like adding windows to a building or creating an entire city a breeze. The Grid Repeat feature includes both Uniform and Separate repeat types, allowing you to customize the number of instances repeated in all directions.

Updated Structure Management

We have updated the Structure feature to provide better management of your structures. You can now rename, delete, and duplicate structures with ease. Additionally, you can rename the file/unique name and change the namespace for more precise organization. Please note that project structures will be exported to the editor/structuredb subdirectory in the world folder.

Multiblock Workbench

We have updated the Workbench Tool to work with multiple blocks of the same type. Simply select the blocks you want to manipulate and then go to the Workbench Tool.

Block and Entity Inspector

Block and Entity Inspector allow you to view block states and entities and then customize specific properties. This is incredibly useful to fine tune details.

Full Editor Changelogs

  • Added Realms integration

    • Users can now publish their Editor project directly to Realms
    • Users can download their Realms world
    • NOTE: Users must be signed in and have an active Realms subscription. For Preview builds, they must have a Preview Realms first. This can be created in non-Editor mode of Bedrock on Preview builds.
  • Added better management of Structures:

    • Added the ability to rename a structure
    • Added the ability to delete a structure
    • Added the ability to duplicate a structure
    • Added the ability to rename the file/unique name
    • Added the ability to change the namespace
    • NOTE: Project structures will be exported to the editor/structuredb subdirectory in the world folder
  • Added the Grid Repeat feature to the Repeater tool, which includes both Uniform and Separate repeat types

  • Added visualization for the first layer added/removed in the extrude tool.

  • Added Terracotta to block picker

  • Added Workbench support for selections allowing for updated to all blocks of the same type in the selection.

  • Added cursor support for selecting invisible blocks when the Show Invisible Blocks setting is enabled

  • Added IPropertyPane.addProgressIndicator API function to display a spinner or a progress bar property item

  • Added ImageAnimationData API type to represent a sprite sheet animation for images

  • Added iconAnimation: ImageAnimationData property to IActionBarItemCreationParams API

  • Added IPropertyPane.addLink API function to create link buttons in panes.

  • Added system.isEditorWorld property into @minecraft/server in beta

  • Added Block Inspector tool which allows you to view block states and permutations of blocks

  • Added Entity Inspector tool which allows you to view and modify entity components

  • Added a new IRootPropertyPane.createModalOverlayPane API function, allowing the creation of IModalOverlayPane to display on top of the pane content. Each pane supports one active modal overlay at a time, but it can own multiple modals. Modal overlays can be managed through the root pane's setActiveModalOverlay function or the overlay pane's show and hide functions

  • Added IButtonPanePropertyItem API for customizing button layouts.

    • IPropertyPane.addButtonPane and IModalControlPane.addButtonPane API methods to create button pane items.
  • Removed End Gateway or Structure Block from block picker

  • Updated the mouse indicator for various tools to no longer linger after the app is suspended and resumed

  • Updated the maximum allowed line segments in Line Tool to 40 to address a crash.

  • Updated to minecraft/server 2.0.0-beta, see API section for more details on 2.0.0-beta.

    • registerEditorExtension can be called in Early Execution.
  • Updated the Line Tool: Left Click no longer clears the line if two points already exist. Left Click now behaves the same as Shift + Left Click and always adds points to the existing line.

  • Updated the Block Picker search text field to have UI focus when the modal opens

  • Updated various icons in editor UI for better resolution and functional clarity

  • Updated Flatten Tool to no longer stays active when changing to Crosshair Mode

  • Updated pyramid brush maximum height to 40 blocks

  • Updated the default flyspeed to 4.0 while using Editor.

  • Updated IPropertyPane.addTable API function to IPropertyPane.addDataTable

  • Updated IBlockListPropertyItem and rename ITablePropertyItem to IDataTablePropertyItem APIs

  • Fixed an assert encountered on client disconnect from dedicated server and re-entry into a world

    • Fixed block picker UI dialog persisting after a client disconnect from a dedicated server
  • Fixed a bug that filtered stain glass blocks from block picker

  • Fixed a bug that caused Project Through Water checkbox to be active for Keyboard only cursor control in panes

  • Fixed a bug that caused custom time settings to be disabled for Time of Day pane.

  • Fixed a bug that caused player positions limit to have wrong values in Navigation Panel.

  • Fixed a bug where releasing the scrollbar after dragging outside the dropdown menu closed it.

  • Fixed a bug that caused button layout and inner icon size to be incorrect

  • Fixed a render issue related to Banner, Conduit, Creeper Head, Decorated Pot, Dragon Head, Piglin Head, Player Head, Skeleton Skull, Wither Skeleton Skull, and Zombie Head thumbnails

  • Fixed an assert/crash due to custom block rendering components in creator packs or addons

  • Fixed Workbench functionality with block that use the minecraft:block_face and minecraft:vertical_half properties.

  • Fixed Shulker box textures in Block picker and lists

  • Fixed a bug that excluded some blocks from block picker list with partial text search

  • Fixed missing Air and Sugarcane block images

  • Fixed a bug that would sometimes cause the refresh button to crash Editor.

  • Fixed a bug that caused farms to be placed near unloaded areas

  • Fixed a bug that prevented slider to be visually updated for INumberPropertyItem.updateLimits API function

Entities

  • Fixed issue where No more entities assert failure occurred when flying through biomes during a storm

Entity Components

  • Added on_spawn trigger to spawn_chance on hit sub-component, triggered on the newly spawned entity with other set to the owning entity
  • Added particle_item_name map to particle_on_hit on hit sub-component, maps an item name to an actor filter to determine what the name of the item used in the particle should be. Falls back to the name of the entity itself as before.

Entity Event Responses

  • Added the "stop_movement" entity event response, which stops the entity's movement

    • The "stop_vertical_movement" field specifies whether vertical movement should be stopped
    • The "stop_horizontal_movement" field specifies whether horizontal movement should be stopped
    • This response does not stop navigation or prevent future movement
      • If that's the desired outcome, also remove the components responsible for that
  • Added the "set_home_position" entity event response, which sets the entity's home position to its current position

    • For this to have any effect, the entity must already have a "minecraft:home" component

Entity Events

  • Added "first_valid" event type, it will evaluate every filter in order and execute the first valid one

Entity Filters

  • The "in_clouds" entity filter now succeeds when an entity's bounding box intersects the cloud layer, rather than only when its bottom is within it

Gameplay

  • CommandBlock hover name now shown in GUI messages generated from commands (MCPE-190606)

General

  • Fixed issue that occurs when cancelling world resource pack download.

  • Fixed crash that occurs when initializing minecraft:decorated_pot renderer.

  • Server Authoritative movement is now turned on by default.

Goals

  • "minecraft:behavior.float_wander" AI goal will now restrict mobs to their home position if they have the "minecraft:home" component

  • Added "use_home_position_restriction" field to "minecraft:behavior.float_wander" AI goal to control whether mobs respect home position restrictions when selecting target positions

    • Defaults to false for entities with format version below 1.21.70, and true for 1.21.70 and later
    • When true, the mob will respect home position restrictions when selecting target positions

Jigsaw

  • Fixed world_surface type of heightmap_projection in minecraft:jigsaw to generate on top of water and leaf blocks.

  • Fixed gaps from appearing between data-driven jigsaw structure pieces.

JSON Events

  • The parameter "duration" in the "add_mob_effect" event can now be set to "infinite"

Mobs

  • Added maximum value of 100000000.0 and minimum value of -100000000.0 to "minecraft:collision_box" component

  • Added aquatic family-type for all aquatic mobs

  • Normal Minecart is no longer considered a mob

Network Protocol

  • Added ActorFlags::COLLIDABLE
  • Added ActorFlags::BODY_ROTATION_AXIS_ALIGNED
  • Added ActorFlags::WASD_AIR_CONTROLLED

Particles

  • Multiple controllers transitioning out of a state at the same time will now properly expire all intended particles instead of just the last one

Sounds

  • Added support for entity sound variants

    • Entity sounds now have a "variants" field which defines sound variants based on the runtime entity
    • Variants has a "key" field reading a Molang expression returning a string to select sound variant (eg: querying an enum entity property).
    • Variants has a "map" field which contains key-value pairs of a variant identifier and the sound events it overrides.
    • When playing a sound for an entity we first try to calculate their variant and see if that variant overrides the sound event, if not we play the sound form the base entity. If that fails we fall back to the existing logic of running from "defaults". Example: Given a mob with the following property

    "minecraft:emotional_state": { "type": "enum", "values": [ "neutral", "angry", "happy", "sad" ], "default": "neutral", "client_sync": true}

Sound variants can be played by querying the property:

{ "entity_sounds": { "entities": { "test_mob": { "volume": 1.0, "pitch": 1.0, // The base sounds for various events "events": { "ambient": "mob.test_mob.ambient", "death": "mob.test_mob.death", "step": { "sound": "mob.test_mob.step", "volume": 0.8, "pitch": 1.0 }, "attack": "mob.test_mob.attack" }, "variants": { // Key returning the enum string for variants, can use any Molang expression resulting in a string "key": "query.property('minecraft:emotional_state')", "map": { // If a resulting variant key is not handled here then it will use the base sounds "neutral": { "volume": 1.0, "pitch": 1.0, "events": { // If an event is not handled in a variant then it will use the base sound "death": "mob.test_mob.death.netural" } }, "angry": { "volume": 1.0, "pitch": 1.0, "events": { // Variants can override different events than other variants "death": "mob.test_mob.death.angry", "ambient": "mob.test_mob.ambient.angry" } } } } } } } }}

  • Sound effects found in animations and animation controllers can now include an optional "locator" field similar to particle effects allowing them to originate from the locator on the entity rather than the origin

Structures

  • Fixed mirroring and rotation of crafter blocks when part of a structure that is being placed:

实验性特性

Script API

  • Added new script module @minecraft/diagnostics version 1.0.0-beta. This module is dedicated server only for now and allows script modules to connect their script packs to Sentry. This enables remote error tracking and monitoring for script packs.

@minecraft/server

  • Component minecraft:fluidContainer has been renamed to minecraft:fluid_container in V2.

  • World

    • Added getDifficulty(): Difficulty method to beta. This method gets the worlds current game difficulty.

    • Added setDifficulty(difficulty: Difficulty): void method to beta. This method sets the worlds current game difficulty.

  • BlockMapColorComponent scripting API is now read-only

  • BlockMapColorComponent scripting API fields color and tintMethod are now properties instead of methods

  • Fixed an issue where native constructors were not properly checking privileges when being called. Constructors now check privileges properly and produce correct errors when being used in Early Execution privilege.

  • Deprecated ItemUseOnBeforeEvent in @minecraft/server 2.0.0-beta. Use PlayerInteractWithBlockBeforeEvent instead.

  • Deprecated ItemUseOnAfterEvent in @minecraft/server 2.0.0-beta. Use PlayerInteractWithBlockAfterEvent instead.

  • BlockDestructionParticlesComponent API has been added to @minecraft/server 2.0.0-beta

  • EntityScaleComponent has been changed to read-only in version 2.0.0-beta

  • Fixed a bug where call methods on Player.inputInfo, Player.inputPermissions, or Player.aimAssist on a player that left and rejoined the world would throw an error.

@minecraft/server-net

  • Updated the execution privilege of most APIs to allow them to be called in read-only contexts ("before" events)
  • Added new error InternalHttpRequestError
    • An error thrown when a platform-level HTTP error occurs. Information provided in this class may be useful for diagnostics purposes but will differ from platform to platform.
  • Added new error MalformedHttpRequestError
    • An error thrown when a malformed HTTP request is attempted to be sent.

@minecraft/server-ui

  • ActionFormData
    • Added method divider(): ActionFormData;. It adds a section divider into the form.
    • Added method header(text: minecraftserver.RawMessage): ActionFormData;. It adds a header into the form.
    • Added method label(text: minecraftserver.RawMessage): ActionFormData;. It adds a label into the form.
  • ModalFormData
    • Added method divider(): ModalFormData;. It adds a section divider into the form.
    • Added method header(text: minecraftserver.RawMessage): ModalFormData;. It adds a header into the form.
    • Added method label(text: minecraftserver.RawMessage): ModalFormData;. It adds a label into the form.

@minecraft/server 2.0.0-beta

The beta for @minecraft/server has been updated to 2.0.0-beta. This signifies that breaking changes have occurred, largely related to script execution timing. Version 1.X will continue to function as-is.

Visit our documentation portal for more information in the near future.

  • Added new privilege EarlyExecution

    • 2.0.0-beta and higher now executes with the early execution privilege, scripting below 2.0.0-beta will continue to execute without early execution
    • All after and before event signals subscribe and unsubscribe` methods can now be called in early execution
    • The following System methods can now be called in early execution
      • clearJob
      • clearRun
      • run
      • runInterval
      • runJob
      • runTimeout
      • waitTicks
    • BlockComponentRegistry method registerCustomComponent can now be called in early execution
    • ItemComponentRegistry method registerCustomComponent can now be called in early execution
  • Added startup property to SystemBeforeEvents

  • Added StartupEvent

  • Added StartupEventSignal

  • WorldAfterEvents renamed property worldInitialize to worldLoad

  • WorldBeforeEvents removed property worldInitialize

  • WorldInitializeAfterEvent renamed to WorldLoadAfterEvent

  • WorldInitializeAfterEventSignal renamed to WorldLoadAfterEventSignal

  • Removed WorldInitializeBeforeEvent

  • Removed WorldInitializeBeforeEventSignal

  • Removed Dimension.runCommandAsync as most commands did not actually run asynchronously. If you are looking to run a function asynchronously, please investigate using Jobs via System.runJob.

  • EntityComponent.getEntity method throws if the underlying entity is invalid (instead of return undefined previously).

  • EntityInventoryComponent.containerproperty throws if the underlying entity is invalid (instead of return undefined previously).

  • isValid methods on various classes have been changed to read only properties

  • getComponents, getComponent and hasComponent now throw if the Entity is invalid

  • applyKnockback method now takes a VectorXZ parameter for the knockback horizontal force (which includes the strength/magnitude), as well as a vertical strength parameter. To convert from V1, you should normalize your previous direction vector and multiply it by the old horizontal strength value. Vertical strength is the same as before.

  • EffectType

    • getName method now always returns the minecraft: namespace prefix along with the name
  • Effect

    • typeId property now always returns the minecraft: namespace prefix along with the name
  • minecraft:air item has been removed (it is still a valid block)

  • Promises are now flushed along with after events and system tasks

  • system.waitTicks() now can accept an argument bounds of 0 minimum to run this tick

  • Added a GraphicsMode enum and Player.graphicsMode to query a player's current graphics mode on the server.

  • Added system.isEditorWorld property into @minecraft/server in beta

  • BlockLocationIterator

    • Added isValid(): boolean method to beta. This method checks if the iterator as been invalidated by modifying the underlining block volume.
  • BlockMapColorComponent API has been added to beta

  • TintMethod enum has been added to beta

  • Early execution changes in version @minecraft/server 2.0.0-beta

    • The following RegistrationBuilder methods can now be called in early execution
      • batch
      • maxAttempts
      • maxTicks
      • padding
      • required
      • requiredSuccessfulAttempts
      • rotateTest
      • setupTicks
      • structureName
      • tag
    • register function can now be called in early execution
    • registerAsync function can now be called in early execution
  • Fixed a bug where the typeid property of the Effect class was being translated based on your language option.

  • Raised the limit for Lore Entry length from 50 to 1000 and the number of lines from 20 to 100 when using ItemStack.setLore

  • Added three new methods to Player . These Entity Overrides are only applied to the target Player. Changes are not applied until the next tick and will not apply to other players.

    • setPropertyOverrideForEntity: Overrides an Entity Property on the target Entity to the provided value. This property must be client synced.
    • removePropertyOverrideForEntity: Removes the override of the specified Entity Property on the target Entity.
    • clearPropertyOverridesForEntity: Removes all overrides of any Entity Properties on the target Entity.

API - Molang

  • Added query.graphics_mode_is_any to Molang which accepts any of the following parameters: simple, fancy, deferred, raytraced. These parameters are all graphics modes that are available in the settings menu.

Blocks

  • The minecraft:map_color component underwent a schema change

    • It is now a JSON object with two fields "color" and "tint_method".

    • "color" is a required string field expecting an HEX representation of the RGB, prefixed with a # character.

    • "tint_method" is a string field that multiplies the color with a predefined tint. Supported values are "none, "default_foliage", "birch_foliage", "evergreen_foliage", "dry_foliage", "grass" and "water".

    • the old schema format is still supported for convenience. Examples:

      "minecraft:map_color": { "color": "#ABCDEF", "tint_method": "grass"}

      or

      "minecraft:map_color": { "color": "#ABCDEF"}

      or

      "minecraft:map_color": "#ABCDEF"

    • The minecraft:material_instances component supports an optional "tint_method" field in its instance definitions

      • "tint_method" is a string field that multiplies a face color with a tint computed with the biome the block is in. Supported values are "none, "default_foliage", "birch_foliage", "evergreen_foliage", "dry_foliage", "grass", and "water".

      • Held block-items are tinted as if they were in the "plains" biome. Example:

        "*": { "texture": "minimal", "render_method": "opaque", "tint_method": "water" }

  • Exposed the Block component minecraft:destruction_particles as a JSON object. This represents the particles used when the Block is destroyed

    • There is two fields for it:

    • "texture" is a required string field to set the texture used by the particles

    • "tint_method" is an optional string field that multiplies the texture color with a predefined tint. Default to "none". Supported values are "none", "default_foliage", "birch_foliage", "evergreen_foliage", "dry_foliage", "grass" and "water".

    • Block format before 1.21.70 will be upgraded to have the component added using the texture from the "down" or "*" of the minecraft:material_instances component if present and "none" for tint_method. This was the old behavior.

    • Block format from 1.21.70 without the component will not be upgraded and uses the invalid texture
      Examples:

      "minecraft:destruction_particles": { "texture": "my_particles_texture", "tint_method": "grass" }

      or

      "minecraft:destruction_particles": { "texture": "my_particles_texture"}

Experimental

  • Removed the Experimental Third Person Cameras toggle and added an Experimental Creator Camera Features toggle for all future experimental cameras

General

  • Removed unused experimental json field peaks_factor from minecraft:mountain_parameters in the behavior pack biome file