Skip to main content

Minecraft - Trails & Tales - 1.20.0 (Bedrock)

Updated Add-On Template Packs

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

General

  • Fixed "get_equipped_item_name" Molang query not being able to return the old name of some flattened items, eg. red_wool, to wool
  • Introduced new entity filters "all_slots_empty" and "any_slot_empty" to allow searching for empty item slots in a designated equipment location (MCPE-153909)
  • The minecraft:friction component is no longer ignored when calculating ground friction
  • Added spawn_item_event event to minecraft:spawn_entity component. This event is called when an item is spawned
  • Attribute "speed_multiplier" in the "minecraft:boostable" component is now being parsed correctly from json file. Old behavior is maintained for "format_version" lower than 1.20 with 1.35 value rather than what the json file specifies (MCPE-164424)
  • Fixed incorrect content warnings for recipes that used the same blocks but with different data (MCPE-168717)
  • Fixed custom textures that override vanilla blocks with aux metadata as a list of textures

Dedicated Server

  • Note for Linux users: Ubuntu 18.04 LTS (Bionic Beaver) will reach End of Standard Support in 2023. Accordingly, the Linux Minecraft Dedicated Server will also raise its minimum target Ubuntu version to 20.04 LTS (Focal Fossa) in a later R20 update (exact release to be determined). Minecraft server operators using Ubuntu are encouraged to prepare for this transition by updating their deployments to 20.04 LTS as soon as possible.
  • Content logs now show in dedicated server console window with a configurable log level using these new server properties:
    • content-log-level - Sets the minimum level for content logs to output. Allowed values: “verbose”, “info”, “warning”, “error”. Default: info
      • Note: This log level also affects content logs written to disk when using content-log-file-enabled=true
    • content-log-console-output-enabled - Enables or disables content log output to the console window. Default: info

Commands

  • Has item command selector now correctly detects whether or not an actor has a filled Map or Firework Star in their inventory
  • The "inputpermission" command now has a description displayed in the command dialogue preview
  • 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, most noticeable when opening the command window for the first time in a world, but also when loading Command Blocks for old command versions
  • "carpet" block is now flattened into unique variants of 16 colors, namely "white_carpet", "orange_carpet", "magenta_carpet", "light_blue_carpet", "yellow_carpet", "lime_carpet", "pink_carpet", "gray_carpet", "light_gray_carpet", "cyan_carpet", "purple_carpet", "blue_carpet", "brown_carpet", "green_carpet", "red_carpet", "black_carpet"
    • Commands will still work with "carpet", but only new carpet name will be suggested in the command prompt
  • "coral" was split into unique instances, namely "tube_coral", "brain_coral", "bubble_coral", "fire_coral", "horn_coral", "dead_tube_coral", "dead_brain_coral", "dead_bubble_coral", "dead_fire_coral" and "dead_horn_coral"
    • Commands will still work with "coral", but "coral" won't be suggested in the command prompt, rather the new names will
  • Experience Orbs now merge when spawned with the summon command (MCPE-167247)

Entities

  • Custom entities with internal-only components or AI goals will fail to load in game
  • Custom entities are restricted to overriding Vanilla entities released before 1.20. Invalid entities used in the “identifier” or “runtime_identifier” field will result in content errors

Items

  • Custom items using JSON formats 1.16.100 and formats past 1.17.0 can be loaded without the Holiday Creator Feature toggle if there are no Holiday components used
  • Custom items with 'minecraft:record' now show the correct sound description in hover text and on playing in a Jukebox
  • Custom items with 'minecraft:durability' and 'minecraft:repairable' can be combined to repair them without requiring a custom item entry
  • 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 Mob 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
  • Released the “minecraft:display_name” item component out of experimental in json formats 1.20.0 and higher
  • Released the “minecraft:durability” item component out of experimental in json formats 1.20.0 and higher
  • Released the “minecraft:fuel” item component out of experimental in json formats 1.20.0 and higher
  • Released the “minecraft:entity_placer” item component out of experimental in json formats 1.20.0 and higher
  • Released the “minecraft:icon” item component out of experimental in json formats 1.20.0 and higher

Add-Ons

  • Fixed an issue that prevented custom entity spawn eggs from being supported in trade tables (MCPE-170184)

Molang

  • Fixed a crash affecting some Marketplace packs preventing them from loading
    • There is now a limit on the amount of nested sub-expressions each Molang expression can have

Experimental Features

Camera Command

  • Added /camera command as part of the experimental Cameras toggle
    • This command can switch to custom camera perspectives or fade the screen
    • Use /help camera to get a full list of options
  • Added a new experimental Cameras toggle to allow for custom camera perspectives

Items

  • Items with the ‘minecraft:throwable component now trigger the ‘throw’ sound effect when used

Add-Ons

  • Added PlacementDirection and PlacementPosisition BlockTraits
    • The PlacementDirection trait can enable the "minecraft:cardinal_direction" and/or "minecraft:facing_direction" states on a block.
      • "minecraft:cardinal_direction" is a four value string state ["north", "south", "east", "west"] that describes what cardinal direction the player was facing when they placed the block.
      • "minecraft:facing_direction" is a six value string state ["down", "up", "north", "south", "east", "west"] that describes what direction the player was facing when they placed the block.
      • Values for these states are set when the block is placed.
    • The PlacementPosition trait can enable the "minecraft:block_face" and/or "minecraft:vertical_half" states on a block.
      • "minecraft:block_face" is a six value string state ["down", "up", "north", "south", "east", "west"] that describes what face the block was placed on.
      • "minecraft:vertical_half" is a two value string state ["bottom", "top"] that describes whether the block was placed in the upper or lower half of a block position.
      • Values for these states are set when the block is placed.
    • Can access all states associated with BlockTraits through the "block_property" Molang queries and "set_block_property" event responses.
    • Note: Use of BlockTraits in JSON is currently behind the "Upcoming Creator Features" toggle
  • Removed "knockback_resistance" item component
  • Pumpkin blocks use the string type state "minecraft:cardinal_direction" instead of the int type "direction" state
  • Removed "dye_powder" item component
  • Items using the minimum duration for the “minecraft:fuel” component now work in the Blast Furnace and Smoker

Script API

  • 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:
    • All before events moved from world.events into world.beforeEvents property. The "before" prefix has been removed. Functions that alter world state are prohibited in before event callbacks. Read-only methods and properties are allowed. Set methods are limited to the event object itself. Any use of restricted methods and properties will throw an exception.
    • For example, system.events.beforeWatchdogTerminate is now considered a "before" event. Functions that alter world state are prohibited in before event callbacks. Read-only methods and properties are allowed. Set methods are limited to the event object itself. Any use of restricted methods and properties will throw an exception
    • For example, system.events.scriptEventReceived is now considered an "after" event. After event callbacks are executed in a deferred manner. Using /scriptEvent something will queue script to execute at a later point
  • 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
      • _world.events.beforeCha_t renamed to world.events.beforeChatSend
      • world.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 BlockPermutation.resolve() would fail to resolve custom block properties
  • Renamed Entity.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 t_ryTeleport(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 Entity.applyDamage
  • Added interface EntityApplyDamageByProjectileOptions. Additional options about the source of damage to use as input in Entity.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 world.playSound and player.playSound respectively
    • World.playSound now requires a location argument
    • When calling playMusic and queueMusic, an error will now be thrown if musicOptions.volume is less than 0.0
    • When calling playMusic and queueMusic, an error will now be thrown if musicOptions.fade is less than 0.0
    • When calling playSound, an error will now be thrown if soundOptions.pitch is less than 0.01
    • When calling playSound, an error will now be thrown if soundOptions.volume is less than 0.0
  • 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
  • ItemUseOnEvent
    • Renamed property item to itemStack
    • Replaced function getBlockLocation with read-only property blockLocation: Vector3
    • Replaced properties faceLocationX and faceLocation with read-only property faceLocation: Vector2
  • BlockHitInformation
    • Replaced properties faceLocationX and faceLocation with read-only property faceLocation: Vector2
  • After Events
    • All non-before events have been moved from _world.event_s to world.afterEvents
    • events has been removed from the world object
    • After events do not execute immediately, instead they are deferred until a later point in the tick when they are flushed. It is guaranteed that all events fired in a tick are flushed within a tick
  • Fixed a bug where modified equipment and container slots were not being synced to clients
  • @minecraft/server
    • Renamed BlockProperties to BlockStates
    • Renamed BlockPermutation.getAllProperties to BlockPermutation.getAllStates
    • Renamed _BlockPermutation.getPropert_y to BlockPermutation.getState
  • Added class EffectTypes
    • Added function get(identifier: string): EffectType - Returns the effect type if it exists
    • Added function getAll(): EffectType[] - Returns all of the effects
  • Updated class Effect
    • Updated duration property. Is the duration of the effect in ticks
    • Added property typeId. Returns the effect’s type id
  • Added interface EntityEffectOptions { amplifier?: number, showParticles?: boolean }
  • Added function Entity.removeEffect(effectType: EffectType | string): boolean - Removes an effect from an Entity. Returns false if the effect is not found or does not exist
  • Updated function Entity.getEffect(effectType: EffectType | string): Effect | undefined - Gets the effect if it exists on the entity. Otherwise returns undefined
  • Updated function Entity.addEffect(effectType: EffectType | string, duration: number, options?: EntityEffectOptions): boolean - Adds an effect to the Entity. Returns false if the effect cannot be added (If the effect does not exist, the duration is negative)
  • New APIs moved from beta to stable @minecraft/server 1.2.0:
    • Moving _applyDamage(amount: number, options?: EntityApplyDamageByProjectileOptions | EntityApplyDamageOptions): boolea_n to 1.2.0
    • Moving kill(): boolean to 1.2.0
    • Moving EntityApplyDamageOptions to 1.2.0
    • Moving EntityApplyDamageByProjectileOptions to 1.2.0
    • Moving EntityDamageCause to 1.2.0
    • Moving addTag(tag: string) to 1.2.0
    • Moving removeTag(tag: string) to 1.2.0
    • Moving hasTag(tag: string) to 1.2.0
    • Moving getTags() to 1.2.0
    • Moved Container, _BlockInventoryComponent, a_nd EntityInventoryComponent to 1.2.0
    • Moved Music APIs from beta to stable
    • Moved Sound APIs from beta to stable
    • Moved ModalFormDataMessageFormData, and ActionFormData to 1.0.0
    • Fixed bug in response of MessageFormResponse where selection was inverted from which button was selected. button1 now refers to the left button and results in a selection of 0 and button2 now refers to the right button and results in a selection of 1
    • Moved ItemStack constructor and getter APIs to 1.2.0
    • Moved EntityItemComponentItemComponent, ItemType, and ItemLockMode to 1.2.0
    • Moving applyImpulse(vector: Vector3): void to 1.2.0
    • Moving applyKnockback(directionX: number, directionZ: number, horizontalStrength: number, verticalStrength: number): void to 1.2.0
    • Moving clearVelocity(): void to 1.2.0
    • Moved runCommand from beta to 1.2.0
    • Moving getComponent(componentId: string): EntityComponent | undefined method to 1.2.0
    • Moving getComponents(): EntityComponent[] method to 1.2.0
    • Moving hasComponent(componentId: string): boolean method to 1.2.0
    • Moving EntityComponent class to 1.2.0
    • Moving EntityBaseMovementComponent class to 1.2.0:
      • Moving readonly maxTurn: number property to 1.2.0
      • Moving the following additional EntityBaseMovementComponent subclasses to 1.2.0:
        • EntityMovementAmphibiousComponent
        • EntityMovementBasicComponent
        • EntityMovementFlyComponent
        • EntityMovementGenericComponent
        • EntityMovementHoverComponent
        • EntityMovementJumpComponent
        • EntityMovementSkipComponent
    • Renamed EntityIsDyableComponent class to EntityIsDyeableComponent and moved to 1.2.0
    • Moving the following additional EntityComponent subclasses to 1.2.0:
      • EntityCanClimbComponent
      • EntityCanFlyComponent
      • EntityCanPowerJumpComponent
      • EntityColorComponent
      • EntityFireImmuneComponent
      • EntityFloatsInLiquidComponent
      • EntityFlyingSpeedComponent
      • EntityFrictionModifierComponent
      • EntityGroundOffsetComponent
      • EntityIsBabyComponent
      • EntityIsChargedComponent
      • EntityIsChestedComponent
      • EntityIsHiddenWhenInvisibleComponent
      • EntityIsIgnitedComponent
      • EntityIsIllagerCaptainComponent
      • EntityIsSaddledComponent
      • EntityIsShakingComponent
      • EntityIsShearedComponent
      • EntityIsStackableComponent
      • EntityIsStunnedComponent
      • EntityIsTamedComponent
      • EntityMarkVariantComponent
      • EntityPushThroughComponent
      • EntityScaleComponent
      • EntitySkinIdComponent
      • EntityVariantComponent
      • EntityWantsJockeyComponent
  • Enchantments
    • Removed MinecraftEnchantmentTypes class. Use MinecraftEnchantmentTypes from @minecraft/vanilla-data module for minecraft version specific information.
    • Added support for "strings" in all Enchantment methods for specifying the enchantment type
  • source on ExplosionBeforeEvent is now an optional property because explosions may not have a source
  • Tameable Component
    • Removed unimplemented tameEvent from TameableComponent
  • Updated API to better handle operations outside of loaded and ticking areas
  • PositionInUnloadedChunkError: Exception thrown when trying to interact with a Block object that isn't in a loaded and ticking chunk anymore
  • PositionOutOfWorldBoundariesError: Exception thrown when trying to interact with a position outside of dimension height range
  • Dimension
    • getBlock now returns an optional Block to reflect it might return 'undefined' if asking for a block at an unloaded chunk
  • Signs
    • Added optional SignSide parameter to functions set_T_ext, getTextgetRawTextsetTextDyeColor, and getTextDyeColor on BlockSignComponent to support getting and setting text and colors on both sides of signs
    • Added isWaxed property to BlockSignComponent indicating whether players can edit the sign or not
    • Added setWaxed method to BlockSignComponent to block players from editing the sign
  • runCommand and runCommandAsync on Dimension and Entity can now fail with a CommandError
    • runCommand can throw a CommandError exception
    • runCommandAsync will pass a CommandError into the reject handler