Minecraft 1.20.5 has officially been released for players across the world! So, today, we explore the Minecraft 1.20.5 patch notes, and which features we recommend giving a try.
The highlights of Minecraft 1.20.5 are, without a doubt, the armadillo mob and wolf variants! Armadillos are easily frightened, but with care and time, they will continuously produce armadillo scute, the item needed to craft wolf armor. As for the wolves themselves, nine wolf variants can now be found! Each type and their biomes are under the “Wolf Variants” section of the patch notes down below.
Patch Notes
New Features
Added Armadillo and Armadillo Scutes
Added Wolf Armor
Added Wolf variants
Armadillo
The Armadillo is a new passive mob
Armadillos drop Armadillo Scutes periodically, and when brushed
Armadillos spawn in Savannas and Badlands
The Armadillo’s favorite food is the Spider Eye
Armadillos are tempted by Spider Eyes
Feeding two adult Armadillos Spider Eyes makes them breed
Feeding a baby Armadillo a Spider Eye makes it grow up quicker
The Armadillo rolls up when it detects a threat such as:
A player sprinting, riding a mount, or riding a vehicle
Undead mobs
A mob or a player it has recently been attacked by
The Armadillo does not roll up when:
Fleeing, in water, in the air, or when on a Lead
When an Armadillo is rolled up:
It does not walk, cannot eat, and will not be tempted by food
Its shell will protect it, reducing damage taken, even allowing it to fully resist weak attacks
It will continue to scan for threats, occasionally peeking to check the surroundings
If no threats are detected for 4 seconds, it will unroll
Spiders and Cave Spiders will run away from Armadillos that are not in a rolled up state
Armadillo Scutes
Armadillo Scutes are dropped by Armadillos periodically or when an Armadillo is brushed
Armadillo Scutes can be used to craft Wolf Armor
Dispensers can be used to brush Armadillo Scutes off Armadillos
Wolf Armor
Wolf Armor can be crafted with Armadillo Scutes and can be dyed in a similar fashion to Leather Armor
The Wolf Armor will protect the Wolf from most damage sources until the armor loses all durability and breaks
Wolf Armor shows signs of breakage as durability goes down
Using Armadillo Scutes on the Wolf Armor while it is equipped on the Wolf will repair it
Using Shears on a Wolf that is wearing armor will drop the armor
Wolf Armor can only be equipped on a tame adult Wolf
Only the Wolf’s owner can equip, repair, and shear Wolf Armor
Dispensers cannot equip nor remove Wolf Armor
Wolf Variants
New Wolf variants have been added. The variant is determined by the biome they spawn in. Wolves spawn in packs, with a default pack size of 4.
Pale Wolf – The Wolf we’re all familiar with. This variant spawns in the Taiga biome
Woods Wolf – A variant that spawns in the Forest biome. This will be the dominant Wolf variant that you will be able to find in the Overworld, since the Forest biome is very common
Ashen Wolf – A variant that spawns in the Snowy Taiga biome
Black Wolf – A variant that spawns in the Old Growth Pine Taiga biome, in smaller packs of 2-4
Chestnut Wolf – A variant that spawns in the Old Growth Spruce Taiga biome, in smaller packs of 2-4
Rusty Wolf – A variant that spawns in a new location for Wolves – the Sparse Jungle biome, in smaller packs of 2-4
Spotted Wolf – A variant that spawns in a new location for Wolves – the Savanna Plateau biome, in larger packs of 4-8
Striped Wolf – A variant that spawns in a new location for Wolves – the Wooded Badlands biome, in larger packs of 4-8
Snowy Wolf – A variant that spawns in the Grove biome. This lone Wolf is a rare type, as it always walks alone
When summoned in other ways (e.g. using the Spawn Egg or using the summon command), the variant selection follows the natural spawning biome rules with the following extensions:
Rusty Wolf: will be selected in all Jungle-like biomes, including Jungle and Bamboo Jungle Biomes
Spotted Wolf: will be selected in all Savanna-like biomes, including Savanna and Windswept Savanna Biomes
Striped Wolf: will be selected in all Badlands-like biomes, including Badlands and Eroded Badlands Biomes
Advancements
Added the following advancements:
Isn’t It Scute? – Get Armadillo Scutes from an Armadillo using a Brush
Shear Brilliance – Remove Wolf Armor from a Wolf using Shears
Good as New – Repair a damaged Wolf Armor using Armadillo Scutes
The Whole Pack – Tame one of each Wolf variant
Changes
The UI has been updated with a fresher look
Decreased the default size of the spawn chunks and made the value configurable
Updated the health and damage dealt by Tamed Wolves
Adjusted spawning conditions for Wolves, allowing them to spawn on Coarse Dirt and Podzol blocks
Adjusted the texture of the Wolf Collar layer to be more consistent with the new Wolf Armor
Adjusted passive mobs spawning in Grove biome to only include Rabbits, Foxes and Wolves
Minor tweaks to existing Blocks, Items and Entities
Added option to use Japanese variants of CJK characters
Added support for Viossa language
When entities leave or enter The End, the area they arrive in will now stay loaded for 15 seconds, matching the behavior of Nether Portals
Improvements to the Game’s Performance
Improved handling of errors during saving and loading
UI Updates
The UI has been updated to sport a fresher look and to be more consistent when it comes to the layout of different UI elements, all while retaining the essence and feel of the old screens.
The menu background dirt texture has been replaced by a darkened background
The dirt background can be restored by using the built-in Programmer Art Resource Pack
Outside the game, the main menu panorama is displayed behind all screens
In the game, the world will be visible behind all screens
Paired with the darkened background is a blur
The strength of the blur can be configured in Video Settings and Accessibility Settings
In-game screens such as containers and books are not affected by these changes
Screen elements such as titles and buttons are positioned more consistently across different screens
The World Backups screen and the Players screen in the Realms menu have been updated
Lists now have clearer borders at the top and bottom
Button tooltips will no longer appear when hovering outside the containing element
After defeating the Ender Dragon and entering the End Portal, the End Poem and credits are now displayed with a background based on the animated End Portal effect
The animated Nether Portal texture is displayed when changing dimension to or from The Nether
The animated End Portal effect is displayed when changing dimension to or from The End
Spawn Chunk Changes
The size of the spawn chunks changed from a radius of 10 (19×19 entity-ticking chunks) to a radius of 2 (3×3 entity-ticking chunks)
This was done to reduce loading times, as well as memory and CPU usage
We opted to not fully remove spawn chunks to allow players who currently utilize this functionality to continue to do so
Added a new gamerule spawnChunkRadius to set the size of the spawn chunks
Possible values are 0 to 32, where 0 completely disables the spawn chunks and 10 is equivalent to the functionality before this change
Default value is 2, equivalent to 3×3 entity ticking chunks
Note that setting this to a high value might require allocating more memory for the game in the Launcher
Tamed Wolves Health And Damage
Tamed Wolves now have 40 health points (20 hearts) instead of 20 health points (10 hearts)
They no longer take half of the damage from most environmental sources like they used to do
In most cases, this change will make no difference given the health boost, but they can now withstand more damage from players and arrows
Feeding a Wolf now heals twice as many health points
Minor Tweaks To Blocks, Items And Entities
Renamed scutes that drop from Turtles to Turtle Scutes
Added unique sounds for Cobwebs
Enchantments on Items are now always listed in the same order in tooltips, regardless of how they were added to those items
Adjusted flying behaviour for Bees and Parrot to keep them from overshooting their position when flying up and down
Llamas and Shulkers are no longer able to destroy Armor Stands
Status effect particle colors are no longer blended into one particle color
All active visible status effect particles are now rendered separately
Ctrl+Picking a renamed block (such as a Chest) in Creative Mode will now give a renamed item
Ctrl+Picking a block no longer lists “(+NBT)” in the item tooltip
Accessibility
The default focus is now always set when entering or exiting any menu while navigating using tab or arrow keys
Added a new accessibility option to control the strength of the background blur when a menu is open
Japanese Font Variants
A new option has been added to select Japanese variants for some CJK characters
Replacement glyphs come from the Japanese version of the Unifont font
The new option is included in a new “Font Settings” menu, accessible from the “Language” menu
The default value of this option is based on the system locale language setting
The “Force Unicode” button has been moved to “Font Settings”
Performance Improvements
Improved Hopper performance
Hoppers will no longer try to pick up item entities if there is a full block placed above it
Beehives and Bee Nests are exempt from this
This does not affect Minecarts with Hoppers
Reduced time needed to generate Explorer Maps to Buried Treasures
Saving And Loading Improvements
In Singleplayer, when errors occur during loading or saving of chunks, a warning will be shown in a toast
Trying to join a Singleplayer world with less than 64 MB free disk space will show a warning screen
Additionally, a warning toast will be shown periodically while in game
Technical Changes
The Data Pack version is now 41
The Resource Pack version is now 32
The game now requires Java 21
The game now requires a 64-bit Operating System
The included Java distribution is now the Microsoft build of OpenJDK 21.0.3
Added transfer and cookie packets for custom servers
Added an option to use a faster region file compression algorithm on dedicated servers
Added a reserved region file compression id for third-party servers to use for custom compression implementations
Changes to optimizing worlds
Improved server TPS debug chart
Allowed server operators to view dedicated server TPS debug chart
Added JFR (Java Flight Recorder) events for individual chunk reads (minecraft.ChunkRegionRead) and writes (minecraft.ChunkRegionWrite)
Network Protocol
Reduced amount of data sent by the server during login by reusing parts of the vanilla data pack
Client chat state is now preserved by default when entering configuration phase
Invalid data in packets sent from a server will now cause the game client to disconnect
To ease the transition period, modded servers can opt out by setting the appropriate field in the handshake/game_profile packet
This option will be removed in the next release
The chat_command_signed packet has been split from chat_command
Commands that do not accept any signed arguments will use the unsigned packet, and will not pass any ‘last seen’ chat updates
Transfer Packets
Custom servers can now request that clients connect to another server with a new packet
When a client is transferred, it will connect to the target server with a new transfer intent (id 3)
By default, servers will not accept incoming transfers and will disconnect the client
This can be changed by setting the accepts-transfers property to true in the server.properties file
Resource packs are maintained across transfers
In the case of a transfer, custom servers can skip authenticating again with a new flag in the clientbound hello packet
Cookie Packets
Cookie packets allow custom servers to request and store data on a client
Each cookie may be up to 5 KiB in size
Cookies may be requested during login, configuration and play phases — but only stored during the configuration and play phases
Cookies persist across server transfers but are not persisted when the player disconnects
This allows servers to pass along information such as authentication or custom game data to the new server
Region File Compression Algorithm
Added a dedicated server configuration property region-file-compression with 3 possible values:
deflate, the default option. Uses the old algorithm
lz4 uses LZ4 algorithm, which requires less CPU time to compress and decompress but uses more disk space
none does not compress the data
This consumes significantly more space and requires significant time to read and write, even though CPU is used less
Might make sense together with filesystem level compression
Changing the compression algorithm will not automatically recompress the world
New or updated chunks will use the newly configured algorithm, but the old ones will stay in the previous format
Reserved Compression Id For Third-Party Servers
Compression id 127 can now be used for custom implementations of region file compression
When used, the version id must be followed by a namespaced string representing the custom algorithm used
World Optimizing Changes
Optimizing singleplayer worlds and running a dedicated server with the forceUpgrade option now also upgrades contentsof entities and poi directories of the world
Added a new recreateRegionFiles dedicated server startup parameter
It will trigger world optimization similar to forceUpgrade, but will also rewrite all the chunks independentlyof whether they have been upgraded
This will create fresh and defragmented region files
Using this parameter after changing the region-file-compression server property will recompress all region filesin the new format
Improved The Server Tps Debug Chart
As before, it is accessible by pressing F3 + 2
The bottom dark red section of the chart displays the time spent during the main logic of the server tick
This is equivalent to the value displayed in the old chart
The light brown section displays time spent running scheduled tasks
The purple section displays time spent executing all other code during the tick
The top light green (or yellow or red depending on lag) section displays time spent idling, waiting for next tick
The min, avg, max aggregate values are based on the sum of the first 3 sections
Server operators can now view the TPS debug chart while connected to their dedicated server
Chat
Client chat state (on-screen messages and chat input history) is now preserved by client when entering and exiting configuration phase
Message signature chain handling remains unchanged – going into configuration phase starts a new session
If the client has a message delay configured, any pending messages will be delivered immediately before leaving the world
The server can clear chat state by sending a reset_chat packet in configuration phase
Data Pack Versions 27 Through 41
The Data Pack version used by the game is now 41. These are the changes compared to version 26, used in 1.20.4.
Renamed scute item to turtle_scute
Changed Item Stack data format, introducing Item Stack Components
Added many new Attributes
Added new loot functions
Added new advancement predicates
Added new tags
Recipe results can now specify component data
Added data-driven registries for Banner Patterns and Wolf Variants
Particle representation in commands and area effect clouds has been changed
Item Data Format
We have made some large changes to how Item Stack-specific properties are stored and represented in this release, replacing the current NBT ‘tag’ with structured ‘components’.
This change has been made in order to:
Validate item properties at load time, enabling easier identification of invalid data in commands and data packs
This should avoid any ‘silent’ breakages in commands specifying custom item data for any potential future format changes
Continue to evolve the game to enable the creation of dynamic content
Improve performance in cases where the game needs to frequently look up some property of an item (e.g. Armor Trims rendering every frame)
We understand that this is a significant breaking change for many datapacks and custom maps which will require significant effort to upgrade
We do however believe that this builds critical foundations for future extensibility. We have taken care to ship these changes all at once, with the hope that this avoids future incremental changes requiring many small updates to packs.
The current NBT ‘tag’ has existed for quite some time, and we are aware that a lot of clever techniques have been developed with this for commands and data packs. Over the course of the snapshot series, we have hugely appreciated your feedback on these changes, allowing us to avoid (often undocumented) functionality being lost without suitable alternatives.
Unstructured NBT data attached to stacks of items (tag field) has been replaced with structured ‘components’
This data is parsed and validated when the item is loaded
This should improve performance in certain scenarios (e.g. Armor Trim rendering) when item data was frequently compared or requested and parsed
Custom data can still be stored in the minecraft:custom_data component
Item types (e.g. minecraft:stick) hold a set of default components on an item that individual item stacks can override
The format of serialized items and items in data packs has been updated for consistency and to support components
Item syntax in commands has been updated to support components
When advanced tooltips are enabled (F3+H), the number of components will be displayed instead of number of tags
Default component values for items are now listed in items.json generated in reports directory
Block definitions are now added to blocks.json report (note: those definitions are not used yet and present only for informational purposes)
Migrated Item Stack Components
These are item stack components that replace existing functionality that was formerly specified in item NBT.All commands and data definitions will need to be upgraded to use these formats. Items in-world will however be automatically upgraded.
minecraft:custom_data
Can be used for custom data storage on an item
When upgrading a world, any non-game data in the item tag will be moved into here
Format: object with any fields
e.g. custom_data={some:’data’}
Can be modified with the set_custom_data and copy_custom_data loot functions
minecraft:damage
The amount of durability removed from an item
If removed, the item will not be damageable
Replaces Damage tag
Format: non-negative integer
e.g. damage=12
For damageable items (with the max_damage component), has an implicit default value of: 0
Can be modified with the set_damage loot function
minecraft:repair_cost
The additional experience cost required to modify an item in an Anvil
Replaces RepairCost tag
Format: non-negative integer
e.g. repair_cost=12
If not set, has an implicit default value of: 0
minecraft:unbreakable
If set, the item will not lose any durability when used
Replaces Unbreakable boolean tag
Format: object with fields
show_in_tooltip: boolean (default: true)
If true, an ‘Unbreakable’ line will be included in the tooltip
Replaces 3rd bit of HideFlags tag
e.g. unbreakable={}, unbreakable={show_in_tooltip:false}
minecraft:enchantments
Stores a list of enchantments and their levels on an item
Replaces Enchantments tag
Format: object with fields
levels: object of enchantment (id string) to level (integer [0; 255])
show_in_tooltip: boolean (default: true)
If false, no enchantments will be shown in the item tooltip
Replaces 1st bit of HideFlags tag
e.g. enchantments={levels:{‘minecraft:protection’:2},show_in_tooltip:false}
Alternatively, can be defined as an inline map of enchantment id to level
e.g. enchantments={sharpness:1}
If not set, has an implicit default value of: {levels:{}}
Can be modified with the set_enchantments, enchant_randomly, and enchant_with_levels loot functions
minecraft:stored_enchantments
Stores list of enchantments and their levels for an Enchanted Book
Unlike minecraft:enchantments, the effects provided by enchantments do not apply from this component
Replaces StoredEnchantments tag on Enchanted Books
Format: same as minecraft:enchantments
show_in_tooltip value replaces 6th bit of HideFlags tag
On Enchanted Books, has an implicit default value of: {levels:{}}
minecraft:custom_name
Custom name override for an item (as set by renaming with an Anvil)
Replaces display.Name tag
Format: JSON chat component string
e.g. custom_name='{“text”: “This item is renamed!”, “color”: “red”}’
Can be modified with the set_name loot function
minecraft:lore
Additional lines to include in an item’s tooltip
Replaces display.Lore tag
Format: list of JSON chat component strings (max: 256 entries)
e.g. lore=[‘{“text”: “The cake is a lie!”}’]
If not set, has an implicit default value of: []
Can be modified with the set_lore loot function
minecraft:can_break
Controls which blocks a player in Adventure mode can break with this item
Replaces CanDestroy tag
These were previously stored as flat strings, but now use the more flexible block predicate format already used in loot tables and advancements
Format: object with fields
predicates: list of block predicates
blocks: block, list of blocks, or hash-prefixed block tag
nbt: block entity NBT to match
state: map of state property key to values to match
show_in_tooltip: boolean (default: true)
Replaces 4th bit of HideFlags tag
e.g. can_break={predicates:[{blocks:’minecraft:furnace’,state:{facing:’north’}]}
Alternatively, can be defined as a single block predicate
e.g. can_break={blocks:’minecraft:stone’}
minecraft:can_place_on
Controls which blocks a player in Adventure mode can place on with this item
Replaces CanPlaceOn tag
Format: object with fields
predicates: list of block predicates
Same as can_break.predicates
show_in_tooltip: boolean (default: true)
Replaces 5th bit of HideFlags tag
e.g. can_place_on={predicates:[{blocks:’minecraft:furnace’,state:{facing:’north’}]}
Alternatively, can be defined as a single block predicate
e.g. can_place_on={blocks:’minecraft:stone’}
minecraft:dyed_color
Represents a color applied to a dyeable item (in the #minecraft:dyeable item tag)
Replaces display.color tag
Format: object with fields
rgb: integer, RGB value
show_in_tooltip: boolean (default: true)
Replaces 7th bit of HideFlags tag
e.g. dyed_color={rgb:16711680}
Alternatively, can be defined as an inline integer RGB value
e.g. dyed_color=16711680
minecraft:attribute_modifiers
Holds attribute modifiers applied to any item
Replaces AttributeModifiers tag
Format: object with fields (default: {modifiers:[]})
modifiers: list of attribute modifiers
type: attribute id
Replaces AttributeName
slot: one of:
any (default)
hand: either in main or offhand (new)
armor: any armor slot (new)
mainhand
offhand
head
chest
legs
feet
body (new)
Modifiers will only apply when the item is equipped in the specified slot
Replaces Slot
uuid: uuid, uniquely represents this modifier
Only one modifier can exist with the same id
Replaces UUID
name: string, human-readable name
Replaces Name
amount: double, number of units to modify this attribute (controlled by operation)
Replaces Amount
operation: one of:
add_value (was 0): Adds amount to the attribute
add_multiplied_base (was 1): Adds amount * base value to the attribute
add_multiplied_total (was 2): Adds amount * total value (from all previous modifiers) to the attribute
Replaces Operation with integer ids
show_in_tooltip: boolean (default: true)
Replaces 2nd bit of HideFlags tag
e.g. attribute_modifiers={modifiers:[{type:’minecraft:generic.scale’,uuid:[1,2,3,4],name:’Big!’,amount:1.0,operation:’add_multiplied_base’}]}
Alternatively, can be defined as a direct list of modifiers
e.g. attribute_modifiers=[{type:’generic.scale’,uuid:[1,2,3,4],name:’Big!’,amount:1.0,operation:’add_multiplied_base’}]
If not set, has an implicit default value based on the item type’s default attributes (e.g. attack damage for weapons)
Can be modified with the set_attributes loot function
minecraft:charged_projectiles
Holds all projectiles that have been loaded into a Crossbow
If not present, the Crossbow is not charged
Replaces Charged and ChargedProjectiles tags
Format: list of item stacks
Cannot store empty/air items
e.g. charged_projectiles=[{id:’minecraft:arrow’}]
No longer restricted to 3 entries
Can be modified with the modify_contents and set_contents loot functions
minecraft:intangible_projectile
Marks that a projectile item would be intangible when fired (i.e. can only be picked up by a creative mode player)
Only set when items are inside a Crossbow’s charged_projectiles component
Format: empty object
e.g. intangible_projectile={}
minecraft:bundle_contents
Holds all items stored inside of a Bundle
If removed, items cannot be added to the Bundle
Replaces Items tag
Format: list of item stacks
Cannot store empty/air items
e.g. bundle_contents=[{id:’minecraft:poisonous_potato’}]
On Bundles, has an implicit default value of: []
Can be modified with the modify_contents and set_contents loot functions
minecraft:map_color
Represents the tint of the decorations on the Filled Map item
Replaces display.MapColor tag
Format: integer, RGB value
e.g. map_color=16711680
On Filled Maps, has an implicit default value of: 4603950
minecraft:map_decorations
Holds a list of markers to be placed on a Filled Map (used for Explorer Maps)
Replaces Decorations tag
Format: map of unique decoration id to decorations
type: one of:
player (was 0)
frame (was 1)
red_marker (was 2)
blue_marker (was 3)
target_x (was 4)
target_point (was 5)
player_off_map (was 6)
player_off_limits (was 7)
mansion (was 8)
monument (was 9)
banner_white (was 10)
banner_orange (was 11)
banner_magenta (was 12)
banner_light_blue (was 13)
banner_yellow (was 14)
banner_lime (was 15)
banner_pink (was 16)
banner_gray (was 17)
banner_light_gray (was 18)
banner_cyan (was 19)
banner_purple (was 20)
banner_blue (was 21)
banner_brown (was 22)
banner_green (was 23)
banner_red (was 24)
banner_black (was 25)
red_x (was 26)
village_desert (was 27)
village_plains (was 28)
village_savanna (was 29)
village_snowy (was 30)
village_taiga (was 31)
jungle_temple (was 32)
swamp_hut (was 33)
trial_chambers (new)
Replaces type byte with numeric ids
x: double, world coordinate
z: double, world coordinate
rotation: float, clockwise rotation from north in degrees
Replaces rot double
e.g. map_decorations={‘Some marker’:{type:’target_x’,x:123.0,z:-45.0,rotation:0.0f}}
On Filled Maps, has an implicit default value of: {}
minecraft:map_id
References the shared map state holding map contents and markers for a Filled Map
Replaces map tag
Format: integer id
e.g. map_id=1
minecraft:custom_model_data
Can be used to replace the models of items by selecting for the minecraft:custom_model_data property in the item model
Replaces CustomModelData tag
Format: integer value
e.g. custom_model_data=43
Can be modified with the set_custom_model_data loot function
minecraft:potion_contents
Holds the contents of a potion (Potion, Splash Potion, Lingering Potion), or potion applied to an item (Tipped Arrow)
Replaces Potion, CustomPotionColor, and custom_potion_effects tags
Format: object with fields
potion: potion id (optional)
The potion type in this item: the item will inherit all effects from this
custom_color: integer, RGB value (optional)
Overrides the visual color of the potion
custom_effects: list of effect instances (default: [])
Additional list of custom effects that this item should apply, that may not be representable by an existing potion
e.g. potion_contents={potion:’minecraft:invisibility’,custom_color:16711680}
Alternatively, can be defined as a single potion ID
e.g. potion_contents=”invisibility”
On Potion or Tipped Arrow items, has an implicit default value of: {}
Can be modified with the set_potion loot function
minecraft:writable_book_content
Holds the contents in a Book and Quill
Replaces pages and filtered_pages tags
The pages list objects directly, with {raw:’…’} wrapping
filtered_pages are pulled by index keys into the relevant page entry under the filtered field
List of particle colors to fade to, randomly selected from
has_trail: boolean (default: false)
has_twinkle: boolean (default: false)
Renamed from Flicker tag
e.g. firework_explosion={shape:’large_ball’,colors:[16711680],has_trail:true}
Can be modified with the set_firework_explosion loot function
minecraft:fireworks
Stores all explosions crafted into a Firework Rocket, as well as flight duration
Replaces Fireworks.Explosions and Fireworks.Flight tags
Format: object with fields
explosions: list of explosions (max: 256 entries)
Same format as minecraft:firework_explosion component
flight_duration: unsigned byte, number of gunpowder in this rocket
e.g. fireworks={explosions:[{shape:’large_ball’,colors:[16711680],has_trail:true}],flight_duration:2}
On Firework Rocket, has an implicit default value of: {explosions:[],flight_duration:1}
Can be modified with the set_fireworks loot function
minecraft:profile
Controls the skin displayed on a Player Head
Copied to Player Head block when placed
Replaces SkullOwner tag
If only a name is specified, it will be resolved into the corresponding player ID and skin data
Unlike SkullOwner which only supported resolution by name, if only id is specified, the profile and skin will be resolved from this UUID
Format: object with fields
name: string, player profile name (optional)
Must be a valid player name (max 16 characters, no spaces, or special characters)
As this could exist in previous data formats, but would not resolve to a skin, this is replaced by the item_name component which is persisted when placed and broken
id: uuid, player profile id (optional)
properties: list of properties (optional)
name: string, property name (e.g. textures)
value: string (base64 encoded texture data)
signature: string (optional)
e.g. profile={name:’MHF_Sheep’}
Alternatively, can be defined as a simple player profile name string
e.g. profile=’MHF_Sheep’
Can be modified with the fill_player_head loot function
minecraft:note_block_sound
Controls the sound played by a Player Head when placed on a Note Block
Copied to Player Head block when placed
Replaces BlockEntityTag.note_block_sound tag
Format: sound event id
e.g. note_block_sound=’minecraft:ambient.cave’
minecraft:base_color
Stores the base color for a Shield
Replaces BlockEntityTag.Base tag
Format: one of
white (was 0)
orange (was 1)
magenta (was 2)
light_blue (was 3)
yellow (was 4)
lime (was 5)
pink (was 6)
gray (was 7)
light_gray (was 8)
cyan (was 9)
purple (was 10)
blue (was 11)
brown (was 12)
green (was 13)
red (was 14)
black (was 15)
e.g. base_color=’magenta’
minecraft:banner_patterns
Stores the additional patterns applied to a Banner or Shield
Copied to Banner block when placed
Replaces BlockEntityTag.Patterns tag
Format: list of banner patterns
pattern: banner pattern registry id
Replaces short banner pattern code in Patterns[].Pattern
color: dye color name
Replaces integer dye color id in Patterns[].Color
e.g. banner_patterns=[{pattern:’minecraft:stripe_top’,color:’red’}]
On Banners and Shields, has an implicit default value of: []
Can be modified with the set_banner_pattern loot function
minecraft:pot_decorations
Stores the Sherds applied to each side of a Decorated Pot
Copied to Decorated Pot block when placed
Replaces BlockEntityTag.sherds tag of same format
Format: list of sherd item ids
e.g. [‘arms_up_pottery_sherd’,’angler_pottery_sherd’,’danger_pottery_sherd’,’shelter_pottery_sherd’]
On Decorated Pots, has an implicit default value of: [‘minecraft:brick’,’minecraft:brick’,’minecraft:brick’,’minecraft:brick’]
minecraft:container
Holds the contents of container blocks (Chests, Shulker Boxes) in item form
Copied into container block when placed
Replaces BlockEntityTag.Items tag
Format: list of slots
slot: integer [0; 255], representing a slot in the container
item: item stack
e.g. container=[{slot:7,item:{id:’diamond_pickaxe’,components:{‘minecraft:unbreakable’:{}}}}]
On container blocks, has an implicit default value of: []
Can be modified with the modify_contents and set_contents loot functions
minecraft:bees
Holds the bees inside a Beehive or Bee Nest
Copied to Beehive or Bee Nest block when placed
Replaces BlockEntityTag.Bees tag
Format: list of bees
entity_data: map of string to string
id: entity id
The remainder tags merged into the Bee when spawned
On Beehive and Bee Nest, has an implicit default value of: []
minecraft:lock
Holds the lock state of a container-like block
An item with a custom name of the same value must be used to open this container
Copied to container block when placed
Replaces BlockEntityTag.Lock tag
Format: string value, representing the key
e.g: lock=’hunter2′
minecraft:container_loot
Holds the unresolved loot table and seed of a container-like block
Copied to container block when placed
Replaces BlockEntityTag.LootTable and BlockEntityTag.LootTableSeed tags
Format: object with fields
loot_table: loot table id
seed: long, pseudorandom seed to resolve the loot table with (optional)
If not specified, or 0, the seed will be picked randomly when the loot table is evaluated
e.g. container_loot={loot_table:’minecraft:chests/buried_treasure’,seed:123}
Can be modified with the set_loot_table loot function
minecraft:block_entity_data
Stores unstructured NBT data to apply to a block entity when placing a block such as a Chest or Furnace
Replaces previous BlockEntityTag tag, with same behavior
Any block entity data moved into a dedicated item component is removed from this tag
For Command Blocks, Lecterns, Signs, and Spawners: this tag will not be copied unless the player is an operator
Format: object with fields
Must contain an id field with the block entity type
Any additional fields will be merged into the block entity when placed
e.g. block_entity_data={id:’minecraft:chest’,Items:[{Slot:1,item:’minecraft:diamond’}]}
minecraft:block_state
Holds block state properties to apply when placing a block
Replaces BlockStateTag tag
Format: map of property key to property value
All property values, including integer and boolean types, must be represented as strings
e.g: block_state={eggs:’10’}
New Item Stack Components
These are new components that did not exist in the previous item tag, and support new features and use-cases.
minecraft:enchantment_glint_override
Overrides the enchantment glint effect on an item
Can be used in the same way that an invalid Enchantments tag would previously behave to add a glint
Format: boolean
If true, an item without an enchantment glint will display a glint
If false, an item with a glint will not display this glint (either from enchantments or intrinsic properties of the item)
e.g: enchantment_glint_override=true
minecraft:food
When present, this item will behave as if a food (can be eaten)
Format: object with fields
nutrition: non-negative integer, number of food points to restore when eaten
saturation: float, amount of saturation to restore when eaten
can_always_eat: boolean (default: false)
If true, this food can be eaten even if not hungry
eat_seconds: float (default: 1.6)
The number of seconds that it takes to eat this food item
effects: list of effects to apply when eaten (default: [])
effect: effect instance (same format as custom_effects in minecraft:potion_contents component)
probability: float between 0 and 1, chance for the effect to be applied (default: 1)
e.g: food={nutrition:4,saturation:0.1}
On food items, has an implicit default value for that food type
minecraft:max_stack_size
Controls the maximum stacking size of this item
Values greater than 1 are mutually exclusive with the max_damage component
Format: integer between 1 and 99
e.g. max_stack_size=4
Has an implicit default value according to the item type (usually 64)
minecraft:max_damage
Controls the maximum amount of damage than an item can take
Mutually exclusive with the max_stack_size component greater than 1
Requires that the damage component is also present on the item
If not present, the item cannot be damaged
Format: positive integer
e.g. max_damage=123
Has an implicit default value for damageable items
minecraft:tool
Controls the behavior of the item as a tool
Format: object with fields
rules: list of rule entries to apply in order
blocks: single block, list of blocks, or #-prefixed block tag to match
speed (optional): float, overrides the mining speed if present and matched
correct_for_drops (optional): boolean, overrides whether this tool is considered ‘correct’ if present and matched
true will cause the block to mine at its most efficient speed, and drop items if the targeted block requires that
default_mining_speed: float, mining speed to use if no rules match and override mining speed (default: 1.0)
damage_per_block: non-negative int, amount of durability to remove each time a block is mined with this tool
e.g. tool={rules:[{blocks:”#mineable/pickaxe”,speed:4.0,correct_for_drops:true}]}
Vanilla tool items will have an implicit default value based on their tier and tool type
minecraft:hide_tooltip
If present, it will completely hide whole item tooltip (that includes item name)
Tooltip will still be visible and searchable in creative mode
Format: empty object
minecraft:item_name
When present, replaces default item name with contained chat component
Differences from custom_name:
item_name can’t be changed or removed in Anvil
item_name is not styled with italics when displayed to player
item_name does not show labels where applicable (for example: banner markers, names in item frames)
Can be modified with the set_name loot function
minecraft:fire_resistant
If present, this item will not burn in fire
Format: empty object
e.g. fire_resistant={}
Has an implicit default value for fire-resistant items such as Netherite
minecraft:rarity
Controls the color of the item name
Format: enumerated value, one of:
common (default): white name, or aqua when enchanted
uncommon: yellow name, or aqua when enchanted
rare: aqua name, or light purple when enchanted
epic: light purple name
e.g. rarity=rare
Special items such as Golden Apples have an implicit default value
minecraft:ominous_bottle_amplifier
Controls the amplifier amount for an Ominous Bottle’s Bad Omen effect
Format: integer between 0 and 4
e.g. ominous_bottle_amplifier=3
Can be modified with the set_ominous_bottle_amplifier loot function
Saved Item Stack Format
Along with format changes due to components, the structures of item stacks on disk and in data packs have been updated for consistency
Previous id (string) and Count (byte) fields have been replaced with id (namespaced string) and count (integer) fields
This format is additionally applied to the icon field in advancements, items in chat component hover events, and the result field in smelting recipes (result and count are no longer inlined)
The count field is optional (defaults to 1 if not specified)
The field will however always be stored by the game
The tag field has been removed, and any remaining contents will end up in the minecraft:custom_data component when upgrading
A new components field stores all components attached to an item
Format: map of component id to component value (varies by component id)
e.g. {…, components: {‘minecraft:damage’: 12}}
Components with a ! prefix (e.g. “!minecraft:damage”: {}) will cause this component to be removed
Components equal to their default value on the target item will not be stored
The item stack format no longer represents empty stacks (air item, or count 0)
Instead, in places that support it, the field should be omitted
In some cases, such as lists of stacks (e.g. HandItems in living entities), an empty map ({}) is used to represent empty stacks
Entity & Block Entity Data Formats
Non-default components on item stacks are now stored when a block entity is placed from that item stack
The storage format of block positions in entities and block entities has been updated
Added body_armor_item and body_armor_drop_chance to all entities that currently have HandItems and ArmorItems, and handle the same way as HandItems and ArmorItems
Handling of Horses ArmorItem, Llamas DecorItem, and Wolf’s armor has been changed to use body_armor_item and body_armor_drop_chance instead
Villager Trades can be configured to accept only undamaged items by selecting for ‘minecraft:damage’: 0
By default, if no components are specified, any item will be accepted (similar to components field in item predicates)
Potion effects stored in items or entities will no longer encode their default values
amplifier: 0
duration: 0
ambient: false
show_particles: true
FactorCalculationData has been removed from mob effect instance tags
Tipped Arrows no longer store their applied potion effects
This is instead fetched from their held item
Area Effect Clouds now store potions in the same format as the minecraft:potion_contents component in a potion_contents field:
Potion -> potion_contents.potion
Color -> potion_contents.custom_color
effects -> potion_contents.custom_effects
Banners now store applied patterns in the same format as the minecraft:banner_patterns component in a patterns field:
Patterns[].Pattern (string short id) -> patterns[].pattern (string pattern registry id)
activation_range – The range any player who hasn’t unlocked the Vault must be within for it to open its keyhole
Default value: 4
deactivation_range – The range all viable players must be outside of for the Vault to close its keyhole
Default value: 4.5
key_item – An Item Stack that is required to unlock the Vault
The player must be holding an item with the exact components and count
If the field is not present, the Vault cannot be unlocked
override_loot_table_to_display – An optional loot table which will be used for displaying items inside the cage instead of results from the config’s loot_table
Default value: No value
shared_data
connected_particles_range – The range players who have not unlocked the Vault must be within before particles will flow from them
Default value: 4.5
Commands
Updated syntax of items and item predicates in commands
Added slot names for ranges, like container.*
playsound command can now be used without specifying the player (assuming @s) and without specifying the mixer (assuming master)
Command arguments that previously accepted namespaced ids of loot tables, modifiers and predicates can now also accept inline definitions
Added execute if|unless items to check and count items
Potion effect amplifiers are now restricted between 0 and 255
The former behavior of effects such as Jump Boost, Levitation, and Mining Fatigue over 127 has been replaced with new attributes
Added the transfer command
The maximum length of a command in a function (including macro expansions) can no longer exceed 2,000,000 characters
Item Syntax
Commands such as /give, /item, /loot use an updated item syntax
Components can now be specified after the item name in square brackets
Components are assigned with an = (e.g. wooden_pickaxe[damage=23])
Components are comma-separated (e.g. netherite_hoe[damage=5,repair_cost=2])
Component types will be autocompleted, but possible values of them will not
Values will however be validated, and the command will fail to parse if the component is improperly specified
e.g. /give @s wooden_pickaxe[damage=-34] is not valid
The previous NBT syntax ({…}) has been removed, and replaced with custom_data assignment
e.g. /give @s stick{foo:’bar’} becomes /give @s stick[custom_data={foo:’bar’}]
Modifier operations in the /attribute command have been renamed:
add -> add_value
multiply_base -> add_multiplied_base
multiply -> add_multiplied_total
Added Execute If|Unless Items
execute if|unless items command can be used to count items
is the same as one used in item command, i.e.
block <x> <y> <z>
entity <target> (selector can return multiple entities)
<slots> can accept single slot (like container.0) or a range (like container.*)
<item_predicate> is the same as item predicate in clear command
If used alone, it will return the total number of items in stacks that match predicates
Item Predicate Argument
The item predicate syntax (used in execute if|unless items and clear commands) has been significantly expanded.
The general syntax is: <type> [comma-separated list of <test>]
can be one of:
item id
item tag id prefixed with #
* to match any item
can have one of 3 forms:
= – match exact value of component
<value> is a representation of component value in SNBT format (same as in item give argument)
Every specified component must be present on the target item, and have an exactly equal parsed value
Components with defaults (e.g. damage=0 by default) will be assumed to exist on the target item if not specified
As such, /clear @s diamond_pickaxe[damage=0] will match only undamaged Diamond Pickaxes
On the other hand, /clear @s diamond_pickaxe will match any Diamond Pickaxe, irrespective of damage
Exact matching of component values applies even for the minecraft:custom_data component
<component_id> – check if component exists
~ – check item sub-predicate
<value> is a representation of item sub-predicate in SNBT format (but otherwise the same as those used for advancement and loot table JSON files)
Example: *[damage~{durability:{min:3}}] will match any stack with at least 3 uses left
The special name minecraft:count can be used for matching the stack size
count=<positive int> will pass only when the stack size equals the given value
count~ will pass when the stack size is in the specified range
Example: *[count~{max:2}] will match any stack with count <= 2
count will always pass
Any entry can be negated by prefixing with !
Example: *[!count=1] will match any stack that has count other than 1
elements can be also joined with | to check multiple alternatives
Example: *[!damage|damage=0] will look for items without damage component or with 0 damage
The syntax for NBT partial matching with custom data ({}) has been replaced by the custom_data predicate
So stick{a:2} becomes stick[custom_data~{a:2}]
This predicate uses the pre-existing NBT partial match behavior
This requires that all tags specified in the predicate are present on the target item, but additional ones may be ignored
Lists in the target must contain all items specified in the predicate, but additional may be present and order is ignored
Slot Names
Slot names (used in item commands and slots entity predicates) now include slot ranges
Unless specified, existing commands can still only work on single slots
Added new slot ranges:
container.* – contains container.0 to container.53
hotbar.* – contains hotbar.0 to hotbar.8
inventory.* – contains inventory.0 to inventory.26
enderchest.* – contains enderchest.0 to enderchest.26
villager.* – contains villager.0 to villager.7
horse.* – contains horse.0 to horse.14
weapon.* – contains weapon.mainhand and weapon.offhand
Note: this includes only player’s inventory crafting slots. Crafting table (or any other slots on other screens) are not included
contents – for single-slot entities like item frames, item displays, or dropped item entities
Replaced horse.armor slot name with armor.body, which is applicable to all mobs
Inline Loot Values
Arguments in the following commands that previously accepted namespaced ids of loot tables, modifiers and predicates can now also accept inline definitions:
loot
item
execute if predicate
Values have the same structure as matching JSON files, though they are encoded as SNBT.Example:
execute if predicate {condition:weather_check, raining:true}
Transfer Command
New command that triggers a transfer of a player to another server. Only exists on dedicated servers.
Syntax:
transfer <hostname> [<port>] [<players>]
Parameters:
hostname: String describing the hostname of the server to connect to
port: Integer denoting the port number of the server to connect to – if omitted, 25565 is used
players: The players to transfer – if omitted, @s is used
Predicate Formats In Loot Tables & Advancements
Block predicate format has been updated:
tag field has been removed
blocks field now supports a single entry, hash-prefixed block tag, or list of blocks
Fluid predicate format has been updated:
tag field has been removed
fluid -> fluids, and supports a single entry, hash-prefixed fluid tag, or list of fluids
Location predicate format has been updated:
biome -> biomes, and supports a single entry, hash-prefixed biome tag, or list of biomes
structure -> structures, and supports a single entry, hash-prefixed structure tag, or list of structures
Major changes to Entity and Item predicates
Entity Predicates
Entity predicate format has been updated:
type field now supports a single entry, hash-prefixed entity type tag, or list of entity types
Added new entity predicate field slots, for matching item slots
The equipment field format has been updated
Added a new body field to match the item in the body armor slot of an entity
Removed any entity type-specific predicate (which had no effect)
slots entity predicate field
The new entity field slots allows checking a single or multiple slots on any entity
The field contains a map of slot names (same as those used in item commands) to item predicates
For slot ranges, only one slot needs to match for the whole entry to pass
Example:
{
“condition”: “minecraft:entity_properties”,
“entity”: “this”,
“predicate”: {
“slots”: {
“container.*”: {
“items”: “dirt”
}
}
}
}
wolf type-specific entity predicate
New wolf sub-predicate has been added to match Wolf variants
Fields:
variant – Wolf variant to match (single entry, list of entries or tag)
raider type-specific entity predicate
New raider sub-predicate has been added to match raiders
Fields:
has_raid – Match whether the raider is in an active raid
is_captain – Match whether the raider is a captain
The variant field now accepts single entries, list of entries or tags
Item Predicates
Item predicate format has been updated:
tag field has been removed
items field now supports a single entry, hash-prefixed item tag, or list of items
A new optional components field matches exact components
All specified components must be present and exactly equal on the target item, but additional components may be ignored
Components with defaults will be assumed to exist on the target item if not specified
Format: map of component id to component value (varies by component id)
e.g. “components”: { “minecraft:damage”: 0 } will match only undamaged items
Component-specific item predicate properties have been moved to a separate field called predicates
Item Sub-Predicates
Some fields from item predicate have been moved to a map in an optional field predicates
The new field is similar to the components field on item stacks
This was done to simplify addition for future predicates and to allow sub-predicates to more closely resemble names of components they match
The following fields have been moved:
enchantments – field moved to sub-predicate minecraft:enchantments
stored_enchantments – field moved to sub-predicate minecraft:stored_enchantments
potion – field moved to sub-predicate minecraft:potion_contents
Now supports a single potion entry, list of potions, or hash-prefixed potion tag
custom_data – field moved to sub-predicate minecraft:custom_data
durability field has been expanded to minecraft:damage predicate:
This check now works for any item that has minecraft:damage component
An item that does not have a minecraft:damage component can never match
To check for unbreakable items, query value of minecraft:unbreakable component
Fields:
damage – optional bounds for value of minecraft:damage component
durability – optional bounds for durability (max damage minus value of minecraft:damage)
Predicates minecraft:enchantments, minecraft:stored_enchantments, minecraft:potion_contents and minecraft:damage require matching component to exist on item
That means that, for example, matching for empty enchantment list will not pass on items without minecraft:damage component
Note: some components, like minecraft:enchantments have default values, so they will always match
These sub-predicates can also be referenced in commands such as /clear and /execute if|unless items
The minecraft:custom_data predicate now accepts both SNBT data written as a string (existing format) and unflattened tags
That means that *[custom_data~{a:1}] and *[custom_data~”{a:1}”] are equivalent
Flattened string format has been kept since NBT type information can’t be expressed in JSON
Many new sub-predicates have been introduced
Example:
Before:
“item”: {
“enchantments”: [
{
“enchantment”: “minecraft:silk_touch”,
“levels”: {
“min”: 1
}
}
]
}
After:
“item”: {
“predicates”: {
“minecraft:enchantments”: [
{
“enchantment”: “minecraft:silk_touch”,
“levels”: {
“min”: 1
}
}
]
}
}
General Rules of Component Predicates
Unless otherwise specified, a field in predicate with the same name as a field in component that matches (i.e. has the same name as predicate) will match that field value
Those fields will usually have the same type as in the components, but will be optional
Exceptions:
List fields will be replaced with collection matchers (see below)
Integer and float fields will be replaced with ranges
Registry ids will be replaced with a type that accepts id, list of ids or a tag
Collection Matcher
A collection matcher is a shared part of predicates that is used for matching collections
Every instance of this matcher will have the same fields with the same functionality, with the only difference being the type of matched element
Fields:
size – integer range to match against collection size
contains – a list of element predicates
All conditions must match for the predicate to pass
Not all elements in the tested container have to be matched
Elements can be in any order
A single element can be matched by multiple predicates
Examples (when matching item stacks):
{contents:[{item:diamond}]} – will match when there is at least one diamond item
{contents:[{item:diamond}, {item:dirt}]} – will match when there is at least one diamond item and at least one dirt item
count – a list of matchers on element counts
Entry fields:
test – element matcher
count – optional integer range to check against number of elements passing test
Examples (when matching item stacks):
{count:[{count:3,test:{items:diamond}}]}} will match only when there are exactly 3 stacks of diamonds (no matter the stack size)
container
Matcher for container component (like Shulker Box)
Fields:
items – optional collection matcher
Note: empty items are ignored. That means container~{items:{size:3}} will only pass if there are exactly 3 non-empty stacks in container
bundle_contents
Matcher for bundle_contents component
Fields:
items – optional collection matcher
firework_explosion
Matcher for firework_explosion component
Fields
shape – optional matcher for shape, same values as shape field in minecraft:firework_explosion component
has_trail – optional boolean
has_twinkle – optional boolean
fireworks
Matcher for fireworks component
Fields:
explosions – optional collection matcher for firework_explosion predicates
flight_duration – optional integer range check for flight duration
Example: minecraft:fireworks~{explosions:{contains:[{shape:small_ball}]}}] – matches if firework has at least one explosion with small_ball shape
writable_book_content
Matcher for writable_book_content component
Fields
pages – optional collection matcher for strings (matching only the unfiltered/raw contents of each page)
written_book_content
Matcher for written_book_content component
Fields
pages – optional collection matcher for chat components (matching only the unfiltered/raw contents of each page)
author – optional string value
title – optional string value (matching only value)
generation – optional integer range check for generation
resolved – optional boolean
attribute_modifiers
Matcher for attribute_modifiers component
Fields:
modifiers – optional collection matcher for following entries with following fields:
attribute – optional id, list of ids or tag for attribute to be matched
id – optional UUID
name – optional string
amount – optional double range check
operation – optional operation type (same values as operation field from attribute_modifiers component)
slot – optional applicable slot type (same values as slot field from attribute_modifiers component)
trim
Matcher for trim component
Fields:
material – optional id, list of ids or tag for material to be matched
pattern – optional id, list of ids or tag for pattern to be matched
Advancements
Changes to item_used_on_block
This criteria trigger is now only triggered when a specific item is used successfully on a block (as opposed to any interaction with a block)
For example, when using an Axe to scrape Oxidized Copper blocks would trigger, while using an Axe on a Crafting Table would not
Added Default_Block_Use
Triggers due to the default interaction of a block by a player, such as opening a door
Added Any_Block_Use
Triggers due to any type of interaction with a block by a player, such as using an item on the block or its default usage
Added Crafter_Recipe_Crafted
Triggered when a Crafter ejects a successfully crafted item into the world
Fields (same format as recipe_crafted):
player – an entity predicate matching nearby players in an 8 block radius
recipe_id – the ID of the recipe being crafted
ingredients – a list of item predicates matching the ingredients that form the recipe being crafted
Added Fall_After_Explosion
Triggered when a player begins falling after being knocked upwards by an explosion or wind burst
Fields:
player – entity predicate matching the player who is falling
start_position – location predicate matching the position the player was at when they were hit by the explosion or burst
distance – distance predicate matching how far the player must be from start_position to cause the trigger to activate
cause – entity predicate matching the entity that caused the explosion or burst to happen
Loot Tables
Added gameplay/panda_sneeze loot table for drops when Pandas sneeze
Loot table entry loot_table (which returns all items from provided nested loot table) now has the following syntax:
value – can be either:
namespaced id – reference to another named loot table
full loot table (same format as in standalone file)
Added new loot table type minecraft:equipment used for equipping items onto mobs
Storage Number Provider
This number provider can access numeric values from command storage directly
If selected storage does not exist or tag selected by path is not numeric or does not exist, the provider returns 0
Fields:
storage – namespaced id of command storage
path – NBT path to field
Modified Loot Functions
Nested lists are no longer supported in function lists
set_contents
The type field has been removed
Added a new mandatory field component:
Describes the target item stack component to be filled with items
{function:”toggle_tooltips”,”toggles”:{“enchantments”:false}} will hide enchantments tooltip
Recipes
Recipe types crafting_shaped, crafting_shapeless, stonecutting and smithing_transform now accept components for the result item stack
The result field for recipe types smelting, blasting, smoking and campfire_cooking is now an item stack format without a count, which means you’ll need to specify an object with an id field
This result now also accepts components data
Attributes
Added generic.scale attribute that can be used to rescale any living entity (default: 1.0)
Certain entities have special restrictions due to technical limitations:
Shulkers can only be scaled up to 3x their normal size
The Ender Dragon cannot be scaled
Added player.block_interaction_range (default: 4.5) and player.entity_interaction_range (default: 3.0) attributes that control player reach distance
Added generic.step_height attribute that defines the maximum number of blocks that an entity can step up without jumping (default: 0.6)
Added generic.gravity attribute that controls blocks/tick^2 acceleration downward (default: -0.08)
Added generic.safe_fall_distance attribute to control the fall distance after which the entity will take fall damage (default: 3.0)
Added generic.fall_damage_multiplier attribute to multiply overall applied fall damage (default: 1.0)
Renamed horse.jump_strength to generic.jump_strength, and now applies to all entities
This controls the base impulse from a jump (before jump boost or modifier on block)
Added player.block_break_speed attribute that acts as a multiplier over block breaking speed for players (default: `1.0)
Particles
Added the following particle types:
vault_connection
infested
item_cobweb
small_gust
raid_omen
trial_omen
trial_spawner_detection_ominous
ominous_spawning
Particle Representation
Particle options in commands and in fields like Particles in Area Effect clouds now use the same representation as worldgen files (like existing biomes’ ambient particle settings)
For example, command /particle minecraft:dust 1.0 0.0 0.0 2.0 … becomes /particle minecraft:dust{color:[1.0, 0.0, 0.0], scale:2.0} …
The syntax for particles without extra options (like minecraft:villager) remains unchanged
Changes to block particles (minecraft:block, minecraft:block_marker, minecraft:falling_dust, minecraft:dust_pillar) options:
Field value has been renamed to block_state
Field block_state now also accepts plain block name to represent default block state
Now accepts options to control the color of the particle
Fields:
color: packed integer ARGB color, or list of floats (0.0 to 1.0) representing RGBA color
Enchantments
The minecraft:sweeping enchantment has been renamed to minecraft:sweeping_edge
Projectile weapon Enchantments like infinity, multishot and piercing now work on both Crossbows and Bows, if placed onto the alternative weapon using data manipulation or a change to the enchantable/* tags)
Damage Types
Llamas now use a new damage type spit instead of mob_projectile
Tags
Block tags
Added minecraft:does_not_block_hoppers for blocks that will never disable a Hopper when placed above one
Added minecraft:blocks_wind_charge_explosions for blocks not impacted by the explosion when hit by Wind Charge
These tags combine the existing needs_diamond_tool, needs_iron_tool, and needs_stone_tool tags for each specific tool tier
Item Tags
New item tags controlling what enchantments can be added to what gear:
minecraft:enchantable/foot_armor
minecraft:enchantable/leg_armor
minecraft:enchantable/chest_armor
minecraft:enchantable/head_armor
minecraft:enchantable/armor
minecraft:enchantable/weapon
minecraft:enchantable/sword
minecraft:enchantable/mining
minecraft:enchantable/mining_loot
minecraft:enchantable/fishing
minecraft:enchantable/trident
minecraft:enchantable/durability
minecraft:enchantable/bow
minecraft:enchantable/equippable
minecraft:enchantable/crossbow
minecraft:enchantable/vanishing
New item tags defining food and tempting items for various mobs:
minecraft:armadillo_food
minecraft:axolotl_food (renamed from minecraft:axolotl_tempt_items)
minecraft:bee_food
minecraft:camel_food
minecraft:cat_food
minecraft:chicken_food
minecraft:cow_food
minecraft:fox_food
minecraft:frog_food
minecraft:goat_food
minecraft:hoglin_food
minecraft:horse_food
minecraft:horse_tempt_items
minecraft:llama_food
minecraft:llama_tempt_items
minecraft:meat collection tag: not used by the game directly, but may be included in other tags
minecraft:ocelot_food
minecraft:panda_food
minecraft:parrot_food
minecraft:parrot_poisonous_food
minecraft:pig_food
minecraft:piglin_food
minecraft:rabbit_food
minecraft:sheep_food
minecraft:strider_food
minecraft:strider_tempt_items
minecraft:turtle_food
minecraft:wolf_food
Removed item tags:
Removed tag minecraft:tools (overlapping with minecraft:breaks_decorated_pots)
Entity Type Tags
Added minecraft:ignores_poison_and_regen for entities that cannot be affected by Poison and Regeneration effects
Added minecraft:illager_friends for entities that Illagers will consider allies (unless on a different team)
Added minecraft:immune_to_infested for entities that cannot receive the Infested mob effect
Added minecraft:immune_to_oozing for entities that cannot receive the Oozing mob effect
Added minecraft:inverted_healing_and_harm for entities that have inverted meanings of the Healing and Harm effects
Added minecraft:not_scary_for_pufferfish for entities that will not cause Pufferfish to puff
Added minecraft:redirectable_projectile for projectiles which should be able to be redirected and deflected toward the direction the player is looking
Added minecraft:sensitive_to_bane_of_arthropods for entities sensitive to Bane of Arthropods
Added minecraft:sensitive_to_impaling for entities sensitive to Impaling
Added minecraft:sensitive_to_smite for entities that take extra damage from the Smite Enchantment
Added minecraft:wither_friends for entities that the Wither will not target and which cannot harm the Wither
Damage Type Tags
Added minecraft:bypasses_wolf_armor for damage sources that cannot be absorbed by Wolf Armor
Added minecraft:is_player_attack for attacks performed by the player
Enchantment Tags
Added minecraft:tooltip_order controlling which order Enchantments are listed in tooltips
Banner Patterns
Banner Patterns will now be loaded into a dynamic registry from data packs (data/<namespace>/banner_pattern/<id>)
These entries have two fields:
asset_id (namespaced string) is used to resolve texture locations
e.g. custom:pattern resolves to assets/custom/textures/entity/banner/pattern.png, assets/custom/textures/entity/shield/pattern.png
translation_key (string) is a translation key prefix
e.g. block.minecraft.banner.custom.pattern resolves to block.minecraft.banner.custom.pattern.<dye color>
Wolf Variants
Wolf variants can be data-driven by adding entries to data/<namespace>/wolf_variant/<id>.json.
Format: object with fields
wild_texture – wild/untamed texture for this variant
<namespace>:<path> resolves to assets/<namespace>/textures/<path>.png
tame_texture – tamed texture for this variant
angry_texture – to angry texture for this variant
biome – a single entry, list or a tag describing biomes in which this variant naturally spawns
Worldgen Data Formats
Added new terrain adaptation type for structures: encapsulate
Density will be added all around every piece of a structure
Ideal for structures that need to be entirely covered underground
Int and float providers are no longer wrapped in an extra value field next to type
For example, {“type”:”minecraft:uniform”,”value”:{“min_inclusive”:0.0,”max_inclusive”:1.0}} becomes {“type”:”minecraft:uniform”,”min_inclusive”:0.0,”max_inclusive”:1.0}
Resource Pack Versions 23 Through 32
The Resource Pack version is now 32. These are the changes compared to version 22, used in 1.20.4.
Renamed scute textures and models to turtle_scute
Added textures and models for new features
Changes to fonts
Changes to shaders
Models And Textures
Added textures for Wolf variations
Added files for Armadillo and Wolf Armor
Added additional textures to support colored layers of Wolf Armor for the Wolf model and Wolf Armor item:
textures/entity/wolf/wolf_armor_overlay.png
textures/item/wolf_armor_overlay.png
Added three semi-transparent textures for the cracks to show on the Wolf Armor layer:
Added textures and model files for the following experimental blocks and items:
Vault
Ominous Vault
Ominous Trial Spawner
Ominous Bottle
Added the following mob effect icon textures:
bad_omen_121
infested
oozing
raid_omen
trial_omen
weaving
wind_charged
GUI
The gui/options_background and the gui/light_dirt_background textures have been removed. Instead;
Added gui/menu_background to be used as the background of screens, while gui/menu_list_background is used for the background of lists for menus accessed from the Title Screen
Added gui/inworld_menu_background, gui/inworld_menu_list_background, gui/inworld_header_separator, gui/inworld_footer_separator textures for menus accessed from the Pause Menu
Lists now use the gui/header_separator and gui/footer_separator textures at the top and bottom, respectively
The following textures have been updated: gui/footer_separator, gui/header_separator
The following sprites have been updated: widget/tab, widget/tab_highlighted, widget/tab_selected, widget/tab_selected_highlighted
The widget/scroller_background sprite has been added
The following textures in Realms have been removed: gui/sprites/backup/changes, gui/sprites/backup/changes_highlighted, gui/sprites/backup/restore, gui/sprites/backup/restore_highlighted, gui/sprites/player_list/make_operator_highlighted, gui/sprites/player_list/remove_operator_highlighted, gui/sprites/player_list/remove_player_highlighted
Added gui/tab_header_background texture, which is rendered behind the tab buttons in the Create World Screen
Added misc/credits_vignette texture, which is rendered behind the poem and the credits
Split map decoration atlas into separate files
Map Decorations
Map decoration icons have been split from the former map_icons.png to use an atlas loaded from the textures/map/decorations/ directory
The process of upgrading your pack can be assisted by using this automated Slicer tool
Fonts
The ttf font provider transforms have been adjusted to have more reasonable defaults
shift is no longer applied double, and now directly represents a number of pixels in the game UI
The font EM square is fitted to size pixels in the game UI, instead of between the font ascender and font descender
The font baseline is positioned consistently with the default font (7 pixels below line top)
This means that generally, any font with a size of 9 and no shift should look correct by default
shift is now restricted to the range [-512; 512]
Added font variant filters to font providers
Font Variant Filters
Every glyph provider can now be enabled or disabled based on certain set of variants
Available variants are currently hardcoded and controlled by the font options menu
Current variants:
uniform – wired to “Force Uniform” button
jp – wired to “Japanese Glyph Variants” button
Filters are defined in section called filter, available for every glyph provider
Keys in that object are variant names (for example uniform)
Glyph provider will be included only when value in filter matches actual value of variant in key
Shaders
The unused attributes array in core shader definitions has been removed
The unused position_color_normal and position_tex_lightmap_color shaders have been removed
The position_tex_color_normal shader (only used by clouds) has been replaced with rendertype_clouds
The IViewRotMat uniform has been removed, and the Position attribute for entities is now in (camera relative) world space
Light direction uniforms are no longer premultiplied by the view matrix
The blur post-processing shader has been renamed to box_blur
Added optional boolean field use_linear_filter to post-processing passes which when set to true switches texture sampling mode from nearest-neighbor sampling to linear interpolation for that pass
The following changes only apply when their respective Experiment is turned on, either by activating the corresponding experimental data pack or by turning it on in the Experiments screen while creating the world.
Added the Mace
Added Breeze Rod item
Updates to the Breeze
Added Wind Charge Item
Added Vault block
Redesigned Bad Omen to give access to Ominous Events
Added Ominous Bottle
Added Ominous Trial Spawner
Added Ominous Vault
Added Ominous Trial Key
Added Bogged mob
Added 6 new mob effects
Mace
A new heavy weapon to smash your enemies!
Can be crafted with a Breeze Rod and a Heavy Core
Leverage the weight of this new weapon to deal additional damage the farther you fall before hitting your target
Try it out by jumping down toward your target, and hit them before you hit the ground
Successfully striking a target in this way will reset all vertical momentum and negate any fall-damage accumulated from the fall
Other entities near the struck enemy will be knocked back by the immense force of the Mace
Using a Mace will decrease its durability like any other weapon; repair it with Breeze Rods at an anvil
Players can use a Mace in combination with Wind Charges to launch up and deliver devastating smash attacks on their enemies
The baseline additional damage dealt by the Mace smash attack is 3 (1.5 hearts) per fallen block
These existing enchantments can be applied to the Mace:
Mending
Unbreaking
Smite
Bane of Arthropods
Fire Aspect
Curse of Vanishing
Three new enchantments have been introduced that are unique to the Mace:
Density:
Common Enchantment, accessible in the Enchanting Table and on Enchanted Books in loot
Has 5 levels
Maces enchanted with Density do more damage per fallen block per Density level
Damage dealt per fallen block is increased by 1 per level of Density
Breach:
Rare Enchantment, accessible in the Enchanting Table and on Enchanted Books in loot
Has 4 levels
Maces enchanted with Breach reduce the effectiveness of armor on the target
The effectiveness of the armor is reduced by 15% per Breach level
Wind Burst:
Unique enchantment which can only be found in Ominous Vaults
Has 3 levels
Maces enchanted with Wind Burst will emit a Wind Burst upon hitting an enemy, launching the attacker upward and enabling the linking of smash attacks one after the other
Each level will bounce the attacker higher up in the air
Heavy Core
A mysterious, dense block which can be combined with a Breeze Rod to craft a brand-new weapon: the Mace!
Breeze Rod
An item dropped by the Breeze that can be crafted into 4 Wind Charges, or used with the Heavy Core to craft the Mace
Breeze
Now drops 1-2 Breeze Rods when killed by a player
The number of Breeze Rods dropped is affected by looting enchantments
Added new sound effects, as well as tweaked existing sounds
Breeze now deflects all projectiles
Deflected projectiles now deflect in the direction of the shooter
Breeze is now aggressive toward Iron Golems
Breeze no longer retaliates against attacks from the following mobs: Skeletons, Strays, Zombies, Husks, Spiders, Cave Spiders, Slimes
The above mobs will not retaliate when hurt by the Breeze’s Wind Charge Projectile
Updated the model, texture, and animation of the Wind Charge projectile to give it a more dynamic look and feel
Wind Charge
Become the Breeze! Using a Wind Charge item will fire off a Wind Charge projectile similar to the Breeze’s
The Wind Charge can be used to launch entities away from the impact of the Wind Burst
Players can also use Wind Charges to propel themselves high into the air
A Wind Charge fired by a player will grant 10% more knockback than a Breeze’s, but have a much smaller area of impact
Just like the projectile fired by the Breeze, Wind Charges fired by the player also deal damage if they hit an entity directly
There is a half-second cooldown after each use
Wind Charges can be fired from a dispenser
Players that launch themselves with a Wind Charge only accumulate fall damage below the y-level of where they collided with the Wind Burst
This means, for example, if a player uses a Wind Charge at y64 to launch themselves 9 blocks into the air, and they land back where they started at y64, they will take 0 damage.
Trial Spawner
The Trial Spawner now has the same two default loot tables as they have in the Trial Chamber
Trial spawners can now only activate when a player is in line of sight
Trial Chambers
Trial Chambers are now more consistently buried by terrain when found underground
Ominous Vaults can now be found inside rooms, intersections and at the end of corridors
Decorated Pots in the Trial Chambers now have a chance to display a Flow, Guster, or Scrape Pottery Sherd
Redesigned dispenser traps
Redesigned specific rooms with new variations and challenges
Redesigned chamber room 9 to Slanted room
Redesigned chamber room 3 to Pedestal room
Redesigned chamber room 5 to Eruption room
Redesigned chamber room 6 to Assembly room
Updated layout and placements of Vaults
Reduced amount of Trial Spawners in corridors
Added an atrium to the corridors
Made various layout changes in intersections and corridors
Known issue:
Corner quadrants in slanted may still fail to generate correctly
Trial Key
Updated texture to reflect new Vault visuals
Trial Chamber Explorer Map
Struggle no more to locate a Trial Chamber – level up your nearest Cartographer to Journeyman for the opportunity to trade for an Explorer Map pointing to a nearby Trial Chamber
Vault
A block that holds locked treasure and loot – find the right key to eject its rewards
Can be found throughout Trial Chambers, containing the structures’ most valuable loot
Vaults in Trial Chambers require a Trial Key to be unlocked
Can be unlocked by an unlimited number of players
After a player has unlocked a Vault, they cannot unlock that Vault again
If a player has not unlocked that Vault before, an orange stream of particles will flow from the player to the Vault when nearby
Has a keyhole that will be open or closed depending on the players nearby
If any nearby player has not unlocked that Vault, the keyhole will be open
If all nearby players have unlocked that Vault, the keyhole will be closed
Within its cage, it will cycle through and display items which are possible to eject from its loot table
The loot it ejects is randomized each time it is unlocked
Cannot be crafted nor obtained in Survival, and does not drop anything when mined
Vaults are explosion resistant and cannot be moved
Ominous Events
Bad Omen has been expanded to give access to an optional experience in Trial Chambers
These optional experiences can be accessed through Bad Omen, which are now known as Ominous Events
They are more challenging than usual, and are designed to shake up the experience in unique ways
Illager Raids are an example of an existing Ominous Event
Bad Omen is getting some changes with this redesign:
It has a new, shadowy icon and a sound for being applied to the player
It no longer triggers a Raid directly when entering a village
Instead, it will transform into a Raid Omen variant with a duration of 30 seconds
Once the Raid Omen expires, a Raid will start at the location the player gained the Raid Omen
Like any other effect, players can drink a Bucket of Milk to clear the Raid Omen to prevent the Raid from starting
It is no longer given to players that defeat a Raid Captain outside a Raid
Instead, players can gain access to Bad Omen by consuming a new Ominous Bottle
Ominous Bottle
An item which can be consumed by players to receive the Bad Omen effect for 1 hour and 40 minutes
Comes in 5 variations, one for each Bad Omen level
The bottle breaks when consumed
Can be stacked to 64
Ominous Bottles can be found uncommonly in any Vaults that are unlocked with Trial Keys, and are dropped by Raid Captains when defeated outside a Raid
Ominous Trials
A new Ominous Event that can be accessed by exploring a Trial Chamber with Bad Omen
This event will have players facing more powerful Trial Spawners if they dare!
Trial Omen
A variant that Bad Omen can transform into
This occurs when the player is within detection range of a Trial Spawner that is not Ominous
The Trial Omen has a duration of 15 minutes multiplied by the transformed Bad Omen’s level
Players that have Trial Omen are surrounded by ominous particles
Ominous Trial Spawner
A more powerful active phase of the Trial Spawner with unique challenges and rewards
Provides a more challenging experience that advanced players can opt into for better rewards
If a Trial Spawner detects a player that has the Trial Omen effect, the spawner will become Ominous if:
It is not in cooldown
Or, it is in cooldown but was not Ominous during its last activation
Making it Ominous this way will bypass the cooldown
While active, it will:
Glow blue instead of orange
Emit soul flames instead of normal flames
Very commonly spawn mobs with equipment if they can wear it
The equipment these mobs wear have Armor Trims applied from the Trial Chambers
They also have various high-level enchantments
Periodically spawn potions and projectiles on top of unsuspecting players and mobs
Based on their location, spawners in an area will select a random set of projectiles to spawn
These projectiles will always include a single type of Lingering Potion from a set of possible effects
Becoming an Ominous Trial Spawner will despawn any existing mobs it spawned and reset its challenge
It will stay Ominous until it has been defeated and its cooldown has finished
When defeated, it will eject a different set of loot compared to normal Trial Spawners
Ominous Trial Key
A new variant of the Trial Key which can only be obtained by defeating an Ominous Trial Spawner
They can be used to unlock Ominous Vaults
Ominous Vault
A variant of Vaults that have a different texture and emit soul flames instead of normal flames
These can be found throughout the Trial Chambers in harder to find places and require an Ominous Trial Key to unlock
These Vaults hold a more valuable set of rewards than the standard Vaults unlocked by Trial Keys
Bogged
A new variant of Skeletons that shoots poisonous arrows
They’re faster to take down with 16 health instead of 20 health
They attack at a slower interval of 3.5 seconds instead of 2 seconds
Bogged has a chance to drop Arrows of Poison when killed by players
These mossy and mushroom covered Skeletons spawn naturally in Swamps and Mangrove Swamps
Can also be found spawning from Trial Spawners in some Trial Chambers
The Bogged drops 2 mushrooms (either both red/brown or one of each) when sheared
Mob Effects
The following effects have been added:
Wind Charged
Affected entities will emit a wind burst upon death
Brewed with an Awkward Potion and a Breeze Rod
Weaving
Affected entities will spread Cobweb blocks upon death
Affected entities can move through Cobweb with 50% of their normal speed instead of 25%
Brewed with an Awkward Potion and a Cobweb block
Oozing
Affected entities will spawn two Slimes upon death
Brewed with an Awkward Potion and a Slime Block
Infested
Affected entities have a 10% chance to spawn 1-2 Silverfish when hurt
Brewed with an Awkward Potion and a Stone block
These effects can be encountered while taking on an Ominous Trial Spawner
Some mobs are immune to these effects
Slimes are immune to Oozing
Silverfish are immune to Infested
Whenever a mob with Oozing dies, it will check within a 5x5x5 area how many Slimes there are
If the amount exceeds the max entity cramming cap (24 by default), it will not spawn any Slimes
If it does not exceed it, it will attempt to spawn 2 Slimes up until the max entity cramming cap
Copper Grates
Stonecutting Copper Blocks into Copper Grates outputs 4 Copper Grates
Pottery Sherds
Added Flow, Guster, and Scrape Pottery Sherds
These can be obtained by breaking Decorated Pots that display them in Trial Chambers
Banner Patterns
Added Flow and Guster Banner Patterns
Armor Trims
Added Bolt and Flow Armor Trims and Smithing Templates
Bolt can be duplicated using a Copper Block or Waxed Copper
Flow can be duplicated using a Breeze Rod
Advancements
Added the following advancements:
Minecraft: Trial(s) Edition – Step foot in a Trial Chamber
Under Lock & Key – Unlock a Vault using a Trial Key
Blowback – Kill a Breeze with a deflected Wind Charge (challenge – gives 40 exp)
Who Needs Rockets? – Use a Wind Charge to launch yourself upward at least 8 blocks
Crafters Crafting Crafters – Be near a Crafter when it crafts a Crafter
Lighten Up – Scrape a Copper Bulb with an Axe to make it brighter
Over-Overkill – Deal 50 hearts of damage in a single hit using the Mace (challenge – gives 50 exp)
Revaulting – Unlock an Ominous Vault with an Ominous Trial Key (goal)
Trade Rebalance
In the Trade Rebalance Experiment, Villagers who buy armor now ignore durability and can buy damaged armor
Installing Minecraft 1.20.5 is as easy as can be! First, open the Minecraft client and then click “Play.” Upon doing so, the automated installation should begin right away.
If trouble is encountered, a manual install can be created under the “Installations” tab instead, following the steps below.
First, click “New Installation.”
Second, select “Latest Release” in the drop-down menu.
Third, click “Create.”
The new Minecraft 1.20.5 installation will now be a selectable option before clicking play!
How to Create Minecraft 1.20.5 Servers
MelonCube Hosting proudly offers servers with Minecraft 1.20.5 pre-installed. Simply click your desired package, select Minecraft 1.20.5 in the drop-down menu, and then order away. Your server details will arrive within seconds, alongside instructions on how to log in and play.
Minecraft 1.20.5: Patch Notes & Features to Try
Minecraft 1.20.5 is overflowing with new content to find! So much, in fact, that it could even be compared to a major update despite ending in “x.x.5!” What was your favorite feature of those added this time?