Skip to main content

Minecraft - 1.20.70/71 (Bedrock)

Updated Add-On Template Packs

  • Updated Add-On templates for 1.20.70 with new resources, behaviors, and documentation are available to download at aka.ms/MCAddonPacks

General

  • Implemented a fix for the “One Block Skyblock” Marketplace map generating flat world in the distance on the client if the map was uploaded on Realms
    • Clients connected to a dedicated server or Realms will no longer improperly generate LevelChunks on the client if one of the following is true:
      • The map is a flat world
      • It's a Marketplace map
    • This overrides server.properties setting client-side-chunk-generation-enabled for dedicated servers
  • Removed ItemFrameDropItemPacket

Commands

  • Added "has_property" filter for entity target selector that allows for targeting based on the type and value of properties
  • The /damage command no longer contains the damage type 'suicide'. It is replaced with 'self_destruct' (MCPE-174865)
  • The Command Block's interface will now remove the last error message after successfully compiling a command (MCPE-114029)

Add-Ons and Script Engine

  • Blocks using the "minecraft:material_instances" component with "render_method" = "alpha_test_single_sided" display properly when in the player's hand

Blocks

  • Fixed 'minecraft:geometry.full_block' faces not rotating to match transform component
  • Fixed 'minecraft:geometry.full_block' blocks not culling faces against some vanilla blocks
  • “leaves” block is now split into unique names, “oak_leaves”, “spruce_leaves”, “birch_leaves, and ”jungle_leaves”
  • “leaves2” block is now split into “acacia_leaves” and “dark_oak_leaves”
    • Commands will still work with “leaves” and “leaves2”, but only new leaves names will be suggested in the command prompt
  • The “minecraft:grass” block has been renamed to “minecraft:grass_block”, the old name is still understood from commands and data
  • “double_wooden_slab” block is now split into unique instances "acacia_double_slab", "birch_double_slab", "dark_oak_double_slab", "jungle_double_slab", "oak_double_slab", "spruce_double_slab"
    • Commands will still work with “double_wooden_slab”, however, “double_wooden_slab” block will not be suggested
  • “wooden_slab” block is now split into unique instances “oak_slab”, “spruce_slab”, “birch_slab”, “jungle_slab”, “acacia_slab”, “dark_oak_slab”
    • Commands will still work with “wooden_slab”, however, “wooden_slab” block will not be suggested
  • "wood" block is now split into unique instances: "oak_wood", "spruce_wood", "birch_wood", "jungle_wood", "acacia_wood", "dark_oak_wood", "stripped_oak_wood", "stripped_spruce_wood", "stripped_birch_wood", "stripped_jungle_wood", "stripped_acacia_wood", and "stripped_dark_oak_wood"

Components

  • The “entity_sensor” component’s “range” field now supports two values, the first one for horizontal range and the second one for vertical range
    • This requires a “format_version” of 1.20.70 or higher
  • The "damage_sensor" component's "damage_modifier" and "damage_multiplier" fields are now properly considered during damage immunity calculations, so that damage adjusted to be lesser or equal to the highest damage received during an entity's immunity period will be accurately ignored
    • This requires a world version of 1.20.70 or higher

Entity Filters

  • Added new entity filter “was_last_hurt_by”, which checks if the subject is the last player or mob to have recently attack the entity

Items

  • Custom armor attachables can now be trimmed with vanilla trims, and modified vanilla patterns can be applied to custom armor attachables and items
    • Vanilla trim textures can be overridden via the attachable component
    • Vanilla trims can be applied to custom geo armor via the attachable component
    • Modified vanilla trim patterns (to fit the new geo armor) can be applied via the attachable component
    • Armor trim patterns on custom armor requires the 1.20.60+ format version for the attachable and item

Molang

  • Released is_attached and query.has_player_rider from experimental
  • Removed experimental Molang queries get_ride and query.get_riders
  • Deprecated the Molang Features experimental toggle
  • Released Molang scoreboard for use with behavior packs from experimental (resource packs will return 0)
  • Removed experimental Molang queries
    • biome_has_any_tag
    • biome_has_all_tags
    • self
    • target
    • client_input_type
    • get_nearby_entities
    • get_nearby_entities_except_self
  • Added new Molang APIs that give read access to rider body and head rotations
    • rider_body_x_rotation(riderIndex) => float
    • rider_body_y_rotation(riderIndex) => float
    • rider_head_x_rotation(riderIndex) => float
    • rider_head_y_rotation(riderIndex,clampRotation?) => float
    • ride_body_x_rotation => float
    • ride_body_y_rotation => float
    • ride_head_x_rotation => float
    • ride_head_y_rotation(clampRotation?) => float
  • surface_particle_color, query.surface_particle_texture_coordinate, and query.surface_particle_texture_size are now versioned with 1.20.70 to allow the three queries to see Leaf blocks as the surface texture below the block. Molang versions lower than 1.20.70 will continue to not see the Leaf block below them
  • This change takes effect for Molang queries in packs that have a manifest.json min_engine_version of 1.20.70 or higher.

NBT Parsing

  • Loading of NBT data is now more restrictive. Negative-length arrays, invalid tag ids, and not enough bytes in a payload are now all treated as errors which will prevent a tag loading where before those conditions were sometimes ignored

Spawn Rules

  • “minecraft:spawns_on_block_filter” now supports block descriptors
  • “minecraft:spawns_on_block_prevented_filter” now supports block descriptors
  • “minecraft:spawns_above_block_filter” now supports block descriptors

Script API

  • Added ScriptGameRules and gameRules for accessing and modifying game rules
  • Fixed the timing of PlayerInteractWithEntityAfterEvent and PlayerInteractWithBlockAfterEvent
  • Added setGameMode and Player.getGameMode to beta for changing the player's GameMode
  • Added events PlayerGameModeChangeAfterEvent, PlayerGameModeChangeBeforeEvent with signals afterEvents.playerGameModeChange and world.beforeEvents.playerGameModeChange to beta
  • Added GameRuleChangeAfterEvent, GameRule and afterEvents.gameRuleChange for responding to GameRules changes
  • Fixed getBlockFromRay returning false positive collisions with water when already submerged

Character Creator

  • Added a new model to contain the character creator animation logic

  • Updated the logic that was done to trigger updating the binds when the animation states have been updated, so we do not run into issues with the binds updating every frame causing a major framerate hit

Experimental Features

Script API

  • Entity Components
    • Added EntityTypeFamilyComponent with functions getTypeFamilies(): string[] and hasTypeFamily(typeFamily: string): boolean
  • Item
    • Moved ItemFoodComponent from beta to 1.9.0
    • Added function matches(itemName: string, states?: Record<string, boolean | number | string>): boolean
  • Removed class BlockVolumeUtils. Moving utility functions onto _BlockVolumeBase_and BlockVolume
  • Added class BlockVolumeBase. Is the base class from which block volumes will extend
  • BlockVolume
    • **Breaking Change:**Converted BlockVolume from an interface to a class, which extends BlockVolumeBase
  • @minecraft/server.Entity.playAnimation
    • Moved Entity.playAnimation from beta to stable
  • Moved enum BlockPistonState from beta to 1.9.0
  • Moved class BlockPistonComponent from beta to 1.9.0
  • Moved class PistonActivateAfterEvent from beta to 1.9.0
  • Moved class PistonActivateAfterEventSignal from beta to 1.9.0
  • ItemComponents
    • Added isCooldownCategory(cooldownCategory: string) : boolean to ItemCooldownComponent
    • Added getCooldownTimeRemaining(player: Player) : number to ItemCooldownComponent
    • Added MinecraftCooldownCategoryTypes to @minecraft/vanilla-data
      • Added getHiddenHudElements(): HudElements[]
      • Added isForcedHidden(hudElement: HudElements): Boolean
      • Added resetHudElements(): void
      • Added setHudVisibility(visible: HudVisibility, hudElements?: HudElements[]): void
      • Added hideAllExcept(hudElements?: HudElements[])
    • Added interface BlockFilter. Used to include / exclude blocks by tag, type and permutation
    • BlockRaycastOptions
      • Added optional member BlockFilter
      • Updated getBlockFromRay(location: Vector3, direction: Vector3, options?: BlockRaycastOptions): BlockRaycastHit | undefined to throw if the BlockFilter include / exclude types cannot be resolved inside BlockRaycastOptions
      • Moved ItemDurabilityComponent from beta to 1.9.0
    • Debug Utilities
      • Started publishing the debug utilities type information
      • Added a disableWatchdog method that lets you disable and enable the scripting watchdog in your scripts
      • Added function playSound(soundId: string, location: Vector3, soundOptions?: WorldSoundOptions): void - Plays a sound at a specified location for all players in the dimension
      • Moved getAllStates API from beta to stable
        • clearJob(jobId: number) - Will now clear iterations in the current tick as well as any scheduled for future ticks. Previously would only clear iterations in future ticks
      • @minecraft/server.WeatherChangeAfterEvent
        • Moved WeatherChangeAfterEvent from beta to stable
        • Moved setOnFire from beta to 1.9.0
        • Moved extinguishFire from beta to 1.9.0
      • Moved EntityOnFireComponent from beta to 1.9.0
        • Moved getEquipmentSlot from beta to 1.9.0
      • Moved BlockStateType from beta to 1.9.0
      • Moved BlockStates from beta to 1.9.0
      • Moved BlockSignComponent from beta to 1.9.0
      • Moved DyeColor from beta to 1.9.0
      • Moved SignSide from beta to 1.9.0
      • Moved ContainerSlot from beta to 1.9.0
      • Moved InvalidContainerSlotError from beta to 1.9.0
        • Moved getSlot from beta to 1.9.0
      • Moved EffectTypes from beta to 1.9.0
      • Moved RawText from beta to 1.9.0
      • Moved createExplosion from beta to 1.9.0
      • Moved ExplosionOptions from beta to 1.9.0
      • Moved DimensionType from beta to 1.9.0
      • Moved DimensionTypes from beta to 1.9.0
      • Moved setDynamicProperty from beta to 1.9.0
      • Moved getDynamicProperty from beta to 1.9.0
      • Moved getDynamicPropertyIds from beta to 1.9.0
      • Moved getDynamicPropertyTotalByteCount from beta to 1.9.0
      • Moved clearDynamicProperties from beta to 1.9.0
      • Added structureManager - A StructureManager instance that allows you to create, load and place structures in the world
      • StructureManager
        • Added function createEmpty(identifier: string, size: Vector3, saveMode?: StructureSaveMode): StructureTemplate - Creates a new empty structure
        • Added function createFromWorld(identifier: string, dimension: Dimension, blockVolume: BlockVolume, options?: StructureCreateOptions): StructureTemplate - Creates a new structure from blocks in the world
        • Added function delete(structure: string | StructureTemplate): boolean - Deletes the structure
        • Added function get(identifier: string): StructureTemplate | undefined - Gets the structure with the specified identifier
        • Added function place(structure: string | StructureTemplate, dimension: Dimension, location: Vector3, options?: StructurePlaceOptions) - Places a structure in the world
      • StructureTemplate
        • Added read-only property id: string- Returns the name of the structure
        • Moved effectAdd from beta to 1.9.0
      • Fixed a bug where item dynamic properties could sometimes be applied to items with a stack size greater than 1
        • Removing function triggerEvent()
      • WorldBeforeEvents
        • Removing property itemDefinitionEvent
      • WorldAfterEvents
        • Removing property itemDefinitionEvent
        • Moved explosion from beta to 1.9.0
      • WorldBeforeEvents
        • Moved explosion from beta to 1.9.0

Dimension

  • getEntities now only returns the entities within the dimension that's being queried