{{dangerous version|The trader llama's inventory is shifted in this version, potentially causing item loss.<ref>{{bug|MC-271109||Trader llama inventory shifted, partially lost during upgrade.|Fixed}}</ref>|type=data-loss|version=release|edition=Java}}
<div class ="mobileonly">{{relevant guide|Java Edition guides/Armored Paws}}</div>
{{Infobox version
| title = Minecraft 1.20.5
| image = 1.20.5 banner.jpg
| image2 = Java Edition 1.20.5.png
| name = [[Armored Paws]]
| edition = Java
| date = April 23, 2024
| jsonhash = 156d304036b9aa7de4c0789cce7bf1095fda8d10
| clienthash = c6b92b2374a629f20802bb284f98a4ee790e950a
| clientmap = 65b1468c44fbf34382716416b5c1a16d2949217a
| serverhash = 79493072f65e17243fd36a699c9a96b4381feb91
| servermap = 14be97974a77b09eb8bca88ed9268445f0fde3e7
| prevparent = 1.20
| prev = 1.20.4
| next = 1.20.6
| nextparent = 1.21
}}
<div class ="nomobile">{{relevant guide|Java Edition guides/Armored Paws}}</div>

'''1.20.5''', the release of '''[[Armored Paws]]''', is a [[game drop]] for ''[[Java Edition]]'' released on April 23, 2024.<ref>{{Mcnet|minecraft-java-edition-1-20-5|Minecraft Java Edition 1.20.5|April 23, 2024}}</ref> It adds [[armadillo]]s, [[wolf armor]] and new wolf variants along with fixing many bugs. Additionally, it updates the [[Experiments|Update 1.21 Experiment]], including the addition of the [[bogged]], the [[vault]], [[breeze rod]]s, [[wind charge]]s, the [[mace]], and [[ominous event]]s. 
1.20.5 is the first release of 2024 and the first version of ''Java Edition'' to require a 64-bit operating system and Java 21 or above.<ref>{{snap|24w14a|April 3, 2024}}</ref>

== Additions ==
=== Items ===
; [[File:Armadillo Scute JE2 BE2.png|class=pixel-image|x32px]] [[Armadillo scute]]
* Dropped by [[armadillo]]s periodically and when [[brush]]ed.
* [[Dispenser]]s can be used to brush armadillo scutes off armadillos.
* Can be used to craft and repair [[wolf armor]].

; [[Spawn egg]]
* [[File:Armadillo Spawn Egg JE2 BE2.png|x32px]] [[Armadillo spawn egg]]s

; [[File:Wolf Armor JE3 BE3.png|class=pixel-image|x32px]] [[Wolf armor]]
[[File:All Dyes on Collars and Wolf Armor.png|thumb|[[Wolves]] wearing dyed [[wolf armor]] in all 16 basic colors]]
* Crafted with 6 [[armadillo scute]]s in a harness shape.
* Protects [[wolves]] from most damage sources until the armor loses all durability and breaks.
** Provides an armor value of {{armor|11}}.
* Shows signs of increased breakage as durability goes down.
* Using wolf armor on an adult tamed wolf equips the armor on the wolf, and using [[shears]] makes it drop the armor.
** When wolf gets sheared, player is granted the '''Shear Brilliance''' advancement. 
** Only a wolf's owner can put on / shear off wolf armor. That also excludes dispensers.
* The wolf's owner can repair the armor with [[armadillo scute]]s while it is equipped on the [[wolf]].
* If a wolf dies while wearing armor, it drops the armor.
* Wolf armor can be dyed in similar fashion to [[leather armor]].

=== Mobs ===
; [[File:Armadillo JE2 BE2.png|x32px]] [[Armadillo]]
* The winner of [[Minecraft Live 2023]]'s Mob Vote.
* A passive mob that spawns in [[savanna]] and [[badlands]] biomes with the same frequency as [[chicken]]s and [[pig]]s.
* Has {{hp|12}} health points.
* Can drop [[armadillo scute]]s either periodically or when [[brush]]ed, but drops no loot when killed.
** Armadillos drop scutes at around the same rate as [[chicken]]s lay eggs.
** Brushing takes 16 durability from the [[brush]].
* Can be bred with [[spider eye]]s.
* If an armadillo detects a threat, it rolls up.
** Threats include:
*** A player [[sprinting]].
*** A player in a vehicle or mounted.
*** Anyone it has been attacked by recently.
*** [[Undead]] mobs.
** Special cases where an armadillo doesn't roll up include when it is:
*** Fleeing.
*** In water or in the air.
*** On a lead.
** When an armadillo is rolled up it cannot walk nor eat, and is not tempted by food. Additionally, it is protected by its shell, causing it to take reduced damage and completely negating damage from weaker attacks.
** While rolled up, armadillo continuously scans for threats. If no threats are detected for 3 seconds (60 ticks), it unrolls. Armadillos peek out to see if “the coast is clear” before unrolling.

[[File:Wolf variants.png|right|thumb|The nine variations of wolves.]]
; [[Wolf]]
* Added 8 new wolf variants. There are now 9 wolf variants, including the original pale wolf.<ref>{{Mcnet|new-minecraft-wolves|New Minecraft Wolves|March 5, 2024|Sophie Austin}}</ref>
** {{EntitySprite|wolf}} The pale wolf spawns in the [[taiga]] biome.
** {{EntitySprite|rusty wolf}} The rusty wolf spawns in the [[sparse jungle]].
** {{EntitySprite|spotted wolf}} The spotted wolf spawns in the [[savanna plateau]].
** {{EntitySprite|black wolf}} The black wolf spawns in the [[old growth pine taiga]].
** {{EntitySprite|striped wolf}} The striped wolf spawns in the [[wooded badlands]].
** {{EntitySprite|snowy wolf}} The snowy wolf spawns in the [[grove]].
** {{EntitySprite|ashen wolf}} The ashen wolf spawns in the [[snowy taiga]].
** {{EntitySprite|woods wolf}} The woods wolf spawns in the [[forest]].
** {{EntitySprite|chestnut wolf}} The chestnut wolf spawns in the [[old growth spruce taiga]].
** Wolves spawned with the [[wolf spawn egg]] spawn as the variant associated with the biome the egg is used in. They default to pale wolf in any other biome.
** All wolves spawned before 1.20.5 are pale wolves and continue to be pale wolves.
* The new variants combined with the ability to dye a wolf's [[Wolf Armor|armor]] and [[Dye#Dyeing_collars|collar]], there are effectively 2,415,919,248 (2.4 billion) ''distinct'' wolves, which is 2,415,919,232 more than the 16 wolves that used to be available. Therefore, this update added 2,415,919,232 ''distinct'' wolves. See {{Slink|Wolf|Trivia}} for more details.

=== Command format ===
; {{cmd|transfer}}
* New command that triggers a transfer of a player to another server.
* Only exists on dedicated servers.
* Syntax: {{cmd|transfer <hostname> [<port>] [<players>]|link=none}}
** {{cd|hostname}}: String describing the hostname of the server to connect to.
** {{cd|port}}: Integer denoting the port number of the server to connect to.
*** If omitted, {{cd|25565}} is used.
** {{cd|players}}: The players to transfer.
*** If omitted, {{cd|@s}} is used.

; [[Item modifier]]s
* Added <code>minecraft:copy_components</code> function.
** Copies components from a specified source onto an item.
** This is now used in the Vanilla pack in place of the <code>minecraft:copy_name</code> and <code>minecraft:copy_nbt</code> functions.
** <code>conditions</code>: list of conditions (default: <code>[]</code>):
*** Conditions to check before applying the function.
** <code>source</code>: source type to pull from.
*** Currently, can only and must be <code>"block_entity"</code>.
** <code>include</code>: optional, list of components to copy.
*** If omitted, all components are copied.
** <code>exclude</code>: optional, list of components to exclude.
*** If omitted, defaults to an empty list.

* Added <code>minecraft:set_components</code> function.
** Adds or replaces the given component on the input item.
** <code>conditions</code>: list of conditions (default: <code>[]</code>):
*** Conditions to check before applying the function.
** <code>components</code>: map of component id to component value (format varied by id).
*** Components with a <code>!</code> prefix (e.g. <code>"!minecraft:damage": {}</code>) cause this component to be removed.

* Added <code>filtered</code> loot function.
** Applies sub-function only to items that match item predicate.
** Fields:
*** <code>conditions</code> - list of conditions to filter this function.
*** <code>item_filter</code> - item predicate used to match items.
*** <code>modifier</code> - functions to apply to matching items.

* Added <code>modify_contents</code> loot function.
** Apply modifier function to every item inside a component.
** If component does not exist, it is not be added.
** Fields:
*** <code>conditions</code> - list of conditions to filter this function.
*** <code>component</code> - target component.
**** Allowed values: <code>container</code>, <code>bundle_contents</code>, <code>charged_projectiles</code>.
*** <code>modifier</code> - function or list of functions to be applied to every item inside container

* Added <code>set_book_cover</code> loot function.
** New function for setting the cover details of the <code>minecraft:written_book_content</code> component. If present, any pages in the book are left untouched.
** Fields:
*** <code>conditions</code>: list of conditions (default: <code>[]</code>):
**** Conditions to check before applying the function
*** <code>title</code>: optional filterable text (same format as <code>title</code> on the <code>minecraft:written_book_content</code> component):
**** The title to set
**** If omitted, the original title is kept (or an empty string is used if there was no component)
*** <code>author</code>: optional string:
**** The author to set
**** If omitted, the original author is kept (or an empty string is used if there was no component)
*** <code>generation</code>: optional integer [0; 3]:
**** The generation value to set
**** If omitted, the original generation is kept (or <code>0</code> is used if there was no component)

* Added <code>set_custom_model_data</code> loot function.
** Sets <code>custom_model_data</code> component.
** Fields:
*** <code>conditions</code> - list of conditions to filter this function.
*** <code>value</code> - integer number provider.

* Added <code>set_fireworks</code> loot function.
** New function for setting the details of the <code>minecraft:fireworks</code> component.
** Fields:
*** <code>conditions</code>: list of conditions (default: <code>[]</code>):
**** Conditions to check before applying the function
*** <code>flight_duration</code>: Optional integer, 0-255:
**** The flight duration measured in number of gunpowder.
**** If omitted, the flight duration of the item is left untouched - or set to 0 if the component did not exist before.
*** <code>explosions</code>: List of <code>firework_explosion</code> data - same format as the <code>explosion</code> field in the <code>minecraft:fireworks</code> component:
**** The explosion data to set
*** <code>mode</code>: enumerated value deciding function for explosions:
**** <code>replace_all</code>: fully replace the explosions list
**** <code>replace_section</code>: replace a section of the explosions. Arguments:
***** <code>offset</code>: optional non-negative integer:
****** Start of replaced range.
****** If omitted, <code>0</code> is used.
***** <code>size</code>: optional non-negative integer:
****** Size of range to be replaced in explosions.
****** If omitted, the size of <code>explosions</code> field is used.
**** <code>insert</code>: insert explosions, moving existing explosions to after the inserted section. Arguments:
***** <code>offset</code>: optional non-negative integer:
****** Index before which explosions are inserted.
****** If omitted, <code>0</code> (before first explosion) is used.
**** <code>append</code>: append explosions at the end of the list
** Fields <code>explosions</code> and <code>mode</code> are grouped together as a sub-object.
*** <code>{ "explosions": <list>, "mode": <mode>, <mode-dependent fields>}</code> becomes <code>{"explosions": {"values": <list>, "mode": <mode>, <mode-dependent fields>}}</code>.
*** <code>explosions</code> field is now optional, while <code>value</code> field inside it is now mandatory.

* Added <code>set_firework_explosion</code> loot function.
** New function for setting the details of the <code>minecraft:firework_explosion</code> component.
** Fields:
*** <code>conditions</code>: list of conditions (default: <code>[]</code>):
**** Conditions to check before applying the function
*** <code>shape</code>: optional Explosion Shape:
**** The explosion shape to set
**** If omitted, the original shape is kept (or <code>small_ball</code> is used if there was no component)
*** <code>colors</code>: optional integer array, RGB values:
**** List of initial particle colors to replace the ones on the existing explosion with
**** If omitted, the original colors are kept (or <code>[]</code> is used if there was no component)
*** <code>fade_colors</code>: optional integer array, RGB values:
**** List of fade-to particle colors to replace the ones on the existing explosion with
**** If omitted, the original colors are kept (or <code>[]</code> is used if there was no component)
*** <code>trail</code>: optional boolean:
**** Set whether the explosion should have a trail or not
**** If omitted, the original <code>has_trail</code> value is kept (or <code>false</code> is used if there was no component)
*** <code>twinkle</code>: optional boolean:
**** Set whether the explosion should have a twinkle or not
**** If omitted, the original <code>has_twinkle</code> value is kept (or <code>false</code> is used if there was no component)

* Added <code>set_item</code> loot function.
** Replaces item type of item stack without changing count and components.
** Fields:
** <code>conditions</code> - list of conditions to filter this function.
*** <code>item</code> - new item type.

* Added <code>set_writable_book_pages</code> loot function.
** New function for manipulating the pages of the <code>minecraft:writable_book_content</code> component.
** Fields:
*** <code>conditions</code>: list of conditions (default: <code>[]</code>):
**** Conditions to check before applying the function
*** <code>pages</code>: list of Filterable strings (same format as <code>pages</code> on the <code>minecraft:writable_book_content</code> component):
**** The pages to apply
*** <code>mode</code>: enumerated value deciding function:
**** <code>replace_all</code>: fully replace the book contents
**** <code>replace_section</code>: replace a section of the book. Arguments:
***** <code>offset</code>: optional non-negative integer:
****** Start of replaced range
****** If omitted, <code>0</code> is used
***** <code>size</code>: optional non-negative integer:
****** Size of range to be replaced in book
****** If omitted, the size of <code>pages</code> field is used
**** <code>insert</code>: insert pages, moving existing pages to after the inserted section. Arguments:
***** <code>offset</code>: optional non-negative integer:
****** Index before which pages are inserted
****** If omitted, <code>0</code> (before first page) is used
**** <code>append</code>: append pages at the end of the book

* Added <code>set_written_book_pages</code> loot function.
** New function for manipulating the pages of the <code>minecraft:written_book_content</code> component. Same format as <code>set_writable_book_content</code> but the <code>pages</code> field contains filterable Components instead of Strings (same format as <code>pages</code> on the <code>minecraft:writable_book_content</code> component), and is a JSON Object rather than a string containing JSON.
** Any cover data is left untouched, and the page content components are set to resolve next time a player opens the book.

* Added <code>toggle_tooltips</code> loot function.
** This function can be used to modify item component tooltip visiblity.
** It works by setting fields like <code>show_in_tooltip</code> without changing other values.
** Format: <code>toggles</code> - a map of supported item component type to boolean value.
** Supported components: <code>trim</code>, <code>dyed_color</code>, <code>enchantments</code>, <code>stored_enchantments</code>, <code>unbreakable</code>, <code>can_break</code>, <code>can_place_on</code>, <code>attribute_modifiers</code>.
** Example: <code>{function:"toggle_tooltips","toggles":{"enchantments":false}}</code> hides enchantments tooltip.

; [[Loot table]]s
* Added <code>storage</code> loot number provider to access values from command storage.
** This number provider is able to 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, provider returns 0.
** Fields:
*** <code>storage</code>: namespaced id of command storage.
*** <code>path</code>: NBT path to field.
* Added new loot table type <code>minecraft:equipment</code>.
** Has required parameters of <code>this_entity</code> and <code>origin</code>.
*** <code>this_entity</code>: the mob that is about to be given equipment.
*** <code>origin</code>: the position of the mob.
* Added optional <code>equipment_loot_table</code> to the spawn data present in the <code>SpawnPotentials</code> of monster spawners and <code>spawn_potentials</code> of trial spawner configs.
** If present, rolled items from the specified loot table are equipped to the mob that spawns.

=== Gameplay ===
; [[Advancement]]s
* Added four new advancements:
{{Load advancements|Isn't it Scute?;Good as New;The Whole Pack;Shear Brilliance}}
* Added the <code>default_block_use</code> advancement trigger, which triggers due to the default interaction of a block by a player, such as opening a door.
* Added the <code>any_block_use</code> advancement trigger, which 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 the <code>crafter_recipe_crafted</code> advancement trigger, which triggers when a crafter ejects a successfully crafted item into the world.
** The <code>player</code> entity predicate matches the player who is nearby.
** Has a <code>recipe_id</code> condition which is the ID of the recipe being crafted.
** Has an optional <code>ingredients</code> condition which is a list of item predicates matching the ingredients that form the recipe being crafted.
* Added the <code>fall_after_explosion</code> advancement trigger, which triggers when a player begins falling after being knocked upwards by an explosion or wind burst
** The <code>player</code> entity predicate matches the player who is falling.
** Has an optional <code>start_position</code> condition which is a location predicate matching the position the player was at when they were hit by the explosion or burst.
** Has an optional <code>distance</code> condition which is a distance predicate matching how far the player must be from <code>start_position</code> to cause the criterion to be granted.
** Has an optional <code>cause</code> condition which is an entity predicate matching the entity which caused the explosion or burst to happen.

=== General ===
; [[Attribute]]s
* Added <code>generic.fall_damage_multiplier</code> attribute to multiply overall fall damage amount.
** Default is 1, and the valid range is from 0 to 100.
* Added <code>generic.gravity</code> attribute that controls blocks/tick^2 acceleration downward.
** Default is 0.08, and the valid range is from -1 to +1.
* Added <code>generic.safe_fall_distance</code> attribute to control the fall distance after which the entity takes fall damage.
** Default is 3, and the valid range is from -1024 to +1024.
* Added the <code>generic.scale</code> attribute.
** Allows changing the size of any mob to anywhere between 0.0625 and 16 times their default size.
* Added the <code>generic.step_height</code> attribute.
** Determines the max height in blocks where a mob can walk above without jumping.
** Default is 0.6, and the valid range is from 0 to 10.
* Added <code>player.block_break_speed</code> attribute that acts as a multiplier over block breaking speed for players.
** The valid range is from 0 to 1024.
* Added the <code>player.block_interaction_range</code> and <code>player.entity_interaction_range</code> attributes.
** Determines the maximum range a player can interact with blocks and entities, respectively.
** They both range between 0 and 64, with the default value being 4.5 for blocks and 3 for entities.

; Entity [[predicate]]
* Added entity sub-predicate <code>slots</code>, used to check single or multiple slots on any entity.
** For slot ranges, only one slot needs to match for whole entry to pass
** The field contains a map of slot names (same as ones used in <code>item</code> commands) to item predicate
** Example:
:: <syntaxhighlight lang="json">{
    "condition": "minecraft:entity_properties",
    "entity": "this",
    "predicate": {
        "slots": {
            "container.*": {
                "items": "dirt"
            }
        }
    }
}</syntaxhighlight>
* Added <code>raider</code> sub entity predicate.
** New sub-predicate has been added to match raidersFields:
*** <code>has_raid</code> - Match whether the raider is in an active raid.
*** <code>is_captain</code> - Match whether the raider is a captain.

; [[Game rule]]
* Added <code>spawnChunkRadius</code> to set the size of the spawn chunks.
** Defaults to <code>2</code>, equivalent to 3×3 entity ticking chunks.
** Possible values are <code>0</code> to <code>32</code>, where <code>0</code> completely disables the spawn chunks and <code>10</code> is equivalent to the functionality before this change.

; [[Inventory]]
* Added new slot names:
** <code>container.*</code>: contains <code>container.0</code> to <code>container.53</code>.
** <code>hotbar.*</code>: contains <code>hotbar.0</code> to <code>hotbar.8</code>.
** <code>inventory.*</code>: contains <code>inventory.0</code> to <code>inventory.26</code>.
** <code>enderchest.*</code>: contains <code>enderchest.0</code> to <code>enderchest.26</code>.
** <code>villager.*</code>: contains <code>villager.0</code> to <code>villager.7</code>.
** <code>horse.*</code>: contains <code>horse.0</code> to <code>horse.14</code>.
** <code>weapon.*</code>: contains {{cd|d=and|weapon.mainhand|weapon.offhand}}.
** <code>armor.*</code>: contains {{cd|d=and|armor.head|armor.chest|armor.legs|armor.feet|armor.body}}.
** <code>player.cursor</code>: item held by player on screen except [[Creative mode]]<ref>{{bug|MC-269127||player.cursor slot name is available in creative mode|WAI}}</ref>.
** {{cd|d=and|player.crafting.0|player.crafting.1|player.crafting.2|player.crafting.3|player.crafting.*}}: player's crafting slots

; [[Loot table]]s
* Added <code>gameplay/panda_sneeze</code> loot table for drops when [[panda]]s sneeze.

; [[Options]]
* Added "Menu Background Blurriness" in accessibility settings.
** Defaults to 50%.

; [[Particles]]
* Added the following particle types: {{cd|d=and|infested|item_cobweb|small_gust|raid_omen|trial_omen|trial_spawner_detection_ominous|ominous_spawning|vault_connection}}.

; [[Server]]s
* Added transfer packets.
** Custom servers can now request that clients connect to another server with a new packet.
** When a client is transferred, it connects to the target server with a new transfer intent (id 3).
** By default, servers do not accept incoming transfers and disconnect the client.
*** This can be changed by setting the {{cd|accepts-transfers}} property to {{cd|true}} in the {{cd|server.properties}} file.
** Resource packs are maintained across transfers.
** In the case of a transfer, custom servers can skip authentication with a new flag.
* Added 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 are persisted 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.
* Added an option to configure how region file compression algorithm is handled on dedicated servers.
** Added a dedicated server configuration property {{cd|region-file-compression}} with 3 possible values:
*** {{cd|deflate}}, the default option. Uses [https://en.wikipedia.org/wiki/Deflate the old algorithm].
*** {{cd|lz4}} uses [https://en.wikipedia.org/wiki/LZ4%20(compression%20algorithm) LZ4 algorithm], which requires less CPU time to compress and decompress but uses more disk space.
*** {{cd|none}} does not compress the data.
**** 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 does not automatically recompress the world.
*** New or updated chunks use the newly configured algorithm, but the old ones stay in the previous format.
* Added a reserved region file compression id for third-party servers to use for custom compression implementations.
** Compression id {{cd|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.

; [[Tag]]s
* Added the following block tags:
** {{cd|#armadillo_spawnable_on}}: contains {{cd|d=and|#animals_spawnable_on|#badlands_terracotta|red_sand|coarse_dirt}}
*** Controls which blocks the [[armadillo]] can spawn on.
** {{cd|#badlands_terracotta}}: contains {{cd|d=and|terracotta|white_terracotta|yellow_terracotta|orange_terracotta|red_terracotta|brown_terracotta| light_gray_terracotta}}
** {{cd|#does_not_block_hoppers}}: contains {{cd|d=and|beehive|bee_nest}}
*** Controls which blocks never disable a hopper when placed above one.
** {{cd|#incorrect_for_wooden_tool}}, {{cd|#incorrect_for_gold_tool}}, {{cd|#incorrect_for_stone_tool}}, {{cd|#incorrect_for_iron_tool}}, {{cd|#incorrect_for_diamond_tool}}, and {{cd|#incorrect_for_netherite_tool}}
*** These tags combine the existing {{cd|#needs_diamond_tool}}, {{cd|#needs_iron_tool}}, and {{cd|#needs_stone_tool}} tags for each specific tool tier.
* Added the following damage type tag:
** {{cd|#bypasses_wolf_armor}}: contains {{cd|d=and|#bypasses_invulnerability|cramming|drown|dry_out|freeze|in_wall|indirect_magic|magic|outside_border|starve|thorns|wither}}
*** Controls which damage types bypass [[wolf armor]].
** {{cd|#is_player_attack}}: contains {{cd|player_attack}}
*** For attacks performed by the player.
* Added the following enchantment tag:
** {{cd|#tooltip_order}}: contains {{cd|d=and|binding_curse|vanishing_curse|riptide|channeling|wind_burst|frost_walker|sharpness|smite|bane_of_arthropods|impaling|power|density|breach|piercing|sweeping_edge|multishot|fire_aspect|flame|knockback|punch|protection|blast_protection|fire_protection|projectile_protection|feather_falling|fortune|looting|silk_touch|luck_of_the_sea|efficiency|quick_charge|lure|respiration|aqua_affinity|soul_speed|swift_sneak|depth_strider|thorns|loyalty|unbreaking|infinity|mending}}
*** Controls which order Enchantments are listed in tooltips.
* Added the following entity type tags:
** {{cd|#aquatic}}: contains {{cd|d=and|axolotl|cod|dolphin|elder_guardian|glow_squid|guardian|pufferfish|salmon|squid|tadpole|tropical_fish|turtle}}
** {{cd|#arthropod}}: contains {{cd|d=and|bee|endermite|silverfish|spider|cave_spider}}
** {{cd|#ignores_poison_and_regen}}: contains {{cd|#undead}}
*** Controls which entities cannot be affected by [[Poison]] and [[Regeneration]] effects.
** {{cd|#illager}}: contains {{cd|d=and|evoker|illusioner|pillager|vindicator}}
** {{cd|#illager_friends}}: contains {{cd|#illager}}
*** Controls which entities [[illager]]s consider allies (unless on a different team).
** {{cd|#inverted_healing_and_harm}}: contains {{cd|#undead}}
*** Controls which entities that have inverted meanings of the Healing and Harm effects.
** {{cd|#not_scary_for_pufferfish}}: contains {{cd|d=and|cod|dolphin|elder_guardian|glow_squid|guardian|pufferfish|salmon|squid|tadpole|tropical_fish|turtle}}
*** Controls which entities do not cause [[pufferfish]] to puff.
** {{cd|#redirectable_projectile}}: contains {{cd|d=and|fireball|wind_charge|breeze_wind_charge}}
*** Controls projectiles which can be redirected by player attacks and projectiles toward the direction the player is looking.
** {{cd|#sensitive_to_bane_of_arthropods}}: contains {{cd|#arthropod}}
*** Controls which entities are sensitive to [[Bane of Arthropods]].
** {{cd|#sensitive_to_impaling}}: contains {{cd|#aquatic}}
*** Controls which entities are sensitive to [[Impaling]].
** {{cd|#sensitive_to_smite}}: contains {{cd|#undead}}
*** Controls which entities are sensitive to [[Smite]].
** {{cd|#wither_friends}}: contains {{cd|#undead}}
*** Controls which entities the [[wither]] does not target and which cannot harm the wither.
* Added the following item tags:
** {{cd|#chest_armor}}: contains {{cd|d=and|leather_chestplate|chainmail_chestplate|golden_chestplate|iron_chestplate|diamond_chestplate|netherite_chestplate}}
** {{cd|#dyeable}}: contains {{cd|d=and|leather_helmet|leather_chestplate|leather_leggings|leather_boots|leather_horse_armor|wolf_armor}}
** {{cd|#enchantable/foot_armor}}: contains {{cd|#foot_armor}}
** {{cd|#enchantable/leg_armor}}: contains {{cd|#leg_armor}}
** {{cd|#enchantable/chest_armor}}: contains {{cd|#chest_armor}}
** {{cd|#enchantable/head_armor}}: contains {{cd|#head_armor}}
** {{cd|#enchantable/armor}}: contains {{cd|d=and|#enchantable/foot_armor|#enchantable/leg_armor|#enchantable/chest_armor|#enchantable/head_armor}}
** {{cd|#enchantable/weapon}}: contains {{cd|d=and|#swords|#axes|mace}}
** {{cd|#enchantable/sword}}: contains {{cd|#swords}}
** {{cd|#enchantable/fire_aspect}}: contains {{cd|d=and|#enchantable/sword|mace}}
** {{cd|#enchantable/sharp_weapon}}: contains {{cd|d=and|#swords|#axes}}
** {{cd|#enchantable/mining}}: contains {{cd|d=and|#axes|#pickaxes|#shovels|#hoes|shears}}
** {{cd|#enchantable/mining_loot}}: contains {{cd|d=and|#axes|#pickaxes|#shovels|#hoes}}
** {{cd|#enchantable/fishing}}: contains {{cd|fishing_rod}}
** {{cd|#enchantable/trident}}: contains {{cd|trident}}
** {{cd|#enchantable/bow}}: contains {{cd|bow}}
** {{cd|#enchantable/crossbow}}: contains {{cd|crossbow}}
** {{cd|#enchantable/equippable}}: contains {{cd|d=and|#foot_armor|#leg_armor|#chest_armor|#head_armor|elytra|#skulls|carved_pumpkin}}
** {{cd|#enchantable/durability}}: contains {{cd|d=and|#foot_armor|#leg_armor|#chest_armor|#head_armor|elytra|shield|#swords|#axes|#pickaxes|#shovels|#hoes|bow|crossbow|trident|mace|flint_and_steel|shears|brush|fishing_rod|carrot_on_a_stick|warped_fungus_on_a_stick}}
** {{cd|#enchantable/vanishing}}: contains {{cd|d=and|#enchantable/durability|mace|compass|carved_pumpkin|#skulls}}
** {{cd|#foot_armor}}: contains {{cd|d=and|leather_boots|chainmail_boots|golden_boots|iron_boots|diamond_boots|netherite_boots}}
** {{cd|#head_armor}}: contains {{cd|d=and|leather_helmet|chainmail_helmet|golden_helmet|iron_helmet|diamond_helmet|netherite_helmet|turtle_helmet}}
** {{cd|#leg_armor}}: contains {{cd|d=and|leather_leggings|chainmail_leggings|golden_leggings|iron_leggings|diamond_leggings|netherite_leggings}}
** {{cd|#meat}}: contains {{cd|d=and|beef|chicken|cooked_beef|cooked_chicken|cooked_mutton|cooked_porkchop|cooked_rabbit|mutton|porkchop|rabbit|rotten_flesh}} 
*** This is not used by the game directly, but may be included by other tags.
** {{cd|#skulls}}: contains {{cd|d=and|player_head|creeper_head|zombie_head|skeleton_skull|wither_skeleton_skull|dragon_head|piglin_head}}
** {{cd|#armadillo_food}}, {{cd|#bee_food}}, {{cd|#camel_food}}, {{cd|#cat_food}}, {{cd|#chicken_food}}, {{cd|#cow_food}}, {{cd|#frog_food}}, {{cd|#goat_food}}, {{cd|#hoglin_food}}, {{cd|#horse_food}}, {{cd|#horse_tempt_items}}, {{cd|#llama_food}}, {{cd|#llama_tempt_items}}, {{cd|#ocelot_food}}, {{cd|#panda_food}}, {{cd|#parrot_food}}, {{cd|#parrot_poisonous_food}}, {{cd|#pig_food}}, {{cd|#rabbit_food}}, {{cd|#sheep_food}}, {{cd|#strider_food}}, {{cd|#strider_tempt_items}}, {{cd|#turtle_food}}, and {{cd|#wolf_food}}
*** These tags control which items can be fed to or tempt the corresponding mobs.

== Changes ==
=== Blocks ===
; [[Cobweb]]
* Added unique sounds.

; [[Grindstone]]
* No longer accepts items that have {{nbt|compound|unbreakable}} component but do not have an enchantment.
** If the item above has [[durability]], it can be repaired with an unbreakable item and the output does not inherit {{nbt|compound|unbreakable}} component. If the order is swapped, the item is neither be repaired nor disenchanted. If the only item in slots is an enchanted unbreakable item, it is disenchanted and {{nbt|compound|unbreakable}} component remains.
* No longer disenchants two [[enchanted book]]s at the same time.

; [[Hopper]]
* Improved hopper performance.
* Hoppers no longer try to pick up item entities if there is a full block placed above it.
** Can, however, still pick up items from [[beehive]]s and [[bee nest]]s.<ref>{{bug|MC-268451||Hoppers can't pull honey bottles from bee hives or bee nests|Fixed}}</ref>

; [[Player head]]
* Now stores item name in <code>custom_name</code> tag.
* NBT tag {{cd|SkullOwner}} and {{cd|ExtraType}} is replaced with <code>profile</code> to keep a consistent format with the item component form.

=== Items ===
; General
* Now <code>count</code> is stored again when there is only 1 item.
** Defaults to 1 if this field is invalid.

; [[Turtle scute]]
* Renamed "Scute" to "Turtle Scute".
* The ID has been changed from {{cd|scute}} to {{cd|turtle_scute}}.

=== Mobs ===
; General
* <code>FactorCalculationData</code> has been removed from mob effect instance tags.
* Mobs with <code>CanPickUpLoot</code> no longer pick up enchanted items after picking up an unenchanted item.<ref>{{bug|MC-273522}}</ref>

; [[Bee]]s and [[parrot]]s
* Adjusted their flying behavior to keep them from overshooting their position when flying up and down.

; [[Cave spider]]s and [[spider]]s
* Are now scared of armadillos that are not in a rolled up state.

; [[Horse]]
* Replaced {{Nbt|compound|ArmorItem}} with {{Nbt|compound|body_armor_item}}.

; [[Llama]]
* Replaced {{Nbt|compound|DecorItem}} with {{Nbt|compound|body_armor_item}}.

; [[Shulker]]s
* Are no longer able to destroy armor stands.

; [[Wolf]]
* Changes to tamed wolves:
** Now have {{Hp|40}} instead of {{Hp|20}}.
** No longer take half damage from most environmental sources like they used to do.
** Feeding a wolf now heals twice as many health points.
** Now only take knockback from [[snowball]]s from [[snow golem]]s, like other mobs, instead of taking damage.
* Now have tag {{nbt|compound|body_armor_item}} to store the armor they are wearing.
* The texture of the wolf collar layer has been changed.
* Now spawns on [[coarse dirt]] and [[podzol]] blocks.
* Now spawns in [[sparse jungle]], [[savanna plateau]], and [[wooded badlands]] biomes.
* When summoned using [[spawn egg]]s or [[commands]], the variant selection now follows the natural spawning biome rules with the following extensions:
** Rusty wolf is selected in all [[jungle]] biomes, including jungle and bamboo jungle.
** Spotted wolf is selected in all [[savanna]] biomes, including savanna and windswept savanna.
** Striped wolf is selected in all [[badlands]] biomes, including badlands and eroded badlands.

=== Non-mob entities ===
; [[Llama spit]]s
* Now use a new damage type <code>spit</code> instead of <code>mob_projectile</code>.
* Are no longer able to destroy armor stands.

=== World generation ===
; [[Grove]]
* [[Rabbit]]s, [[wolves]], and [[fox]]es are now the only animals spawning in the grove biome.

=== Command format ===
; General
* Unstructured [[NBT data]] attached to stacks of items (<code>tag</code> 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 {{cd|minecraft:custom_data}} component.
** This change has been made in order to:
*** Improve performance in cases where the game needs to frequently look up some property of an item (e.g. armor trims rendering every frame).
*** 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.
* Item types (e.g. {{cd|minecraft:stick}}) hold a set of default components on an item that individual item stacks can override.
* Commands such as <code>/give</code>, <code>/item</code>, <code>/loot</code>, and <code>/clear</code> have updated item syntax.
* Components can now be specified after the item name in square brackets.
** Components are assigned with an = (e.g. <code>wooden_pickaxe[damage=23]</code>).
** Components are comma-separated (e.g. <code>netherite_hoe[damage=5,repair_cost=2]</code>).
* Component types are autocompleted, but values themselves are not.
* Values however are validated, and the command fails to parse if the component is improperly specified. 
** e.g. <code>/give @s wooden_pickaxe[damage=-34]</code> is not valid.
* The pre-existing NBT syntax (<code>{...}</code>) must now be specified with the <code>minecraft:custom_data</code> component.
** e.g. <code>/give @s stick{foo:'bar'}</code> is equivalent to <code>/give @s stick[custom_data={foo:'bar'}]</code>.
* Item predicate arguments (in <code>/clear</code>) have new semantics with respect to matching components and custom data.
** Each specified component must be present on the target item, and have an exactly equal parsed value.
** Components with default values (e.g. <code>damage=0</code> by default) automatically exist on the target item if not specified.
*** As such, <code>/clear @s diamond_pickaxe[damage=0]</code> matches only undamaged diamond pickaxes.
*** On the other hand, <code>/clear @s diamond_pickaxe</code> matches any diamond pickaxe, irrespective of damage.
** Exact matching of component values applies even for the <code>minecraft:custom_data</code> component.
** However, the <code>{...}</code> syntax for custom data still uses the pre-existing partial matching behavior for NBT.
*** This means that all tags specified in the predicate must be present on the target item, but additional tags on the target item are ignored.
*** Lists in the target must contain all list-items specified in the predicate, but additional list-items are ignored.
* The format of serialized items and items in data packs has been updated for consistency and to support components.
* When advanced tooltips are enabled (F3+H), the number of components is displayed instead of number of tags.
* Default component values for items are now listed in {{cd|items.json}} generated in {{cd|reports}} directory.
* Block definitions are now added to {{cd|blocks.json}} report (note: those definitions are not used yet and present only for informational purposes).
* The {{cd|ignoreTags}} field on villager trades has been removed and replaced by a component predicate on damage.
* If the {{cd|key_item}} field of a vault block is not present, the vault cannot be unlocked.
* Command arguments that previously accepted namespaced ids of loot tables, modifiers and predicates can now also accept inline definitions
** <code>loot</code>
** <code>item</code>
** <code>execute if predicate</code>
** Values have same structure as matching JSON files, though they are encoded as SNBT. Example: <code>execute if predicate {condition:weather_check, raining:true}</code>

; [[Entity format]]
* Added {{Nbt|compound|body_armor_item}} to [[Entity format|entity data]], which functions similarly to entries of {{Nbt|list|HandItems}} and {{Nbt|list|ArmorItems}}.
** Also added {{Nbt|float|body_armor_drop_chance}}, which determines the chance of dropping body armor.
* Potion effects stored in items or entities no longer encode their default values.
** {{cd|amplifier}}: {{cd|0}}
** {{cd|duration}}: {{cd|0}}
** {{cd|ambient}}: {{cd|false}}
** {{cd|show_particles}}: {{cd|true}}
* All block positions are now stored as an array of 3 integers instead of a map of XYZ.
* {{Code|FlowerPos}} and {{Code|HivePos}} in bees have been renamed to {{Code|flower_pos}} and {{Code|hive_pos}}.
* {{Code|FlowerPos}} in beehives has been renamed to {{Code|flower_pos}}.
* {{Code|BeamTarget}} in end crystals has been renamed to {{Code|beam_target}}.
* {{Code|Leash}} in all leashable entities has been renamed to {{Code|leash}}.
* {{Code|PatrolTarget}} in patrolling mobs has been renamed to {{Code|patrol_target}}.
* {{Code|ExitPortal}} in end gateways has been renamed to {{Code|exit_portal}}.
* {{Code|WanderTarget}} in wandering traders has been renamed to {{Code|wander_target}}.
* Tipped arrows no longer store their applied potion effects.
** This is instead fetched from their held <code>item</code>.
* Area effect clouds now store potions in the same format as the <code>minecraft:potion_contents</code> component in a <code>potion_contents</code> field:
** <code>Potion</code> -> <code>potion_contents.potion</code>
** <code>Color</code> -> <code>potion_contents.custom_color</code>
** <code>effects</code> -> <code>potion_contents.custom_effects</code>
* Villager trades can be configured to accept only undamaged items by selecting for <code>'minecraft:damage': 0</code>
** By default, if no components are specified, any item is accepted (similar to <code>components</code> field in item predicates).

; 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 <code>id</code> (string) and <code>Count</code> (byte) fields have been replaced with <code>id</code> (namespaced string) and <code>count</code> (integer) fields.
** This format is additionally applied to the <code>icon</code> field in advancements, items in chat component hover events, and the <code>result</code> field in smelting recipes (<code>result</code> and <code>count</code> are no longer inlined).
* The <code>count</code> field is optional (defaults to <code>1</code>), and no longer stored if default. 
** Stack size is now limited to the maximum stack size of the item.
* The <code>tag</code> field has been removed, and any remaining contents end up in the <code>minecraft:custom_data</code> component when upgrading.
* A new <code>components</code> field stores all components attached to an item.
** Format: map of component id to component value (varies by component id).
*** e.g. <code><nowiki>{..., components: {'minecraft:damage': 12}}</nowiki></code>.
*** Components with a <code>!</code> prefix (e.g. <code>"!minecraft:damage": {}</code>) cause this component to be removed.
** Components equal to their default value are not stored.
* The item stack format no longer represents empty stacks (<code>air</code> item, or <code>count</code> 0).
** Instead, in places that support it, the field should be omitted.
** In some cases, such as lists of stacks (e.g. <code>HandItems</code> in living entities), an empty map (<code>{}</code>) is used to represent empty stacks.

; [[Predicate]] format
* Item predicate format has been updated:
** <code>tag</code> field has been removed.
** <code>items</code> field now supports a single entry, hash-prefixed item tag, or list of items.
** <code>potion</code> -> <code>potions</code>, and supports a single entry, hash-prefixed potion tag, or list of potions.
** <code>nbt</code> predicate has been renamed to <code>custom_data</code> and now matches <code>minecraft:custom_data</code> component.
** A new optional <code>components</code> field matches exact components. 
*** All specified components must be present an exactly equal on the target item, but additional components may be ignored.
*** Components with defaults are assumed to exist on the target item if not specified.
*** Format: map of component id to component value (varies by component id).
**** e.g. <code>"components": { "minecraft:damage": 0 }</code> matches only undamaged items.
* Block predicate format has been updated:
** <code>tag</code> field has been removed.
** <code>blocks</code> field now supports a single entry, hash-prefixed block tag, or list of blocks.
* Fluid predicate format has been updated:
** <code>tag</code> field has been removed.
** <code>fluid</code> -> <code>fluids</code>, and supports a single entry, hash-prefixed fluid tag, or list of fluids.
* Entity predicate format has been updated:
** <code>type</code> field now supports a single entry, hash-prefixed entity type tag, or list of entity types.
* Location predicate format has been updated:
** <code>biome</code> -> <code>biomes</code>, and supports a single entry, hash-prefixed biome tag, or list of biomes.
** <code>structure</code> -> <code>structures</code>, and supports a single entry, hash-prefixed structure tag, or list of structures.

; Other format changes
* Banners now store applied patterns in the same format as the <code>minecraft:banner_patterns</code> component in a <code>patterns</code> field:
** <code>Patterns[].Pattern</code> (string short id) -> <code>patterns[].pattern</code> (string pattern registry id)
** <code>Patterns[].Color</code> (integer dye id) -> <code>patterns[].color</code> (string dye name)
* Beehive format has also been updated:
** <code>Bees[].EntityData</code> -> <code>bees[].entity_data</code>
** <code>Bees[].TicksInHive</code> -> <code>bees[].ticks_in_hive</code>
** <code>Bees[].MinOccupationTicks</code> -> <code>bees[].min_ticks_in_hive</code>
** <code>FlowerPos</code> -> <code>flower_pos</code>

; {{cmd|attribute}}
* Modifier operations have been renamed:
** <code>add</code> -> <code>add_value</code>
** <code>multiply_base</code> -> <code>add_multiplied_base</code>
** <code>multiply</code> -> <code>add_multiplied_total</code>

; {{cmd|execute}}
* <code>if</code> and <code>unless</code> sub-commands can now use <code>items</code> to compare or count items.
** <code><nowiki>execute if|unless items <source> <slots> <item_predicate></nowiki></code>
*** <code><nowiki><source></nowiki></code> is the same one as used in {{cmd|item}}.
**** e.g. <code>block <x> <y> <z></code> or <code>entity <target></code> (selector can return multiple entities)
*** <code><slots></code> can accept single slot (like <code>container.0</code>) or a range (like <code>container.*</code>)
*** <code><item_predicate></code> is the same as item predicate in {{cmd|clear}} command.
* If used alone, it returns total number of items in stacks that match predicates.

; {{cmd|item}}
* <code>slot</code> now supports a range of slots.

; {{cmd|playsound}}
* Can now be used without specifying the player (assuming {{cd|@s}}) and without specifying the mixer (assuming {{cd|master}}).

; [[Item modifier]]s
* <code>minecraft:set_nbt</code> and <code>minecraft:copy_nbt</code> functions have been renamed to <code>minecraft:set_custom_data</code> and <code>minecraft:copy_custom_data</code> respectively.
** These now apply to the <code>minecraft:custom_data</code> component of the target item.
* <code>minecraft:set_attributes</code> function has been updated.
** The modifier <code>slot</code> field now supports <code>any</code>, <code>armor</code>, and <code>hand</code> values.
** The modifier <code>operation</code> values have been renamed: 
*** <code>addition</code> -> <code>add_value</code>
*** <code>multiply_base</code> -> <code>add_multiplied_base</code>
*** <code>multiply_total</code> -> <code>add_multiplied_total</code>
** Added <code>replace</code> field (default: true).
*** When false, attributes are appended.
* Nested lists are no longer supported in function lists.
* Changed <code>set_contents</code> loot function.
** Unused field <code>type</code> has been removed.
** Added new mandatory field <code>component</code>:
*** Describes target component to be filled with items.
*** Existing contents are replaced.
*** Allowed values: <code>container</code>, <code>bundle_contents</code>, <code>charged_projectiles</code>
*** <code>bundle_contents</code> and <code>charged_projectiles</code> ignore empty stacks.
* Changed <code>set_custom_data</code> loot function.
** Field <code>tag</code> now accepts both SNBT data written as a string (existing format) and unflattened tags.
* Changed <code>set_lore</code> loot function.
** The <code>replace</code> field has been removed.
** Now has <code>mode</code> like <code>set_fireworks</code> and <code>set_written_book_pages</code>.

* Changed <code>set_name</code> loot function.
** Added optional field <code>target</code> to specify which name should be set
** Values:
*** <code>custom_name</code> - sets <code>custom_name</code> component (default)
*** <code>item_name</code> - sets <code>item_name</code> component

; Item predicate argument
* The item predicate syntax (used in <code>execute if|unless items</code> and <code>clear</code> commands) has been significantly expanded.
* The general syntax is: <code><type> [comma-separated list of <test>]</code>
* <code><type></code> can be one of:
** item id
** item tag id prefixed with <code>#</code>
** <code>*</code> to match any item
* <code><test></code> can have one of 3 forms:
** <code><component_id>=<value></code> - match exact value of component (same as in previous format)
*** <code><value></code> is a representation of component value in SNBT format (same as in <code>item give</code> argument)
** <code><component_id></code> - check if component exists
** <code><predicate_id>~<value></code> - check item sub-predicate
*** <code><value></code> is a representation of item sub-predicate in SNBT format (but otherwise same as one used for advancement and loot table JSON files)
*** Example: <code>*[damage~{durability:{min:3}}]</code> matches any stack with at least 3 uses left
* The special name <code>minecraft:count</code> can be used for matching the stack size
** <code>count=<positive int></code> passes only when the stack size equals the given value
** <code>count~<int range></code> passes when the stack size is in the specified range
*** Example: <code>*[count~{max:2}]</code> matches any stack with count <= 2
** <code>count</code> always passes
* Any <code><test></code> entry can be negated by prefixing with <code>!</code>
** Example: <code>*[!count=1]</code> matches any stack that has count other than 1
* <code><test></code> elements can be also joined with | to check multiple alternatives
** Example: <code>*[!damage|damage=0]</code> looks for items without damage component or with 0 damage
* Removed redundant custom data section (<code>{...}</code>) from item arguments (it's fully replaced by <code>[custom_data={...}]</code>)
** To make this transition easier, <code>custom_data</code> item sub-predicate has been changed to allow unquoted SNBT
* The syntax for custom data partial matching (<code>{}</code>) has been removed in favor of using <code>custom_data</code> predicates
** So <code>stick{a:2}</code> becomes <code>stick[custom_data~{a:2}]</code>

; Item sub-predicates
* 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 usually have the same type as in the components, but are optional.
** Exceptions:
*** List fields are replaced with collection matchers (see below)
*** Integer and float fields are replaced with ranges
*** Registry ids are replaced with a type that accepts id, list of ids or a tag
* Collection matcher is a shared part of predicate used for matching collections. Every instance of this matcher has same fields with same functionality, with only difference being type of matched elementFields:
** <code>size</code> - integer range to match against collection size
** <code>contains</code> - a list of element predicates
*** All conditions must match for predicate to pass
*** Not all elements in tested container have to be matched
*** Elements can be in any order
*** Single element can match multiple predicates
*** Examples (when matching item stacks):
**** <code>{contents:[{item:diamond}]}</code> - matches when there is at least one diamond item
**** <code>{contents:[{item:diamond}, {item:dirt}]}</code> - matches when there is at least one diamond item and at least one dirt item
** <code>count</code> - a list of matchers on element counts
*** Entry fields:
**** <code>test</code> - element matcher
**** <code>count</code> - optional integer range to check against number of elements passing <code>test</code>
*** Examples (when matching item stacks):
**** <code>{count:[{count:3,test:{items:diamond}}]}}</code> matches only when there are exactly 3 stacks of diamonds (no matter the stack size)

; [[Predicate]]s
* Removed {{cd|any}} entity sub-predicate.
* Added slot name {{cd|contents}} for single-slot entities like [[item frame]]s and [[item display]]s.
* Contents of {{cd|item}} entity can now be accessed through {{cd|contents}} slot name.
* Component-specific item predicate properties have been moved to separate field {{cd|predicates}}.
** Some fields from item predicate have been moved to a map in an optional field {{cd|predicates}}.
** The new field is similar to the <code>components</code> 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:
*** <code>enchantments</code> - field moved to sub-predicate <code>minecraft:enchantments</code>
*** <code>stored_enchantments</code> - field moved to sub-predicate <code>minecraft:stored_enchantments</code>
*** <code>potions</code> - field moved to sub-predicate <code>minecraft:potion_contents</code>
*** <code>custom_data</code> - field moved to sub-predicate <code>minecraft:custom_data</code>
**** Predicate <code>minecraft:custom_data</code> now accepts both SNBT data written as a string (existing format) and unflattened tags
***** That means that <code>*[custom_data~{a:1}]</code> and <code>*[custom_data~"{a:1}"]</code> are equivalent
***** Flattened string format has been kept since NBT type information can't be expressed in JSON
* <code>durability</code> field has been expanded to <code>minecraft:damage</code> predicate:
** This check now works for any item that has <code>minecraft:damage</code> component
** An item that does not have a <code>minecraft:damage</code> component can never match
** To check for unbreakable items, query value of <code>minecraft:unbreakable</code> component
** Fields:
*** <code>damage</code> - optional bounds for value of <code>minecraft:damage</code> component
*** <code>durability</code> - optional bounds for durability (max damage minus value of <code>minecraft:damage</code>)
* Predicates <code>minecraft:enchantments</code>, <code>minecraft:stored_enchantments</code>, <code>minecraft:potion_contents</code> and <code>minecraft:damage</code> require matching component to exist on item
** That means that, for example, matching for empty enchantment list does not pass on items without <code>minecraft:damage</code> component
** Note: some components, like <code>minecraft:enchantments</code> have default values, so they always match.
** <code>wolf</code>
*** New <code>wolf</code> sub-predicate has been added to match wolf variantsFields: <code>variant</code> - wolf variant to match (single entry, list of entries or tag)
** <code>cat</code>, <code>frog</code>, <code>painting</code>
*** Field <code>variant</code> now accepts single entries, list of entries or tags.
** <code>wolf</code>, <code>cat</code>, <code>frog</code> and <code>painting</code> entity sub-predicates now accept tags and plain lists instead of just single elements.

; [[Slot]]s
* Replaced <code>horse.armor</code> [[slot]] argument with <code>armor.body</code>, applicable now to all mobs.

=== Gameplay ===
; [[Advancement]]s
* [[Armadillo]]s are now required for the "Two by Two" advancement.
* The "The Parrots and the Bats" advancement can be granted by breeding armadillos now.

; [[Creative]] mode
* {{key|Ctrl}}+{{control|pick blocking}} a renamed block (such as a chest) in Creative mode now gives a renamed item.

; [[Enchantment]]s
* The projectile weapon enchantments [[Infinity]], [[Flame]], [[Multishot]], [[Piercing]], [[Power]], and [[Punch]] now work on both crossbows and bows, if placed onto the alternative weapon using data manipulation or a change to the <code>enchantable/*</code> tags.

; [[End portal]]
* When entities leave or enter [[the End]], the area they arrive in now stays loaded for 15 seconds, matching the behavior of [[nether portal]]s.

; [[Spawn chunk]]s
* The size of the spawn chunks changed from radius 10 (19x19 entity ticking chunks) to radius 2 (3×3 entity ticking chunks).
** This was done to reduce memory usage, loading times and CPU usage.
** The developers opted to not fully remove spawn chunks to allow players who currently utilize this functionality to continue to do so.

=== General ===
; General
* The game now requires a 64-bit operating system.
* The game now requires Java 21.
* The included Java distribution is now the Microsoft build of OpenJDK 21.0.2.

; Accessibility
* The default focus is now always set when entering or exiting any menu while navigating using tab or arrow keys.

; [[Attribute]]s
* Renamed <code>horse.jump_strength</code> to <code>generic.jump_strength</code>, and now applies to all entities.
** This controls the base impulse from a jump (before jump boost or modifier on block).
** Default is 0.42, and the valid range is from 0 to 32.

; [[Background]]
* The menu background dirt texture has been replaced by a darkened background.
** The dirt texture has been moved to the "Programmer Art" resource pack.
** Outside the game, the menu panorama is displayed across all screen.
** In the game, the world is visible across all screens.
** Paired with the darkened background is a blur.
*** The strength of the blur can be configured in accessibility settings.
*** In-game screens such as containers and books are not affected by these changes.
* 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]].
* 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.

; 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 new session.
* If client has message delay configured, pending messages are delivered immediately before leaving world.
* Server can clear chat state by sending <code>reset_chat</code> packet in configuration phase.

; [[Controls]]
* Using {{key|Ctrl}} or {{key|Command}} + pick block no longer lists "(+NBT)" in the item tooltip.

; [[Create New World]] screen
* Renamed "Allow cheats" to "Allow commands".
** Also applies to "Open to LAN" menu.

; [[Data pack]]
* The version is now <code>41</code>.
* The {{cd|minecraft:sweeping}} enchantment has been renamed to {{cd|minecraft:sweeping_edge}}.
* [[Loot table]] entry with id loot_table now also accepts inline loot tables.
** Loot table entry {{cd|loot_table}} (which returns all items from provided nested loot table) now has the following syntax: {{cd|value}} - can be either:
*** namespaced id - reference to another named loot table.
*** full loot table (same format as in standalone file).
* [[Banner pattern]]s are now be loaded into the registry from <code>data/<''namespace''>/banner_pattern/<''id''></code>
<div class="treeview">
:* {{nbt|compound}}: The root object.
:** {{nbt|string|asset_id}}: A namespaced id for the texture. e.g. <code>custom:pattern</code> resolves to <code>assets/custom/textures/entity/banner/pattern.png</code> and <code>assets/custom/textures/entity/shield/pattern.png</code>.
:** {{nbt|string|translation_key}}: A translation key prefix. e.g. <code>block.minecraft.banner.custom.pattern</code> resolves to <code>block.minecraft.banner.custom.pattern.<''color''></code>.
</div>
* Int and float providers used in worldgen definitions are no longer wrapped in an extra <code>value</code> field next to <code>type</code>
** For example, <code>{"type":"minecraft:uniform","value":{"min_inclusive":0.0,"max_inclusive":1.0}}</code> becomes <code>{"type":"minecraft:uniform","min_inclusive":0.0,"max_inclusive":1.0}</code>
* The <code>text</code> field within filterable entries in book components has been renamed to <code>raw</code> to avoid ambiguity.
* The <code>profile</code> component and fields on player head items and blocks respectively now support resolving from a UUID.
** By specifying the <code>id</code> field without a <code>name</code>, the <code>name</code> and textures will be looked up.
* Added new terrain adaptation type for structures: <code>encapsulate</code>
** Density will be added all around every piece of a structure
** Ideal for structures that need to be entirely covered underground
* The combination of <code>max_stack_size</code> and <code>max_damage</code> components is no longer allowed in commands and data pack definitions
* Added a new option <code>body</code> in entity <code>equipment</code> sub-predicate to match the item in the body armor slot of an entity
* The <code>saturation_modifier</code> field on the <code>food</code> component has been replaced with <code>saturation</code>
** <code>saturation</code> is the exact value added to the player's saturation level
** In respect to the former <code>saturation_modifier</code>, this is defined by <code>saturation = nutrition * saturation_modifier * 2</code>
* Changed optional <code>equipment_loot_table</code> field in the <code>SpawnPotentials</code> of Monster Spawners and <code>spawn_potentials</code> of Trial Spawner configs.
** Now named <code>equipment</code> instead of <code>equipment_loot_table</code>
** Format: object with fields
*** <code>loot_table</code> - A loot table used to generate the equipment
*** <code>slot_drop_chances</code> - An optional map of equipment slot to specified drop chance
**** Can also be a single value instead of a list to apply to all slots: e.g. <code>slot_drop_chances: 0.0f</code> applies a chance of 0% to all slots
** e.g. <code>equipment: {loot_table: "minecraft:equipment/trial_chamber", slot_drop_chances: {"head": 0.0f, "chest": 0.25f, "legs": 1.0f, "feet": 0.25f}}</code>
** If present, rolled items from the specified loot table are equipped to the mob that spawns.

; [[Effect]]
* The background texture of the small effect UI has been changed.
* The former behavior of effects such as Jump Boost, Levitation, and Mining Fatigue over 127 has been replaced with new attributes.

; [[Font]]
* <code>shift</code> in TTF glyph providers is now restricted to the range <code>[-512;512]</code>.

; [[Item format/1.20.5|Item stack components]]
* Non-default components on item stacks containing block items are now stored on block entities when placed.
* Component removals from defaults are currently not preserved.
* Placing and breaking non-block entity blocks remains unchanged - nothing is preserved.
* Does not automatically cause preserved components to be restored on drops - this requires addition of <code>copy_components</code> function to loot table.
* Components are stored in field called <code>components</code>.
** Some components (like <code>custom_name</code>) are still handled by legacy serialization, which means they might not be present in there.
** Contains map of component id to component value.

; [[Language]]
* Added support for Viossa language.

; [[options.txt|{{mono|options.txt}}]]
* Removed <code>skipRealms32bitWarning</code>.

; [[Particles]]
* Status effect particle colors are no longer blended into one particle color.
** All active visible status effect particles are now rendered separately.
** The frequency of emitting status effect particles has been lowered to clutter the screen less.
* Particle options in commands and in fields like <code>Particles</code> in Area Effect clouds now use the same representation as worldgen files (like existing biomes' ambient particle settings)
* For example, command <code>/particle minecraft:dust 1.0 0.0 0.0 2.0 ...</code> becomes <code>/particle minecraft:dust{color:[1.0, 0.0, 0.0], scale:2.0} ...</code>
* The syntax for particles without extra options (like <code>minecraft:villager</code>) remains unchanged
* Changes to block particles (<code>minecraft:block</code>, <code>minecraft:block_marker</code>, <code>minecraft:falling_dust</code>, <code>minecraft:dust_pillar</code>) options:
** Field <code>value</code> has been renamed to <code>block_state</code>
** Field <code>block_state</code> now also accepts plain block name to represent default block state
** Example transformations:
*** <code>minecraft:block minecraft:redstone_lamp[lit=true]</code> -> <code>minecraft:block{block_state: {Name: "minecraft:redstone_lamp", Properties: {lit: "true"}}}</code>
*** <code>minecraft:block minecraft:diamond_block</code> -> <code>minecraft:block{block_state: "minecraft:diamond_block"}</code>
* Changes to <code>minecraft:item</code> options:
** Field <code>value</code> has been renamed to <code>item</code>
** Field <code>item</code> now also accepts plain item name to represent item stack with default components
** <code>count</code> field is now ignored
** Example transformations:
*** <code>minecraft:item minecraft:dirt</code> -> <code>minecraft:item{item: {id: "minecraft:dirt"}}</code>
*** <code>minecraft:item minecraft:dirt</code> -> <code>minecraft:item{item: "minecraft:dirt"}</code>
* Changes to <code>dust_color_transition</code> options:
** Field <code>fromColor</code> has been renamed to <code>from_color</code>
** Field <code>toColor</code> has been renamed to <code>to_color</code>
** Example transformation: <code>dust_color_transition 1.0 0.0 0.0 0.5 0.0 1.0 0.5</code> -> <code>dust_color_transition{from_color: [1.0f, 0.0f, 0.0f], scale: 0.5f, to_color: [0.0f, 1.0f, 0.5f]}</code>
* Changes to <code>entity_effect</code> options:
** Field <code>value</code> has been renamed to <code>color</code>
** Field <code>color</code> now also accepts list of floats representing RGBA color

; Protocol
* The <code>minecraft:chat_command_signed</code> packet has been split from <code>minecraft:chat_command</code>.
** Commands that do not accept any signed arguments use the unsigned packet, and do not pass any 'last seen' chat updates.
* Invalid data in packets sent from a server now causes the game client to disconnect.
* Changed the approach to game client disconnecting on invalid data in packets sent from a server.
** To ease the transition period, modded servers can opt out by setting the appropriate field in the <code>handshake/game_profile</code> packet.
** This option will be removed in the next release.

; [[Recipe]]
* Can now specify item component.
** {{nbt|compound|result}} field for {{cd|d=and|crafting_shaped|crafting_shapeless|stonecutting|smithing_transform}} now accepts {{nbt|compound|components}}.
** {{nbt|string|result}} field for {{cd|d=and|smelting|blasting|smoking|campfire_cooking}} recipes are now an item stack without count. That is, {{nbt|string|id}} must be specified and {{nbt|compound|components}} is now accepted.

; [[Resource pack]]
* The version is now <code>32</code>.
* The {{cd|ttf}} font provider transforms have been adjusted to have more reasonable defaults.
** {{cd|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 {{cd|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 {{cd|size}} of 9 and no {{cd|shift}} should look correct by default.
* The unused attributes array in core shader definitions has been removed.
* The <code>IViewRotMat</code> 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.
* Added texture and model files for vault block.
* The trial key item texture has been changed.
* Added texture and particle file for <code>vault_connection</code> particle.
* Added font variant filters to font providers.
** Every glyph provider can now be enabled or disabled based on certain set of variants.
** Available variants are currently hardcoded and controlled by font options menu.
*** Current variants:
**** <code>uniform</code> - wired to "Force Uniform" button.
**** <code>jp</code> - wired to "Japanese Glyph Variants" button.
** Filters are defined in section called <code>filter</code>, available for every glyph provider.
*** Keys in that object are variant names (for example <code>uniform</code>).
*** Glyph provider is included only when value in filter matches actual value of variant in key.
* Changed Japanese font variants.
** New option has been added to select Japanese variants for some CJK characters.
** Replacement glyphs come from Japanese version of Unifont font.
** New option is included in new "Font Settings" menu, accessible from "Language" menu.
** Default value of this option is based on system locale language setting.
** "Force Unicode" button has been moved to "Font Settings".
* Added additional textures to support colored layers of wolf armor for the wolf model and wolf armor item:
** <code>textures/entity/wolf/wolf_armor_overlay.png</code>
** <code>textures/item/wolf_armor_overlay.png</code>
* Wolf armor item texture, <code>textures/item/wolf_armor.png</code>, has been raise by 2px to create space for the durability bar.
* Added three semi-transparent textures for the cracks to show on the wolf armor layer:
** <code>textures/entity/wolf/wolf_armor_crackiness_low.png</code>
** <code>textures/entity/wolf/wolf_armor_crackiness_medium.png</code>
** <code>textures/entity/wolf/wolf_armor_crackiness_high.png</code>
* The <code>options_background</code> and the <code>light_dirt_background</code> textures have been removed. 
** Instead, <code>menu_background</code> is used as the background of screens, while <code>menu_list_background</code> is used for the background of lists.
* Lists now use the <code>header_separator</code> and <code>footer_separator</code> textures at the top and bottom, respectively.
* The following textures have been updated: <code>footer_separator</code>, <code>header_separator</code>.
* The following sprites have been updated: <code>widget\tab</code>, <code>widget\tab_highlighted</code>, <code>widget\tab_selected</code>, <code>widget\tab_selected_highlighted</code>.
* The <code>widget\scroller_background</code> sprite has been added.
* The following textures in Realms have been removed: <code>changes</code>, <code>changes_highlighted</code>, <code>restore</code>, <code>restore_highlighted</code>, <code>make_operator_highlighted</code>, <code>remove_operator_highlighted</code>, <code>remove_player_highlighted</code>.
* Added {{cd|d=and|gui/inworld_menu_background|gui/inworld_menu_list_background|gui/inworld_header_separator|gui/inworld_footer_separator}} textures to allow menus accessed from the pause menu to look different from menus accessed from the title screen.
* Added {{cd|gui/tab_header_background}} texture, which is rendered behind the tab buttons in the Create World Screen.
* Added {{cd|misc/credits_vignette}} texture, which is rendered behind the poem and the credits.
* The {{cd|blur}} post-processing shader has been renamed to {{cd|box_blur}}.
* Added optional boolean field {{cd|use_linear_filter}} to post-processing passes which when set to {{cd|true}} switches texture sampling mode from nearest-neighbor sampling to linear interpolation for that pass.
* Added {{cd|entity_outline_box_blur}} post-processing shader.
* Particle <code>entity_effect</code> takes color argument when spawned from command <code>/particle entity_effect {{cd|r}} {{cd|g}} {{cd|b}} {{cd|a}}</code>.
** 4 float values ranging from 0.0 to 1.0 representing RGBA.
* Removed <code>map_icons.png</code>{{more info}}
** Map decoration icons have been split from the former <code>map_icons.png</code> to use an atlas loaded from the <code>textures/map/decorations/</code> directory
* The process of upgrading a pack can be assisted by using an automated Slicer tool.<ref>https://github.com/Mojang/slicer/releases/tag/v1.1.4</ref>
* Added <code>trial_chambers</code> map decoration icon
* Added the following sound events: {{cd|d=and|block.cobweb.break|block.cobweb.step|block.cobweb.place|block.cobweb.hit|block.cobweb.fall|block.trial_spawner.about_to_spawn_item|block.trial_spawner.spawn_item|block.trial_spawner.spawn_item_begin|block.trial_spawner.charge_activate|block.trial_spawner.ambient_charged|item.ominous_bottle.dispose|event.mob_effect.bad_omen|event.mob_effect.trial_omen|event.mob_effect.raid_omen}}
* Added textures for the following blocks and items: ominous vault, ominous trial spawner, ominous bottle
* Updated textures for normal vault block
* Added the following mob effect icon textures: {{cd|d=and|infested|oozing|weaving|wind_charged|raid_omen|trial_omen|bad_omen_121}}
* Added new models for ominous state of vault block

; [[Shader]]s
* Removed <code>position_color_normal</code> and <code>position_tex_lightmap_color</code> shaders.
* Replaced <code>position_tex_color_normal</code> shader with <code>rendertype_clouds</code>.

; [[Splash]]es
* Changed "Java 16 + 1 = 17!" to "Java 16 + 1 + 4 = 21!".

; [[Tag]]s
* Added {{cd|d=and|coarse_dirt|podzol}} to the {{cd|#wolves_spawnable_on}} block tag.
* The <code>axolotl_tempt_items</code> item tag has been renamed to <code>axolotl_food</code>
* Removed the <code>tools</code> item tag (overlapping with <code>breaks_decorated_pots</code>), moving previous contents into that tag.

; [[Tooltip]]
* No longer appears when hovering outside the containing element.

; UI
[[File:Game 24w09a.png|thumb|The enhanced UI as seen in the "Create World" menu]]
* 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.
* Screen elements such as titles and buttons are positioned more consistently across different screens.
* The "Player" and "World Backups" screens in Realms have been updated.
* Lists now have clearer borders at the top and bottom.

; Other
* Added JFR (Java Flight Recorder) events for individual chunk reads (<code>minecraft.ChunkRegionRead</code>) and writes (<code>minecraft.ChunkRegionWrite</code>).
* Introduced changes to optimizing worlds.
** Optimizing singleplayer worlds and running dedicated server with {{cd|forceUpgrade}} now also upgrades contents of {{cd|entities}} and {{cd|poi}} directories of the world.
** New {{cd|recreateRegionFiles}} dedicated server startup parameter.
*** It triggers world optimization similar to {{cd|forceUpgrade}}, but also rewrites all the chunks independently of whether they have been upgraded.
*** This creates fresh and defragmented region files.
*** Using this parameter after changing the {{cd|region-file-compression}} server property recompresses all region files in the new format.
* Improved server TPS debug chart.
** As before, it is accessible by pressing {{cd|F3 + 2}} in a singleplayer world.
** The bottom dark red section of the chart displays the time spent during the main logic of the server tick. It is equivalent to the value displayed in the old chart.
** The light brown section displays time spent on 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 {{cd|min}}, {{cd|avg}}, {{cd|max}} aggregate values are based on the sum of the first 3 sections.
** Allowed server operators to view dedicated server TPS debug chart.
* Maximum length of a command in a function (including macro expansions) can no longer exceed 2,000,000 characters.
* Reduced time needed to generate [[explorer map]]s to [[buried treasure]]s.
* Reduced amount of data sent by the server during login by reusing parts of the vanilla datapack.
* In singleplayer, when errors occur during loading or saving of chunks a warning is shown in a toast.
* Trying to join a singleplayer world with less than 64 MB free disk space shows a warning screen.
** Additionally, a warning toast is shown periodically while in game.

== Experimental ==
These additions and changes only take effect when the [[Update 1.21]] experimental data pack is enabled, the exception to this is the change to villagers, which takes effect when the "[[Villager Trade Rebalance]]" experimental data pack is enabled.

=== Additions ===
==== Blocks ====
; [[File:Heavy Core JE1 BE1.png|32px]] [[Heavy core]]
* A mysterious, dense block which can be combined with a [[breeze rod]] to craft a [[mace]].
* Can be found as a loot reward in [[ominous vault]]s with a chance of 8.3%.
* When placed, it has the same size as a [[player head]], and can be oriented in 12 directions.
* Mining a heavy core is slow - it takes 15 seconds to mine.
** The appropriate tool is the pickaxe.
* Are resistant to explosions: blast resistance matches the one from [[obsidian]].
* Can be waterlogged.

; [[File:Ominous Trial Spawner.png|32px]] [[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.
* A trial spawner becomes ominous when it detects a [[player]] with the [[Trial Omen]] effect if:
** Either it is not in [[Trial Spawner#Cooldown|cooldown]].
** Or, it is in cooldown but was not ominous during its last activation. This bypasses the cooldown.
* While active, it:
** Glows blue instead of orange.
** Emits soul flames instead of normal flames.
** Spawns mobs, usually with equipment if they can wear it.
*** Mobs that can wear equipment often spawn with enchanted weapons and armor.
**** Armor enchantments include Protection IV, Projectile Protection IV and Fire Protection IV.
**** Weapon enchantments include Sharpness I, Knockback I, Power I and Punch I.
*** The [[armor]] these mobs wear have [[armor trim]]s applied from the [[trial chambers]].
** Periodically spawns potions and projectiles on top of unsuspecting players and mobs.
*** Based on their location, spawners in an area select a random set of projectiles to spawn.
*** These projectiles always include a single type of [[lingering potion]] from a set of possible status effects.
*** Players are chosen 50% of the time when an ominous trial spawner chooses which entity to drop projectiles on top of.
* Becoming ominous despawns any existing mobs it spawned and resets its challenge.
** It stays ominous until it has been defeated and its cooldown has finished.
* When defeated, it ejects a different set of loot to normal trial spawners.
* An ominous [[trial key]] has a 30% chance of ejecting from a defeated ominous trial spawner, replacing the usual 50% chance to eject a [[trial key]].

; [[File:Ominous Vault (active) JE2 BE2.png|32px]] [[Ominous vault]]
* A variant of the [[vault]], with a different texture, that emits soul flames instead of normal flames.
* Can be found throughout the [[trial chambers]] in harder to find places.
* Is unlocked with an [[ominous trial key]].
* Holds a more valuable set of rewards than the normal vault.
* Can provide some particularly valuable items, to mention a few:
** [[File:Ominous Bottle JE1 BE1.png|32px]] [[Ominous bottle]] ('''[[Bad Omen]]''' level III - V)
** [[File:Enchanted Golden Apple JE2 BE2.gif|32px]] [[Enchanted golden apple]]
** [[File:Flow Armor Trim Smithing Template JE1 BE1.png|32px]] [[Flow armor trim]] <!--TODO: add Smithing Template redirects for all armor trims.-->
** [[File:Heavy Core JE1 BE1.png|32px]] [[Heavy core]]
** [[File:Flow banner pattern.png|12px]] [[Flow banner pattern]]
** Enchantments for the [[mace]]:
*** [[Wind Burst]]
*** [[Breach]]
*** [[Density]]

; [[File:Vault JE6 BE5.png|32px]] [[Vault]]
* A block containing loot that can be unlocked with [[trial key]]s.
** Found throughout [[trial chambers]].
** {{control|Using}} a trial key on a vault unlocks it, making it eject loot.
* Can be unlocked by an unlimited amount of players.
** It can be only activated once per [[player]]. 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 flows from the player to the vault when nearby.
* Has a keyhole that opens or closes depending on the players nearby.
** If any nearby player has not unlocked that vault, the keyhole opens.
** If all nearby players have unlocked that vault, the keyhole remains closed.
* Within its cage, it cycles through and display items which are possible to eject from its loot table.
* The rewards it ejects are randomized from its loot table each time it is unlocked.
** The player gets no more than 1 unstackable item per vault.
** The player more often gets rewards which can stack together.
* Cannot be crafted or obtained in Survival, and does not drop anything when mined.
* Explosion-resistant and cannot be moved.
* Can eject:
** [[File:Wind Charge (item) JE1 BE1.png|32px]] [[Wind charge]]s
** [[File:Bolt Armor Trim Smithing Template JE1 BE1.png|32px]] [[Bolt armor trim]]
** [[File:Trident (item).png|32px]] [[Trident]]
** [[File:Honey Bottle JE1 BE2.png|32px]] [[Honey bottle]]
** [[File:Arrow (item) JE1 BE1.png|32px]] [[Arrow]]
** [[File:Arrow of Poison JE3.png|32px]] [[Arrow of Poison]]
** [[File:Golden Apple JE2 BE2.png|32px]] [[Golden apple]]
** [[File:Enchanted Golden Apple JE2 BE2.gif|32px]] [[Enchanted golden apple]]
** [[File:Ominous Bottle JE1 BE1.png|32px]] [[Ominous bottle]] ('''[[Bad Omen]]''' level I or II)
** [[File:Guster banner pattern.png|12px]] [[Guster banner pattern]]

==== Items ====
; [[Banner pattern]]s
* Added two new banner patterns:
** [[File:Flow banner pattern.png|x32px]] [[Flow banner pattern]]
** [[File:Guster banner pattern.png|x32px]] [[Guster banner pattern]]

; [[File:Breeze Rod JE1 BE1.png|width=32x32]] [[Breeze rod]]
* Dropped by the [[breeze]].
* Can be crafted into 4 [[wind charge]]s.
* Can be used with the [[heavy core]] to craft a [[mace]].

; [[File:Mace JE1 BE1.png|width=32x32]] [[Mace]]
* A new heavy weapon that can be crafted from a [[breeze rod]] and a [[heavy core]].
* Using the weapon while falling can increase the damage output. The higher the player falls, the more damage is dealt.
** This can be done by jumping toward the target and hitting them before the player hits the ground.
** Successfully striking a target in this way negates any damage accumulated from the fall, similar to how a [[wind charge]] works, as well as resets all vertical momentum.
** Maces have a unique explosive particle effect when executing a smash attack with the mace to really show the player's power.
** Maces have a unique sound when hitting an entity from a fall of more than 5 blocks.
** Other entities near the struck enemy receive knockback, even stronger when falling for more than 5 blocks before attacking.
* Can be enchanted with:
** [[Smite]]
** [[Bane of Arthropods]] 
** [[Fire Aspect]]
** [[Unbreaking]]
** [[Mending]]
** [[Curse of Vanishing]]
** [[Wind Burst]]
** [[Breach]]
** [[Density]]
* Can be repaired with [[breeze rod]]s using an [[anvil]].
* Players can use a mace in combination with [[wind charge]]s to launch up and deliver devastating smash attacks on their enemies.

; [[File:Ominous Bottle JE1 BE1.png|32px]] [[Ominous bottle]]
* Can be consumed by players to give the [[Bad Omen]] effect for {{convert|100|minutes|ticks}}.
** Has 5 variations, one for each Bad Omen level.
** The bottle breaks when consumed.
** Can be stacked to 64.
* Is ocassionally found in loots from [[vault]]s
* Is dropped by [[raid captain]]s when they are defeated outside a [[raid]].

; [[File:Ominous Trial Key JE1 BE1.png|32px]] [[Ominous trial key]]
* A new variant of the [[trial key]].
* Can only be obtained by defeating an [[ominous trial spawner]].
* Can be used to unlock an [[ominous vault]], but cannot unlock a [[vault]].

; {{Animate|Potion of Infestation.png; Splash Potion of Infestation.png; Lingering Potion of Infestation.png|x32px}} [[Potion of Infestation]]
* [[Brewed]] with an [[awkward potion]] and a [[stone]] block.
* Gives the [[Infested]] effect.

; {{Animate|Potion of Oozing.png; Splash Potion of Oozing.png; Lingering Potion of Oozing.png|32px}} [[Potion of Oozing]]
* Brewed with an awkward potion and a [[slime block]].
* Gives the [[Oozing]] effect.

; {{Animate|Potion of Weaving.png; Splash Potion of Weaving.png; Lingering Potion of Weaving.png|32px}} [[Potion of Weaving]]
* Brewed with an awkward potion and a [[cobweb]].
* Gives the [[Weaving]] effect.

; {{Animate|Potion of Wind Charging.png; Splash Potion of Wind Charging.png; Lingering Potion of Wind Charging.png|32px}} [[Potion of Wind Charging]]
* Brewed with an awkward potion and a [[breeze rod]].
* Gives the [[Wind Charged]] effect.

; [[Pottery sherd]]s
* Added 3 new pottery sherds, that can be found on [[decorated pot]]s inside of [[trial chambers]]:
** [[File:Flow Pottery Sherd JE1 BE1.png|x32px]] [[Flow pottery sherd]]
** [[File:Guster Pottery Sherd JE1 BE1.png|x32px]] [[Guster pottery sherd]]
** [[File:Scrape Pottery Sherd JE1 BE1.png|x32px]] [[Scrape pottery sherd]]

; [[Smithing template]]s
* Added two new smithing templates, that are exclusively obtained from [[vault]] and [[ominous vault]]s:
** [[File:Armor Trim Bolt (sample model).png|32px]] [[File:Bolt Armor Trim Smithing Template JE1 BE1.png|x32px]] [[Bolt armor trim]]
** [[File:Armor Trim Flow (sample model).png|32px]] [[File:Flow Armor Trim Smithing Template JE1 BE1.png|x32px]] [[Flow armor trim]]

; [[Spawn egg]]
* [[File:Bogged Spawn Egg JE1 BE1.png|x32px]] Added the [[bogged spawn egg]].

; [[File:Trial Chambers Map JE1.png|32px]] [[Trial chambers map]]
* Can be traded from journeyman cartographers.
* Point to a nearby [[trial chamber]].

; [[File:Wind Charge (item) JE1 BE1.png|x32px]] [[Wind charge]]
* It can now be obtained as an [[item]] by the [[player]].
* Can be crafted from [[breeze rod]]s.
* When used it fires off a wind charge projectile similar to the [[breeze]]'s.
* A wind charge fired by a player grants 10% more knockback than a breeze's, but has 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, and they activate [[redstone]] components.
* 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 [[Altitude|Y-level]] of where they collided with the wind burst.

==== Mobs ====
; [[File:Bogged JE2 BE2.png|width=64x64]] [[Bogged]]
* A new, mossy and mushroom covered variant of the [[skeleton]] that shoots poisonous arrows.
** Is faster to take down with {{hp|16}} health instead of {{hp|20}} health.
** Attack at a slower interval of {{convert|3.5|seconds|ticks}} instead of skeletons' {{convert|2|seconds|ticks}}.
* Has a chance to drop [[arrows of Poison]] when killed by a [[player]].
* Drops 2 [[mushroom]]s (either both red/brown or one of each) when [[shear]]ed.
* Spawns naturally in [[swamp]]s and [[mangrove swamp]]s.
** They're somewhat rare, with their spawn chance being half of that of the skeleton.
** As opposed to [[stray]]s and [[husk]]s, bogged do not require sky access to spawn, and they can also spawn in caves.
* Can spawn from [[trial spawner]]s in some [[trial chambers]]. These spawners now replace the ones that spawn skeletons shooting arrows of Poison.

==== Command format ====
; Loot functions
* Added <code>set_ominous_bottle_amplifier</code> loot function.
** Sets the <code>ominous_bottle_amplifier</code> component on the target item according to a number provider.
*** <code>conditions</code>: list of conditions to filter this function
*** <code>amplifier</code>: a number provider used to generate the <code>ominous_bottle_amplifier</code> component

==== Gameplay ====
; [[Advancement]]s
* Added eight new advancements:
{{Load advancements|Minecraft: Trial(s) Edition;Under Lock and Key;Revaulting;Blowback;Who Needs Rockets?;Crafters Crafting Crafters;Lighten Up;Over-Overkill}}

; [[Effect]]s
* [[File:Infested JE1 BE1.png|32px]] [[Infested]]
** Affected entities have a 10% chance to spawn 1-2 [[silverfish]] when hurt.
** Silverfish spawn at the center of the entity's bounding box and fling out in the direction the entity is facing.
** Silverfish cannot get this affect.

* [[File:Oozing JE1 BE1.png|32px]] [[Oozing]]
** Affected entities spawn two [[slime]]s upon death.
** Slimes only spawn in a given 5x5x5 area up to the max entity cramming count.
** Slimes cannot get this effect.

* [[File:Raid Omen JE2 BE1.png|32px]] [[Raid Omen]]
** A variant that Bad Omen can transform into if the player enters a village.
** It has a duration of 30 seconds.
** Once the Raid Omen expires, a [[raid]] starts at the location the player gained the Raid Omen.

* [[File:Trial Omen JE1 BE1.png|32px]] [[Trial Omen]]
** A variant that Bad Omen can transform into if 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.

* [[File:Weaving JE1 BE1.png|32px]] [[Weaving]]
** Affected entities spread 2-3 [[cobweb]] blocks upon death.
** Players are affected by the movement buff through cobwebs, affecting 50% of their normal speed instead of 25%.

* [[File:Wind Charged JE1 BE1.png|32px]] [[Wind Charged]]
** Affected entities emit a wind burst upon death.

; [[Enchantments]]
* Three new enchantments have been introduced that are unique to the [[mace]].

* [[Breach]]
** Rare enchantment, accessible in the [[enchanting table]] and on [[enchanted book]]s 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.

* [[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.

* [[Wind Burst]]
** Unique enchantment which can only be found in [[ominous vault]]s.
** Has 3 levels.
** Maces enchanted with Wind Burst emit a burst of wind upon hitting an enemy, launching the attacker upward and enabling the linking of smash attacks one after the other.
** Each level bounces the attacker higher up in the air; however any level above the default maximum of 3 obtained through commands makes the player simply lose all downward momentum and begin falling again, without gaining any upward momentum.

; {{Animate|Bad Omen JE3 BE3.png; Raid Omen JE2 BE1.png; Bad Omen JE3 BE3.png; Trial Omen JE1 BE1.png|32px}} [[Ominous event]]s
* Bad Omen has been expanded to give access to an optional experience in trial chambers.
* These optional experiences accessed through [[Bad Omen]] are now known as ominous events.
** They are more challenging than usual, and are designed to shake up the experience in unique ways.
** Illager [[raid]]s 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 transforms into [[Raid Omen]] with a duration of 30 seconds.
*** Once the Raid Omen expires, a raid starts 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.

==== General ====
; [[Tag]]s
* Added the following block tag:
** {{cd|#blocks_wind_charge_explosions}}: contains {{cd|d=and|barrier|bedrock}}
*** Controls which blocks are not impacted by the explosion when hit by [[wind charge]].
* Added the following entity type tags:
** {{cd|#deflects_projectiles}}: contains {{cd|breeze}}.
** {{cd|#immune_to_infested}}: contains {{cd|silverfish}}.
*** For entities that cannot receive the Infested mob effect.
** {{cd|#immune_to_oozing}}: contains {{cd|slime}}.
*** For entities that cannot receive the Oozing mob effect.
** {{cd|#no_anger_from_wind_charge}}: contains {{cd|d=and|bogged|breeze|skeleton|stray|zombie|husk|spider|cave_spider|slime}}.
* Added the following item tag:
** {{cd|#enchantable/mace}}: contains {{cd|mace}}.
* Added the following structure tag:
** {{cd|#on_trial_chambers_maps}}: contains {{cd|trial_chambers}}.

=== Changes ===
==== Blocks ====
; [[Crafter]]
* The top face of the crafter is no longer mirrored.

; [[Trial spawner]]
* Trial spawners now have the same two default loot tables as they have in the trial chamber.
* The loot ejected from trial spawners has been adjusted.
** It now has a focus on providing higher quality food more often to make replenishing between fights more safe.
* No longer ignore the {{cd|custom_spawn_rules}} field.
* Now appears more frequently in the [[trial chambers]] corridors.
* All trials spawners now increase the amount of mobs present at once by 0.5 for each additional player, down from 2.
* Baby zombie spawners now only have 2 mobs present at once for its baseline, down from 3 mobs.
* Can now only activate when a player is in line of sight.

==== Items ====
; [[Trial key]]
* Can now be used to open [[vault]]s.
* Texture changed to match the vaults.

==== Mobs ====
; [[Breeze]]
* Breezes now deflect all projectiles.
** Deflected projectiles now deflect in the direction of the shooter.
* Added sounds for projectile deflection, 'charging up attack', the breeze being in the air, and a 'whirl' idle sound.
* Tweaked the existing sounds.
* Separate eyes textures have merged into the head.
* The texture for the bottom faces of breeze's rods was changed.
* Is now aggressive toward [[iron golem]]s in addition to players.
* No longer retaliates against attacks from [[skeleton]]s, [[stray]]s, [[zombie]]s, [[husk]]s, [[spider]]s, [[cave spider]]s, and [[slime]]s. These mobs don't retaliate when damaged by a breeze.
* Now avoids jumping into dangerous blocks or air.
* Drops 1-2 [[breeze rod]]s when killed by a player.
** The number of breeze rods dropped is affected by [[Looting]] enchantments.

; [[Parrot]]
* Can now imitate bogged sounds.

; [[Villager]]
* In the "[[Villager Trade Rebalance]]" experiment, villagers who buy armor now ignore durability and can buy damaged armor.

==== Non-mob entities ====
; [[Wind charge]]
* Updated the model, texture, and animation, to give it a more dynamic look and feel.
* They now use a new damage type <code>wind_charge</code> instead of <code>mob_projectile</code>.

==== World generation ====
; [[Trial chambers]]
* The spawners that used to spawn skeletons holding Poison arrows now spawn bogged.
* Added new chambers and variations, with new challenges:
** Remade <code>chamber_3</code>, and renamed it to <code>pedestal</code>.
** Remade <code>chamber_5</code> with variations, and renamed it to <code>eruption</code>.
** Remade <code>chamber_6</code> with variations, and renamed it to <code>assembly</code>.
** Remade <code>chamber_9</code>, and renamed it to <code>slanted</code>.
* Added flow, guster, and scrape [[pottery sherd]]s to the [[decorated pot]]s in the decor structure pool.
* Placed vaults and ominous vaults.
* Reduced amount of trial spawners in corridors.
* Added an atrium to the corridors.
* Made various layout changes in intersections and corridors.
* Fixed various broken jigsaw connections in the corridors.
* Trial chambers now generate slightly more rarely and a bit more spaced out from each other, and more consistently buried by terrain when found underground.
* Added a new trap dispenser style to chambers.
* Chamber "Eruption":
** Stopped tuff bricks from spawning in the air.
** Added more lights to quadrants.

==== Gameplay ====
; [[Advancement]]s
* Killing a bogged now counts for the "Monster Hunter" advancement.
* Bogged are now required for the "Monsters Hunted" advancement.

==== General ====
; [[Tag]]s
* Added {{cd|vault}} to the {{cd|#features_cannot_replace}} block tag.
* Added {{cd|heavy_core}} to the {{cd|#mineable/pickaxe}} block tag.
* Added {{cd|bogged}} to the {{cd|#skeletons}} entity type tag.
* Added {{cd|mace}} to the {{cd|#breaks_decorated_pots}} item tag.
* Removed the {{cd|#deflects_arrows}} and {{cd|#deflects_tridents}} entity type tags.

== Fixes ==
{{fixes|fixedin=23w51a,23w51b,24w03a,24w03b,24w04a,24w05a,24w05b,24w06a,24w07a,24w09a,24w10a,24w11a,24w12a,24w13a,24w14a,1.20.5 Pre-Release 1,1.20.5 Pre-Release 2,1.20.5 Pre-Release 3,1.20.5 Pre-Release 4,1.20.5 Release Candidate 1,1.20.5 Release Candidate 2,1.20.5 Release Candidate 3
|;From released versions before 1.20
|19893|{{samp|options_background.png}} is incorrectly displayed upside down in the credits after beating the dragon.
|71977|Changing {{cd|generic.attack_damage}} of tamed wolf has no effect/taming wolf removes custom {{cd|generic.attack_damage}}.
|72151|Snow golem's snowballs damage wolves instead of pushing them.
|94413|Breaking, placing and walking in cobweb plays stone sounds.
|96609|Pick block on player head does not use {{cd|BlockEntityTag}}.
|100016|Singleplayer world selection screen is shown incorrectly when {{samp|light_dirt_background.png}} and/or {{samp|options_background.png}} are transparent.
|100994|Items in hotbar appear on top of tab menu.
|107353|Ghast fireballs move incorrectly when hit with Knockback enchantment.
|109286|Default dirt page background not aligned properly.
|117637|World is visible for a short moment after credits before respawn.
|117955|Player teleports to the top when crushed by a piston head.
|117977|Advancement GUI doesn't have a close button.
|118857|Effect amplifier is read/written as byte from NBT despite being stored as an integer.
|118890|Tipped arrows stuck in the ground never lose their effect.
|121621|Pick block on shulker boxes doesn't find placed and mined shulker boxes in inventory.
|123804|Explorer map and ominous banner names appear in item frames, draw in italics, and can be removed with an anvil.
|130244|When opening chat in {{key|F1}} mode, previous messages aren't visible.
|131636|One additional character at the end is allowed in JSON text components.
|132380|The "Joining world..." message shows up when you enter a nether/end portal.
|140397|When combining two enchanted unbreakable items, the result will be two stacked items.
|140565|Patrol leaders with banners can drop two different types of banners which don't stack.
|142372|{{key|Ctrl}} + pick block on a campfire with food cooking updates the nbt during cook time.
|143614|Campfire item with "cooking" NBT heavily shakes in hand/off-screen, when {{key|Ctrl}}+pick-blocked.
|147710|Some long mob names are occluded by the scroll bar in the Statistics page.
|148057|Ominous banners generated in outposts show the pattern list.
|148480|Putting two identical enchanted books in a grindstone will output one book.
|151793|Various ominous banner stacking issues.
|153329|Leashing an iron golem breaks its pathfinding until reloading the world.
|153643|Debug overlay is rendered behind hotbar items.
|153879|Raiders ignore ominous banners that were saved in the Saved Toolbars from a different version.
|155857|Team command doesn't affect illagers and witches AI.
|157133|Enchanted books with curses can be stacked using a grindstone.
|165435|Can't trigger flying mode in Creative while standing in the middle of 2×2 magma block bubble column.
|165948|Bees can be lured into dangerous blocks.
|166361|GUI scale does not visually update when the option is changed using the keyboard and without the mouse.
|167324|Multiple UI buttons can be highlighted at the same time.
|167375|Baby turtle subtitles are grammatically incorrect.
|168407|Bees can get stuck in a lantern.
|169389|End portals sometimes teleport the player to Overworld coordinates.
|170000|Hand lighting / lighting of held items changes drastically in first-person mode when looking around.
|171177|The player can enter Nether portals in Creative mode by running against the frame of the portal.
|171981|Map of fuel times is created anew every time an item is placed in a furnace, instead of being cached.
|172047|Wolves try to attack armor stands.
|172447|Leaving the End shows loading screen with overlapping text.
|172898|Equipping armor in Creative via right click causes it to disappear from the hotbar for a frame.
|173303|Leashed pets teleport to the player when reloaded.
|173672|Title text renders in front of player names in player list.
|174496|Player heads lose their name after being placed.
|175437|Fullscreen resolution isn't applied when exiting Video Settings with {{key|Esc}}.
|175622|Wolf's tail will spin 360 degrees if max health is increased.
|178410|Banners don't support the {{cd|HideFlags}} tag when placed down as blocks.
|184066|Respawn anchors don't produce an ambient sound.
|184622|Sound for exiting a portal/travelling to another dimension does not use its subtitle string despite it existing in {{cd|en_us.json}}.
|185379|Baby polar bear subtitle does not explicitly mention it comes from a baby polar bear.
|185955|When the player's eye level is up to 2 pixels above water, they count as being underwater as if it would be a full block.
|186626|{{cmd|weather}} not working in custom dimensions.
|187267|Title text renders in front of sidebar.
|187372|There is no space between FPS limit/VSync and graphics level in the debug screen.
|187616|Totems rendered too dark for a second after being used.
|187746|Game rule buttons on "Edit game rules" screen are highlighted despite being covered.
|188497|{{cd|AngerTime}} and {{cd|AngryAt}} cannot be set on summon.
|189211|"Water Taken from Cauldron" statistic is slightly covered by the bottom of the screen's overlay.
|189484|Statistics screen tab selection is not centered.
|193202|Tamed wolf health resets when NBT is loaded (e.g. relog).
|193460|Inconsistent layering of sidebar and debug screen ({{key|F3}}) text.
|193511|Title text renders in front of narrator text.
|193515|Boss bar text renders in front of narrator text.
|193517|Boss bar text renders in front of sidebar.
|193521|Boss bar text renders in front of {{key|F3}}.
|193524|Boss bar text strikethough/underline renders on {{key|tab}} list.
|193656|Banners' breaking texture is displaced and/or repeatedly flips horizontally, depending on the banner's rotation.
|193753|Respawn anchor ambient sound subtitle refers to it as a portal.
|194948|Block breaking subtitle inconsistent with painting, item frame and lead breaking subtitles.
|195572|The fog from lava is much denser when having the Fire Resistance effect active compared to Bedrock Edition.
|198492|Players can be pushed into danger in situations where they wouldn't normally be damaged.
|198787|Inefficient streams in {{cd|GoalSelector}}.
|198963|Chat text renders in front of player names in player list.
|199973|Wet wolf is rendered too dark compared to past versions.
|200947|Large amount of unused space in {{samp|map_icons.png}} texture file.
|200987|Title in bossbar breaks HUD opacity.
|201722|{{cmd|Summon}} command ignores stacking restrictions.
|204947|{{key|Ctrl}} + pick block on placed ominous banners is not the same as pick block.
|206854|Multiplayer warning and Chat Preview warning are off center.
|207353|Ghast fireballs and wind charges can't be redirected in melee if the attack does 0 damage.
|208528|Feeding tamed baby wolves and cats causes them to sit down/stand up.
|213104|Statistics tab resets when resizing the Minecraft window.
|216071|Splash text resets if you hit escape on the Multiplayer menu, but not the Singleplayer menu.
|217084|Player head NBT "{{cd|ExtraType}}" is no longer saved but doesn't use {{cd|DataFixerUpper}} upgrade path.
|218811|Big dripleaves tilt when touched from the side.
|219899|Bone meal used on rooted dirt causes the particles to appear above it, despite the growth being below it.
|219967|{{cd|IndexOutOfBoundsException}} occurs instead of a "Bad packet id" message.
|221754|Leashed wolves no longer attack when unleashed.
|224343|Books don't stack after being placed on a lectern.
|225170|Normal matrix scaling broken in some situations.
|226775|Extinguishing candle shows inaccurate subtitle.
|228486|Cannot switch to other windows using {{key|Cmd}}+{{key|Tab}} on macOS.
|229209|Loot table function {{cd|set_count}} doesn't work with unstackable items anymore.
|229680|Chest, trapped chest, ender chest and barrels stop functioning when moving far away whilst in the GUI.
|229919|Bees don't recognize beehives or bee nests with a campfire directly below and a block on top.
|230256|NBT "HideFlags" does not hide "Slot" on {{cd|minecraft:bundle}}.
|232489|Retrieving a plant from a flower pot ignores inventory contents.
|232560|Tamed wolf movement speed decreases when unleashed from a fence.
|234406|The dirt background changes its position when interacting with the "Players" button in the Realms menu.
|234558|There is no title in the "Invite player" Realms menu.
|234889|Potion effect icons displayed within the HUD can overlap boss bars.
|238242|There is an unnecessary black pixel in the upper right corner of small potion UI icons in the inventory.
|239084|Item pickup animation is darker than the actual item model.
|248076|Specific type of firework rockets won't stack with each other after use.
|248689|Fog on falling blocks happens too early.
|248961|{{cd|takenDamage}} for achievement criteria is calculated wrongly when the player has equipped a helmet.
|249136|Freeze/server-side lag spike sometimes occurs when attempting to locate a buried treasure or opening/breaking a chest containing a map.
|249335|Using bone meal on mangrove leaves spawns growth particles at the center of the block instead of below it.
|250432|{{key|Esc}} key always unpauses the game in Demo mode.
|251027|Wearing a helmet doesn't reduce the damage of falling anvils or stalactites by {{frac|1|4}}.
|251042|Third-party warning buttons are not positioned well in non-English languages.
|251303|Transparent boss bars break when more than one is on screen.
|251509|Patterned banners not stacking properly / banner loses "banner" ID when mined.
|252409|Memory statistics within the debug menu contain some unnecessary spaces.
|259142|Hoppers with barrel facing downwards on top picking up item.
|259355|Game crashes because {{cmd|place}} sometimes does not check whether position is loaded and out of world.
|259587|Negative item durability causes the durability bar to render incorrectly.
|260099|Sniffer's snout shading changes during sniffing.
|260867|Cannot focus entries on the pack selection screen using the mouse.
|260889|Players can use water buckets and lava buckets on blocks that are out of reach.
|260921|Data is focused last on the statistics screen when using keyboard navigation.
|261577|The nether portal overlay is rendered completely opaque when using spyglasses while standing inside of nether portals.
|261596|Crafting Table search keyboard shortcut not working.
|261749|Tamed cats don't emit mob interaction vibrations for entering sitting/standing mode.
|261846|Japanese language uses a Chinese font.
|264821|The fog on armor worn by entities occurs too early.<!-- This issue was introduced in 1.18-pre1, seen by testing it on different versions -->
|266990|Maps with the same 'map' tag value, but different 'display' tag data can cause markers to disappear.
|268580|Chiseled bookshelf model is not deterministic in data generation.<!-- This issue was introduced when chiseled bookshelves were added -->
|;From 1.20
|262503|{{samp|light_dirt_background.png}} and {{samp|header_separator.png}} does not match {{samp|options_background.png}}.
|263256|Chat renders on top of {{key|TAB}}, blocking information.
|263315|Attack target of hoglins/zoglins can't be detected by {{cmd|execute}} on target.
|;From 1.20.1
|263641|Boss bar text no longer renders behind potion effect icons.
|263872|The "Scanning for games on your local network" element in the Multiplayer menu cannot be selected via the mouse cursor.
|263873|Elements within the statistics menu are not selected in order when using the {{key|tab}} key.
|263874|Elements in lists within the statistics menu cannot be selected via the mouse cursor.
|264456|Entity targeted by frogs and axolotls can't be detected by {{cmd|execute}} on target.
|264597|{{key|F3}} debug menu underlined text renders over subtitles.
|264637|Text shaders resource packs cause subtitles to flicker.
|265273|The tab list in create world screen does not indicate it's tab-focused by highlight or rendering borders.
|267433|Shift double-clicking while holding the same item on your cursor doesn't transfer items.
|;From 1.20.2
|264684|Too long macro silently fails.
|265520|Switching connection protocols sometimes produces errors.
|265541|{{cd|player.dat_old}} won't be read even if {{cd|player.dat}} doesn't exist.
|265585|Waterlogged barriers do not diffuse sky light.
|265661|Dirt background appears to overlap back button on experimental feature requirements data pack screen for some window sizes.
|265669|Hotbar text renders above subtitle background but under subtitle text.
|265709|Stonecutter outputs are broken past the 32nd row in the GUI (server only).
|265741|Waterlogged barriers don't show up on maps.
|265749|Tooltips flash when the values of buttons or fields are changed.
|266135|Cached macro commands ignore permission level, allowing limited permission escalation.
|266136|Macro commands ignore {{cd|function-permisson-level}} server setting, including when lower than default.
|266334|Shulker bullets destroy armor stands.
|266389|Glow berry particles are barely visible when bonemealed.
|266589|Armor durability is changed when swapping on Creative.
|266628|High polling rate causing stuttering.
|266960|Bossbar text renders in front of player list background and player icons.
|266997|Sky light doesn't update when breaking a shulker box while its (closing) animation is playing.
|;From 1.20.3
|265835|The freezing effect is rendered totally opaque when using a spyglass.
|266032|Attempting to copy a "Copy of a copy" book in a Crafter behaves incorrectly.
|266055|Opening or closing a copper door or trapdoor while holding an axe / honeycomb grants wax-related advancement.
|266144|Copper doors are not part of the {{cd|#doors}} item tag.
|266145|Copper trapdoors are not part of the {{cd|#trapdoors}} item tag.
|266308|Copper bulbs have unused "{{cd|turn_off}}" sound.
|266430|Breeze on top of a non-full block produces particles of the block below it.
|266432|Exposed, weathered and oxidised copper bulbs are unwaxed in trial chambers.
|266449|Breeze doesn't attack or retaliate against mob on sight.
|266467|Wind charges stutter when flying through the air.
|266469|When attacked, breezes sometimes stop pathfinding, jumping, or firing wind charges.
|266532|Breezes can be hit by some projectiles.
|266533|Breeze's AI has serious flaws in open terrain.
|266557|The breeze sometimes moves around while attacking, interrupting its attack animation.
|266570|Wind charges can't go through non-solid blocks.
|266577|Some trial spawners in trial chambers spawn mobs without persistence.
|266680|The glowing outline isn't applied to the eyes or eyebrows of breezes.
|266685|The entity shadows of breezes are too large in relation to the size of their models.
|266688|Breeze model's glowing eyes are not resource pack-friendly.
|266707|Trial spawners ignore {{cd|custom_spawn_rules}}.
|266738|Subtitles string "{{cd|subtitles.block.trial_spawner.spawn_mob}}" is misleading and inconsistent.
|266879|Clouds, entity hitboxes, block outlines, specially rendered blocks, and enchantment glints, render through the insides of breezes' eyes and eyebrows.
|266909|Breezes don't have smooth transitions to their idle states when they stop moving.
|266999|Crafter's tooltip buttons can still be visible to players on Spectator mode.
|267044|Tick status strings contain inconsistent word usage.
|267045|Some tick strings are missing articles and are unclear.
|267086|Compass does not indicate spawn point correctly when game is frozen with {{cmd|tick}}.
|267103|Client crashes when receiving inconsistent network registries.
|267104|The bottom face textures of breezes' rods are incorrect and don't match with surrounding colors.
|267133|Breezes can't attack or move when there is no land around them and they are on the same height block as the player.
|267149|Crafter top face has an inverted UV texture map.
|267193|A function with {{cmd|return fail}} run in chat doesn't indicate failure.
|267465|1.20.3 upload error: "{{cd|Cannot invoke "ctt.c()" because "this.b" is null}}".
|;From 1.20.4
|267194|{{cmd|return run}} function in combination with a fork and a function that doesn't return has inconsistent behavior.
|267273|Second beacon power for level 4 beacon flickers when player hovers the mouse pointer over it.
|267352|Singleplayer worlds don't load the {{samp|player.dat}} when the "Player" tag is absent from {{samp|level.dat}}.
|267384|Unused duplicate wolf armor sound events.
|267451|Items named with an anvil on 1.20.4 don't stack with items named prior.
|267500|Attribute modifier on an item with the first and/or last 2 integers of the UUID being 0 are non-functional.
|267732|{{cmd|place jigsaw}} still caps max depth at 7.
|267742|Opening a written book makes it unstackable with identical unopened books.
|267747|Click and hover events don't work when viewing chat while {{key|F1}} is enabled.
|267866|Panda slimeball drop is hardcoded.
|267975|The Realms player list is rendered larger than its visual size.
|267976|The scroll bar in the Realms player list can no longer be dragged using the mouse cursor.
|268000|The client crashes when using {{cmd|give}} to give players a skull.
|268011|Hoppers leak the last world they sucked item on.
|268022|Elements within the list in the "Experimental feature requirements" menu cannot be selected via the mouse cursor.
|268110|Deleting world results in a file directory error.
|268236|Search field in the social interactions menu not focused by default.
|268353|Tick freeze randomizes next AI tick type.
|268597|Hitting a breeze with a player reflected/dispensed wind charge causes it to become trapped within the breeze until it moves.
|268624|"Saving world" message is rendered behind pause menu background, instead of on top.
|269085|Experience bar and jump bar render translucent pixels as opaque.
|269279|The "Normal user" button within the Realms player menu is improperly capitalized.
|269472|Crash when {{cd|table_bonus}} loot condition has empty chances list.
|269496|You don't get any damage if you fight against the breeze in a minecart or in a boat.
|269755|Scroller in Report Player screen renders translucent pixels as opaque, unlike elsewhere.
|269763|Scroller in Realms screen renders translucent pixels as opaque, unlike elsewhere.
}}

== Video ==
{{yt|UKF91_m_B2Q}}
{{slicedlime|aQfTnlXi7CE|A2mphZA1Gho}}

== Trivia ==
* The scale attribute comes from the April Fools snapshot [[23w13a_or_b]] mainly taken from the attribute "minecraft:generic.scale" or the {{cmd|transform scale}} command.
* This minor update has the most snapshots (15, beating the previous record of [[Java Edition 1.7.4|1.7.4]] and [[Java Edition 1.20.3|1.20.3]] at 8 snapshots), even surpassing major updates such as [[Java Edition 1.19|1.19]] and [[Java Edition 1.20|1.20]]. 
* The first snapshot was released on the [[Java Edition 23w51a|51st]] week, surpassing [[Java Edition 1.9|1.9]] ([[15w51a]]/[[15w51b]]) as it was released on the latest calendar of all snapshots, on December 18th.
* 1.20.5 has the longest wait for a minor update to ''Java Edition'', with 138 days having elapsed since the release of [[Java Edition 1.20.4|1.20.4]] on December 7, 2023, surpassing [[Java Edition 1.8.9|1.8.9]] by only 4 days.

== See also ==
* [[Bedrock Edition 1.20.80]]

== References ==
{{Reflist}}

== Navigation ==
{{Navbox Java Edition versions|1.2x}}

[[de:1.20.5]]
[[es:Java Edition 1.20.5]]
[[fr:Version Java 1.20.5]]
[[ja:Java Edition 1.20.5]]
[[pt:Edição Java 1.20.5]]
[[ru:1.20.5 (Java Edition)]]
[[uk:1.20.5 (Java Edition)]]
[[zh:Java版1.20.5]]
