Java Edition 25w20a

Minecraft 25w20a
25w20a.jpg: Infobox image for Minecraft 25w20a the version in Minecraft
Java Edition 25w20a.png: Infobox image for Minecraft 25w20a the version in Minecraft
Edition

Java Edition

Release date

May 13, 2025

Type

Snapshot

Snapshot for

1.21.6

Downloads

Client (.json)
Server

Obfuscation maps

Client
Server

Protocol version

 dec1073742074
 hex400000FA

Data version

4428

Resource pack format

61

Data pack format

77

Minimum Java version

Java SE 21

25w20a is the sixth snapshot for Java Edition 1.21.6, released on May 13, 2025.[1]

Additions

Items

Music Disc

Command format

/dialog

  • A new command that shows dialog to clients.
  • Syntax:
    • /dialog show <targets> <dialog>
      • Show dialog to player(s).
      • <targets> - player name, UUID or a player selector.
      • <dialog> - a namespaced ID from minecraft:dialog registry or inline dialog value as described above.
      • Returns number of players in targets argument.
    • /dialog clear <targets>
      • Clean dialog for player(s), if they have any visible.
      • <targets> - player name, UUID or a player selector.
      • Returns number of players in targets argument.

Gameplay

Music

General

Dialogs

  • Added a way to display simple modal dialogs to a user.
  • Dialogs are stored in a minecraft:dialog registry, but can also be defined inline
  • Dialogs are an experimental feature.
  • To avoid user confusion, dialog screens are marked with a warning sign next to the title.
    • Clicking on this warning leads to a dialog that explains to user that this screen is provided by custom content.
    • It also gives user an option to leave current world to avoid them being locked in infinite loop of dialogs.
  • Dialogs can be displayed by server in play and configuration connection phases.
    • However, only inline registries are allowed in configuration, since registries are not yet available in that phase.
  • Dialogs always close after user selects any action.
  • Dialogs by default will also close after Escape key is pressed.
    • When this happens, dialog will run action specific to dialog type described as "exit action" below.
    • This behavior is configurable.
  • When dialog screen is closed, game goes back to previously displayed non-dialog screen or back to gameplay.
    • That means that new dialogs always replace already opened ones, if any.
  • Dialogs screens will pause the game in singleplayer mode.
  • Dialogs can be configured to be accessible from Pause menu.
    • This replaces and expands "Server Links" button added in previous versions.
  • Most dialogs follow a common layout, however exact contents depend on type:
    • Header with title and warning button.
    • Body elements (labels, inputs, buttons and submit actions), scrollable if needed.
    • Optional footer, contains main buttons and submit actions.

Dialog Description Format

  • Dialogs are stored in minecraft:dialog registry that can be provided by a datapack
    • Fields:
      • type - one of dialog types from minecraft:dialog_type registry
      • <type-specific> - see below.
  • Common dialog fields
    • Most dialog types share some fields.
    • Fields:
      • title
        • Screen title, text component.
          • Should be always visible on screen, no matter the specific type.
      • external_title
        • Name to be used for a button leading to this dialog (for example from pause screen), optional text component.
          • If not present, title will be used instead.
      • body
        • Optional list of body elements or a single element.
      • can_close_with_escape
        • Can dialog be dismissed with Escape key, default true.
  • Common button data
    • Most actions in dialog types share following fields that describe appearance of a button associated with that action:
      • label- text component.
      • tooltip - optional text component to display when button is highlighted or hovered over.
      • width - width of the button, positive integer with default 150.
  • Click action
    • Common object used in dialogs to represent clickable action on a dialog.
      • Fields:
        • Common button data.
        • on_click - optional click event (same format as click_event on text components).
          • If not present, clicking button will simply close screen without any action.
  • Dialog types
    • minecraft:notice
      • A simple screen with one action in footer.
      • Exit action: same as action.
      • Fields:
        • Common dialog fields
        • action - click action, defaults to button with gui.ok label and no action or tooltip.
    • minecraft:confirmation
      • A simple screen with two actions in footer.
      • Exit action: same as no action.
      • Fields:
        • Common dialog fields
        • yes - click action for positive outcome.
        • no - click action for negative outcome.
    • minecraft:multi_action
      • A scrollable list of actions arranged in columns.
      • Screen also has button in footer that runs exit action and closes the screen.
        • Label will be gui.cancel if dialog has defined exit action and gui.back if it has no side effects.
      • Exit action: defined in on_cancel field.
      • Fields:
        • Common dialog fields
        • actions - non-empty list of click actions.
        • on_cancel - optional click event (same format as click_event on text components).
        • columns - positive integer describing number of columns, default: 2.
    • minecraft:server_links
      • A scrollable list of links received from server in minecraft:server_links packet, arranged in columns.
      • Screen also has button in footer that runs exit action and closes the screen.
        • Label will be gui.cancel if dialog has defined exit action and gui.back if it has no side effects.
      • Note: this is a replacement for previous "Server Links" screen, but now with an additional body.
      • Exit action: defined in on_cancel field.
      • Fields:
        • Common dialog fields.
        • on_cancel - optional click event (same format as click_event on text components).
        • columns - positive integer describing number of columns, default: 2.
        • button_width - width of buttons in the list, positive integer with default 150.
    • minecraft:dialog_list
      • A scrollable list of buttons leading directly to other dialogs, arranged in columns.
        • Titles of those buttons will be taken from external_title fields of targeted dialogs.
      • Screen also has button in footer that runs exit action and closes the screen.
        • Label will be gui.cancel if dialog has defined exit action and gui.back if it has no side effects.
      • Exit action: defined in on_cancel field.
      • Fields:
        • Common dialog fields.
        • dialogs - dialog, a list of dialogs or a dialog tag.
        • on_cancel - optional click event (same format as click_event on text components).
        • columns - positive integer describing number of columns, default: 2.
        • button_width - width of buttons in the list, positive integer with default 150.
    • minecraft:simple_input_form
      • A screen that accepts user inputs.
      • Has a single submit action with in a footer.
      • Exit action: none (submitting data closes screen, but does not run any action outside of sending data to server).
      • Fields:
        • Common dialog fields
        • inputs - non-empty list of inputs controls.
        • action - submit action.
    • minecraft:multi_action_input_form
      • A screen that accepts user inputs.
      • Can have multiple submit actions.
      • Has no footer, submit actions are appended to a body.
      • Exit action: none (submitting data closes screen, but does not run any action outside of sending data to server).
      • Fields:
        • Common dialog fields.
        • inputs - non-empty list of inputs controls.
        • actions - non-empty list of submit actions.
  • Dialog body types
    • All dialogs have a list of body elements describing contents between title and actions or inputs.
    • Fields:
      • type - one of dialog body types from minecraft:dialog_body_type registry.
      • <type-specific> - see below.
    • minecraft:plain_message
      • A multiline label.
      • Fields:
        • contents - text component.
        • width - maximum width of message, positive integer with default 200.
    • minecraft:item
      • Item with optional description.
        • If description is present, it will be rendered to the right of item.
      • Item will be rendered as if it was in inventory slot.
      • Item is not scaled even if width and height are set to values other than default.
      • Fields:
        • item - item stack with count.
        • description - optional object with fields:
          • contents - text component.
          • width - maximum width of contents, positive integer with default 200.
          • Can also be just be text component.
        • show_decorations - if true, count and damage bar will be rendered over the item, default: true.
        • show_tooltip - if true, item tooltip will show up when item is hovered, default: true.
        • width - horizontal size of element, default: 16.
        • height - vertical size of element, default: 16.
  • Input control types
    • Input dialog uses a set of controls to accept user input.
    • When submitted, current value of input will be converted to a string and sent to the server as described by submit action section below.
    • Fields:
      • type - one of input control types from minecraft:input_control_type registry.
      • key - string identifier of value used when submitting data, must be a valid template argument (letters, digits and _).
      • <type-specific> - see below.
    • minecraft:text.
      • Simple text input.
      • Sends current contents without modification.
      • Fields:
        • width - width of input, positive integer with default: 200.
        • label - a text component to be displayed to the left of control.
        • label_visible - controls label visibility, default: true.
        • initial - initial contents, default: "" (empty).
    • minecraft:boolean
      • A plain checkbox with a label.
      • Fields:
        • label - a text component to be displayed to the right of control.
        • initial - an initial value, default: false (i.e. unchecked).
        • on_true - a string value to send when control is checked, default: true.
        • on_false - a string value to send when control is unchecked, default: false.
    • minecraft:single_option
      • A button that cycles between a set of options when clicked.
      • Sends value associated with currently selected preset.
      • Fields:
        • label - a text component to be displayed on the button.
        • label_visible - if true, label will be incorporated into button text, default: true.
        • width - width of button, positive integer with default: 200.
        • options - a list of objects with fields:
          • id - a string value to send on submit.
          • display - a text component to display on button, optional (if not present, id is used).
          • initial - an optional boolean flag that selects initial option (only one option can have it set to true).
          • Additionally list might also contain plain string - in that case it's equivalent to a single entry with field id set to that string and other fields set to default.
    • minecraft:number_range
      • A slider for picking a numeric value out of some range.
      • Sends currently selected value.
        • Whole numbers will be sent without decimal point.
      • Fields:
        • label - a text component to be used as a slider label.
        • label_format - a translation key to be used for building label (first argument is contents of label field, second argument is current value), default: options.generic_value.
        • width - width of input, positive integer with default: 200.
        • start - start value (when slider is in leftmost position) (inclusive), float.
        • end - end value (when slider is in rightmost position) (inclusive), float.
        • steps - number of increments, positive integer.
          • Note: value of 1 means that slider will have two positions (start and end).
        • initial - initial value of slider, rounded down nearest step, must be within range, defaults to min.
  • Submit actions
    • Every submit action on input dialog has a button associated with it.
    • When one of those buttons is clicked, values of all inputs will be collected and sent to a server using one of methods described below.
    • id field of a submit action will be included as an input with key action.
    • Submit action fields:
      • Common button data.
      • id - string identifier of an action.
      • on_submit - submit method to run when button is clicked, object with following fields:
        • type - one of submit method types from minecraft:submit_method_type registry.
        • <type-specific> - see below.
      • Note: server does not validate individual values as they arrive as filled commands or custom payloads.
  • Submit method types
    • minecraft:command_template
      • This method will build a command using a provided macro template and request the server to run it (same as minecraft:run_command click event).
      • If the command requires permission higher than 0 (when any operator permissions are required), a confirmation dialog will be shown.
      • Macro will be expanded with values from input.
        • For example, if macro is some_command $(action), action parameter will be expanded to id field of a submit action.
        • Inputs not used in macro will be ignored, while macro parameters not matching any inputs will be replaced with an empty string.
      • Fields:
        • template - a string with a macro template to be interpreted as a command.
    • minecraft:custom_template
      • This method will build a custom server click action using a provided macro template and send it to the server (same as minecraft:custom click event).
      • Macro will be expanded with values from input.
        • Inputs not used in macro will be ignored, while macro parameters not matching any inputs will be replaced with an empty string.
      • Fields:
        • template - a string with a macro template to be used as a payload.
        • id - namespaced ID.
    • minecraft:custom_form
      • This method will build a custom server click action from all values and request the server to run it (same as minecraft:custom click event).
      • Format:
        • keys are separated from values with horizontal tabulation (U+0009) character.
        • key-value entries are separated with line feed (U+000A) character.
        • If characters U+0009 and U+000A are present in any key or value, they will be escaped to \t and \n.
      • Fields:
        • id - namespaced ID.
  • Built-in dialogs
    • The built-in datapack contains some custom dialogs to provide customization of specific screens used by client.
    • minecraft:server_links
      • Replacement for previously existing "Server Links" screen.
      • Meant to simplify migration for servers that used this feature previously.
    • minecraft:custom_options
      • Shows contents of minecraft:pause_screen_additions tag (see below).
      • Lets user select a specific dialog if this tag contains multiple entries.
      • Note: Since this tag is meant for interoperability, any content that replaces this dialog should be careful to not hide other dialog providers.

Tags

  • Added the #pause_screen_additions dialog tag.
    • Dialogs in this tag replaces the "Report Bugs" button or the "Server Links" button on the pause screen.

Changes

Blocks

Dried Ghast

  • No longer breaks if water flows into it.

Items

Leather

Saddle

  • Can be removed from mobs wearing them by using shears on the mob.
    • Cannot be removed this way from ravagers or mobs with riders.
    • Shears in a dispenser don't work.
  • Saddles can now be crafted with 3 leather and 1 iron ingot.
    • The recipe unlocks when a player picks up their first leather.
Ingredients Crafting recipe
Leather +
Iron Ingot
Invicon Leather.png: Inventory sprite for Leather in Minecraft as shown in-game linking to Leather with description: LeatherInvicon Leather.png: Inventory sprite for Leather in Minecraft as shown in-game linking to Leather with description: LeatherInvicon Iron Ingot.png: Inventory sprite for Iron Ingot in Minecraft as shown in-game linking to Iron Ingot with description: Iron IngotInvicon Leather.png: Inventory sprite for Leather in Minecraft as shown in-game linking to Leather with description: Leather
Invicon Saddle.png: Inventory sprite for Saddle in Minecraft as shown in-game linking to Saddle with description: Saddle

Shears

  • Can now remove saddles, horse armor, harnesses and carpets from mobs.
    • They cannot be removed if the mob has a rider.
    • They cannot be removed if the player is crouching.
  • Saddles cannot be removed from ravagers.
  • Dispensers with shears cannot remove saddles, horse armor, harnesses and carpets equipped on mobs.

Mobs

Ghasts

Gameplay

Fog

  • Fog is now applied to 3d HUD elements such as first person player hands and items in hands.
  • Rain and thunder weather is somewhat less foggy now.
  • Rain fog affects interiors less.

Music

  • Music now plays even when the game is paused.
  • Added an option to the Music & Sound settings, "Music Frequency", that allows players to change how frequently music plays while in a game world.
    • Settings are Default, Frequent and Constant.
    • Frequent halves the delay and Constant sets the delay to 5 seconds.
  • Added an option to the Music & Sound settings, "Show Music Toast", that enables a music toast to be shown whenever a song starts playing.
    • With this option enabled, the song that is currently playing will be seen at all times in the top left corner of the in-game pause menu.
    • Default setting is Off.

General

Attributes

  • flying_speed
    • Ghasts now have a flying_speed attribute that affects their flying speed.

Credits

  • The credits have been updated.

Data component format

  • equippable
    • Added new optional field: can_be_sheared (boolean).
      • If true, players can use Shears to remove this equippable item from a target mob by right-clicking, provided all other shearing conditions are satisfied.
      • If not specified, it defaults to false.
    • Added new optional field: shearing_sound (sound event).
      • It's a sound event that plays when the equippable item is sheared.
      • If not specified, it defaults to the item.shears.snip sound event.

Data pack

  • The pack format version is now 77.
  • "Command Syntax" report now contains information about required permission level.
  • Users will now be prompted for confirmation before executing a command from the run_command click action in books and chat if the command can't be parsed or requires elevated permissions (i.e. higher than 0).

Panorama

  • Updated the panorama to show a scene with happy ghasts flying next to a mountain side.

Pause menu

  • A data pack can request some of the available dialogs to be accessible from Pause screen
  • This feature replaces "Server Links" button and is placed on Pause screen according to the same rules
  • Buttons leading to dialogs exposed in this way will use label described in external_title field
  • This feature is configured by minecraft:pause_screen_additions dialog tag:
    • If this tag is not specified or is empty but the server has sent server_links packet, tag will be handled as if it contained minecraft:server_links dialog
      • Note: this matches previous Server Links feature behavior
      • If this dialog is removed, the tag remains empty
    • If this tag is still empty, button is not visible ("Send Feedback" and "Report Bugs" buttons are visible instead)
    • If this tag has a single element, Pause screen button will lead directly to this dialog
    • If this tag has multiple elements, Pause screen button will lead to minecraft:custom_options which (by default) lets user select one of the tag elements
      • If this dialog is removed, button is not visible

Realms

  • Added the Realms logo to the Realms loading screens.
  • Added region information when connecting to a Realm.

Resource pack

  • The version is now 61.

Splash

  • Removed "Minors welcome!"
  • Changed "Pumpa kungen!" to "Pumpakungen!"
  • Changed "10 years of Mining and Crafting!" to "15 years of Mining and Crafting!"
  • 5 splashes are added:
    • "Music by Aaron Cherof!"
    • "Music by Kumi Tanioka!"
    • "Music by Amos Roddy!"
    • "Flint and Steel!"
    • "Chicken Jockey!"

Text component format

  • Click Events
    • New click action minecraft:custom has been added.
      • When user clicks a component with this click action, client will send a dedicated packet minecraft:custom_click_action to a server.
      • The intended use is as an alternative for run_command to be used by modded servers without worrying about having to add custom commands.
      • This packet has no functionality on vanilla servers.
      • Fields:
        • id - namespaced ID.
        • payload - optional string field.
  • Dialog Click Event
    • New action show_dialog has been added.
      • When user clicks this component, a dialog will be opened for them.
      • Fields:
        • dialog - a namespaced ID from minecraft:dialog registry or inline dialog value as described above.

UI sprites

  • Added icon/music_notes and toast/now_playing sprites.

Fixes

  • The fix to MC-3697 has been partially reverted. Decorative hanging entities such as paintings and item frames are now immune to explosions from submerged TNT while items and armor stands are once again vulnerable to them.

16 issues fixed

From released versions before 1.21

  • MC-97423 – Horse temporarily stuck in jump animation if dismounted.
  • MC-103511 – Sound/Song stops playing after adjusting the volume.
  • MC-118081 – Sounds don't pause when game is paused on some UI screens.
  • MC-224704 – Block cracks are not affected by the fog from powder snow or lava.
  • MC-248682 – Translucent blocks moved by pistons aren't affected by fog correctly.
  • MC-248688 – Falling translucent blocks aren't affected by fog correctly.
  • MC-269744 – Out of memory crash when using a preset with a large layer.

From 1.21.1

  • MC-276665 – Music is never turning on when it's toggled in the menu.

From 1.21.3

  • MC-277991 – The 2 brightest pixel colors on pale oak boat items are still switched.

From 1.21.5

  • MC-296311 – TNT touching water will destroy blocks and damage entities but will ignore decorative entities.
  • MC-297524 – Connection with realm gives weird HTML text.

From the 1.21.6 development versions

  • MC-296836 – Happy ghast saddle model doesn't change when lead is broken by exceeding max range.
  • MC-296843 – Clouds are rendered incorrectly on some Mac systems.

From the previous development version

  • MC-297535 – The enchantment glint doesn't render in first person or the inventory.
  • MC-297544 – Rain screen overlay does not affect 1st person hand or items.
  • MC-297570 – Block breaking overlay not affected by environmental fog.

Videos

Videos made by Slicedlime:

References

Navigation