Java Edition 25w20a
Minecraft 25w20a


| Edition | |||||||
|---|---|---|---|---|---|---|---|
| Release date |
May 13, 2025 | ||||||
| Type | |||||||
| Snapshot for | |||||||
| Downloads | |||||||
| Obfuscation maps | |||||||
| Protocol version |
dec: 1073742074 | ||||||
| Data version |
4428 | ||||||
| Resource pack format |
61 | ||||||
| Data pack format |
77 | ||||||
| Minimum Java version | |||||||
| |||||||
{
"title": "Minecraft 25w20a",
"images": [
"25w20a.jpg",
"Java Edition 25w20a.png"
],
"rows": [
{
"field": "''(link to Java Edition article, displayed as Java Edition)''",
"label": "(link to Edition article, displayed as Edition)"
},
{
"field": "May 13, 2025",
"label": "Release date"
},
{
"field": "(link to Snapshot article, displayed as Snapshot)",
"label": "(link to Version types article, displayed as Type)"
},
{
"field": "(link to Java Edition 1.21.6 article, displayed as 1.21.6)",
"label": "Snapshot for"
},
{
"field": "[https://piston-data.mojang.com/v1/objects/a6e694c5c5468b2aa7fbd86b20496428d9248dd8/client.jar Client] ([https://piston-meta.mojang.com/v1/packages/2ac958bedcf677c9e975200e8a020cbf54627717/25w20a.json .json])<br />[https://piston-data.mojang.com/v1/objects/4b7a074f7813de85698c185100736fae64f9b4fa/server.jar Server]",
"label": "(link to Tutorial:Installing a snapshot#Manual version installation article, displayed as Downloads)"
},
{
"field": "[https://piston-data.mojang.com/v1/objects/2614f23565992de85a5cd4cf3032e7fd3329afc9/client.txt Client]<br />[https://piston-data.mojang.com/v1/objects/c0eea925ff78036b5d63cc64ffe35d566dbf5e92/server.txt Server]",
"label": "(link to Obfuscation map article, displayed as Obfuscation maps)"
},
{
"field": " <span style=\"font-size:smaller\"><abbr title=\"decimal\">dec</abbr>: </span>1073742074<br /> <span style=\"font-size:smaller\"><abbr title=\"hexadecimal\">hex</abbr>: </span>400000FA",
"label": "(link to Protocol version article, displayed as Protocol version)"
},
{
"field": "4428",
"label": "(link to Data version article, displayed as Data version)"
},
{
"field": "61",
"label": "<span style=\"white-space: normal;\">(link to Pack format#List of resource pack formats article, displayed as Resource pack format)</span>"
},
{
"field": "77",
"label": "<span style=\"white-space: normal;\">(link to Pack format#List of data pack formats article, displayed as Data pack format)</span>"
},
{
"field": "<span class=\"plainlinks\">[https://en.wikipedia.org/wiki/Java_version_history#Java_SE_21 Java SE 21]</span>",
"label": "<span style=\"white-space: normal;\">Minimum Java version</span>"
}
],
"invimages": [],
"footer": "<table style=\"margin: auto; word-break: break-word;\">\n<tr style=\"background: inherit;\">\n<td style=\"padding: 0.4em\" >[[Java Edition 1.21.5|<span style=\"margin-right:-0.35em\">◄</span>◄ 1.21.5]]</td>\n<td style=\"padding: 0.4em\">'''[[Java Edition 1.21.6|1.21.6]]'''</td>\n<td style=\"padding: 0.4em\" >[[Java Edition 1.21.7| 1.21.7 <span style=\"margin-right:-0.35em\">►</span>►]]</td>\n</tr>\n<tr style=\"background: inherit;\">\n<td style=\"padding: 0.4em\">\n[[Java Edition 25w19a|◄ 25w19a]]\n</td>\n<td style=\"padding: 0.4em\">''' 25w20a'''</td>\n<td style=\"padding: 0.4em\">\n[[Java Edition 25w21a| 25w21a ►]]\n</td>\n</tr>\n</table>"
}
25w20a is the sixth snapshot for Java Edition 1.21.6, released on May 13, 2025.[1]
Additions
Items
Added the "Tears" music disc by Amos Roddy.
- Obtained by killing a ghast with a fireball deflected by a player.
- Has a comparator output of 10 when played in a jukebox.
Command format
- 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 fromminecraft:dialogregistry 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
- Added 5 new background music tracks by Amos Roddy to cherry groves, forest, desert, grove, and lush caves biomes:
- "Below and Above"
- "Broken Clocks"
- "Fireflies"
- "Lilypad"
- "O's Piano"
- The same songs have been added to the menu screen music rotation.
General
- Added a way to display simple modal dialogs to a user.
- Dialogs are stored in a
minecraft:dialogregistry, 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
playandconfigurationconnection phases.- However, only inline registries are allowed in
configuration, since registries are not yet available in that phase.
- However, only inline registries are allowed in
- 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.
- Dialogs are stored in
minecraft:dialogregistry that can be provided by a datapack- Fields:
type- one of dialog types from minecraft:dialog_type registry<type-specific>- see below.
- Fields:
- 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.
- Screen title, text component.
external_title- Name to be used for a button leading to this dialog (for example from pause screen), optional text component.
- If not present,
titlewill be used instead.
- If not present,
- Name to be used for a button leading to this dialog (for example from pause screen), optional text component.
body- Optional list of body elements or a single element.
can_close_with_escape- Can dialog be dismissed with Escape key, default
true.
- Can dialog be dismissed with Escape key, default
- 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 default150.
- Most actions in dialog types share following fields that describe appearance of a button associated with that action:
- 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 asclick_eventon text components).- If not present, clicking button will simply close screen without any action.
- Fields:
- Common object used in dialogs to represent clickable action on a dialog.
- 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 withgui.oklabel and no action or tooltip.
minecraft:confirmation- A simple screen with two actions in footer.
- Exit action: same as
noaction. - 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.cancelif dialog has defined exit action andgui.backif it has no side effects.
- Label will be
- Exit action: defined in
on_cancelfield. - Fields:
- Common dialog fields
actions- non-empty list of click actions.on_cancel- optional click event (same format asclick_eventon 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_linkspacket, arranged in columns. - Screen also has button in footer that runs exit action and closes the screen.
- Label will be
gui.cancelif dialog has defined exit action andgui.backif it has no side effects.
- Label will be
- Note: this is a replacement for previous "Server Links" screen, but now with an additional body.
- Exit action: defined in
on_cancelfield. - Fields:
- Common dialog fields.
on_cancel- optional click event (same format asclick_eventon text components).columns- positive integer describing number of columns, default:2.button_width- width of buttons in the list, positive integer with default150.
- A scrollable list of links received from server in
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_titlefields of targeted dialogs.
- Titles of those buttons will be taken from
- Screen also has button in footer that runs exit action and closes the screen.
- Label will be
gui.cancelif dialog has defined exit action andgui.backif it has no side effects.
- Label will be
- Exit action: defined in
on_cancelfield. - Fields:
- Common dialog fields.
dialogs- dialog, a list of dialogs or a dialog tag.on_cancel- optional click event (same format asclick_eventon text components).columns- positive integer describing number of columns, default:2.button_width- width of buttons in the list, positive integer with default150.
- A scrollable list of buttons leading directly to other dialogs, arranged in columns.
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 fromminecraft:dialog_body_typeregistry.<type-specific>- see below.
minecraft:plain_message- A multiline label.
- Fields:
contents- text component.width- maximum width of message, positive integer with default200.
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
widthandheightare 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 default200.- Can also be just be text component.
show_decorations- iftrue, count and damage bar will be rendered over the item, default:true.show_tooltip- iftrue, 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.
- Item with optional description.
- 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 fromminecraft:input_control_typeregistry.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
idset 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 oflabelfield, 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
1means that slider will have two positions (start and end).
- Note: value of
initial- initial value of slider, rounded down nearest step, must be within range, defaults tomin.
- 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.
idfield of a submit action will be included as an input with keyaction.- 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 fromminecraft:submit_method_typeregistry.<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_commandclick 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 parameterwill be expanded toidfield 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.
- For example, if macro is
- Fields:
template- a string with a macro template to be interpreted as a command.
- This method will build a command using a provided macro template and request the server to run it (same as
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:customclick 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.
- This method will build a custom server click action using a provided macro template and send it to the server (same as
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:customclick 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+0009andU+000Aare present in any key or value, they will be escaped to\tand\n.
- keys are separated from values with horizontal tabulation (
- Fields:
id- namespaced ID.
- This method will build a custom server click action from all values and request the server to run it (same as
- 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_additionstag (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.
- Shows contents of
- Added the
#pause_screen_additionsdialog tag.- Dialogs in this tag replaces the "Report Bugs" button or the "Server Links" button on the pause screen.
Changes
Blocks
- No longer breaks if water flows into it.
Items
- Can now be found in monster room, ancient city, desert temple, jungle temple and stronghold altar chests in quantities 1-5.
- 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 |
- No longer found in chests in monster rooms, ancient cities, desert temples, jungle temples and in stronghold altar chests.
- 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
- Now drop a ”Tears” music disc when killed by a player-deflected fireball.
Gameplay
- 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 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
flying_speed- Ghasts now have a
flying_speedattribute that affects their flying speed.
- Ghasts now have a
- The credits have been updated.
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.snipsound event.
- Added new optional field:
- 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_commandclick action in books and chat if the command can't be parsed or requires elevated permissions (i.e. higher than 0).
- Updated the panorama to show a scene with happy ghasts flying next to a mountain side.
- 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_titlefield - This feature is configured by
minecraft:pause_screen_additionsdialog tag:- If this tag is not specified or is empty but the server has sent
server_linkspacket, tag will be handled as if it containedminecraft:server_linksdialog- 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_optionswhich (by default) lets user select one of the tag elements- If this dialog is removed, button is not visible
- If this tag is not specified or is empty but the server has sent
- Added the Realms logo to the Realms loading screens.
- Added region information when connecting to a Realm.
- The version is now
61.
- 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!"
- Click Events
- New click action
minecraft:customhas been added.- When user clicks a component with this click action, client will send a dedicated packet
minecraft:custom_click_actionto 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.
- When user clicks a component with this click action, client will send a dedicated packet
- New click action
- Dialog Click Event
- New action
show_dialoghas been added.- When user clicks this component, a dialog will be opened for them.
- Fields:
dialog- a namespaced ID fromminecraft:dialogregistry or inline dialog value as described above.
- New action
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.
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
- ↑ "Minecraft Snapshot 25w20a" – Minecraft.net, May 13, 2025.