Java Edition 25w04a


| Edition | |||||||
|---|---|---|---|---|---|---|---|
| Release date |
January 22, 2025 | ||||||
| Type | |||||||
| Snapshot for | |||||||
| Downloads | |||||||
| Obfuscation maps | |||||||
| Protocol version |
dec: 1073742055 | ||||||
| Data version |
4308 | ||||||
| Resource pack format |
49 | ||||||
| Data pack format |
64 | ||||||
| Minimum Java version | |||||||
| |||||||
{
"title": "Minecraft 25w04a",
"images": [
"25w04a.jpg",
"Java Edition 25w04a.png"
],
"rows": [
{
"field": "''(link to Java Edition article, displayed as Java Edition)''",
"label": "(link to Edition article, displayed as Edition)"
},
{
"field": "January 22, 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.5 article, displayed as 1.21.5)",
"label": "Snapshot for"
},
{
"field": "[https://piston-data.mojang.com/v1/objects/6102118fc64fba5ac798225e1c3618c005e01a51/client.jar Client] ([https://piston-meta.mojang.com/v1/packages/f8cca683be215f9eb1742fb563dd04ca1285508c/25w04a.json .json])<br />[https://piston-data.mojang.com/v1/objects/28a9d30423b1c50da661b95e754be9d5f0c871d4/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/e39dc5a7ec18957a257fc41a7d49423a1ac7c5c1/client.txt Client]<br />[https://piston-data.mojang.com/v1/objects/663d1da3dff475eb79543d40ad2f18e4cb2c7708/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>1073742055<br /> <span style=\"font-size:smaller\"><abbr title=\"hexadecimal\">hex</abbr>: </span>400000E7",
"label": "(link to Protocol version article, displayed as Protocol version)"
},
{
"field": "4308",
"label": "(link to Data version article, displayed as Data version)"
},
{
"field": "49",
"label": "<span style=\"white-space: normal;\">(link to Pack format#List of resource pack formats article, displayed as Resource pack format)</span>"
},
{
"field": "64",
"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_.28LTS.29 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.4|<span style=\"margin-right:-0.35em\">◄</span>◄ 1.21.4]]</td>\n<td style=\"padding: 0.4em\">'''[[Java Edition 1.21.5|1.21.5]]'''</td>\n<td style=\"padding: 0.4em\" >[[Java Edition 1.21.6| 1.21.6 <span style=\"margin-right:-0.35em\">►</span>►]]</td>\n</tr>\n<tr style=\"background: inherit;\">\n<td style=\"padding: 0.4em\">\n[[Java Edition 25w03a|◄ 25w03a]]\n</td>\n<td style=\"padding: 0.4em\">''' 25w04a'''</td>\n<td style=\"padding: 0.4em\">\n[[Java Edition 25w05a| 25w05a ►]]\n</td>\n</tr>\n</table>"
}
25w04a is the third snapshot for Java Edition 1.21.5, released on January 22, 2025,[1] which adds new data components and fixes bugs.
Additions
General
blocks_attackscomponent- When present, this item can be used like a Shield to block attacks to the holding player.
- Format: object with fields
block_delay_seconds- Non-negative float (default:
0). - The number of seconds that right-click must be held before successfully blocking attacks.
- Non-negative float (default:
disable_cooldown_scale- Non-negative float (default:
1). - Multiplier applied to the number of seconds that the item will be on cooldown for when attacked by a disabling attack (
disable_blocking_for_secondson theweaponcomponent). - If
0, this item can never be disabled by attacks.
- Non-negative float (default:
damage_reductions- List of object with fields (optional)
- Controls how much damage should be blocked in a given attack.
- If not specified, all damage is blocked.
- Each entry in the list contributes an amount of damage to be blocked, optionally filtered by damage type.
- Each entry adds to blocked damage, determined by
clamp(base + factor * dealt_damage, 0, dealt_damage). - The final damage applied in the attack to the entity is determined by
dealt_damage - clamp(blocked_damage, 0, dealt_damage) - Entry format:
type- damage type id, list of damage type ids, or hash-prefixed damage type tag (optional).- This entry will only contribute to the blocked damage if the dealt damage type matches this field.
- If not specified, any damage type will be accepted.
base- float- Constant amount of damage to be blocked.
factor- float- Fraction of the dealt damage that should be blocked.
item_damage- Object with fields (optional)
- Controls how much damage should be applied to the item from a given attack.
- If not specified, a point of durability is removed for every point of damage dealt.
- The final damage applied to the item is determined by: .
- The final value may be negative, causing the item to be repaired.
- Format:
threshold- non-negative float- The minimum amount of damage dealt by the attack before item damage is applied to the item.
base- float- Constant amount of damage applied to the item, if threshold is passed.
factor- float- Fraction of the dealt damage that should be applied to the item, if threshold is passed.
block_sound- Sound event (optional).
- If specified, this sound will be played when an attack is successfully blocked.
disable_sound- Sound event (optional).
- If specified, this sound will be played when the item goes on its disabled cooldown due to an attack.
break_soundcomponent- When present, this sound will be played when the item runs out of durability and breaks.
- If not present, no sound will be played on break.
- This component is present by default on every item type.
- Format: sound event
- e.g.
break_sound='item.wolf_armor.break'
- e.g.
provides_banner_patternscomponent- When present, this item can be placed in the pattern slot of a Loom.
- Format: hash-prefixed banner pattern tag.
- e.g.
provides_banner_patterns='#minecraft:pattern_item/globe'
- e.g.
provides_trim_materialcomponent- When present, this item will provide the specified trim material when used in a trimming recipe.
- Note that to be used in the built-in smithing recipes, the item must also be in the
#trim_materialtag. - As such, the trim material registry definition no longer specifies an item.
- Note that to be used in the built-in smithing recipes, the item must also be in the
- Format: trim material id
- e.g.
provides_trim_material='minecraft:iron'
- e.g.
- When present, this item will provide the specified trim material when used in a trimming recipe.
tooltip_displaycomponent- This component allows the tooltips provided specifically by any given item component to be surpressed.
- This replaces the previous
show_in_tooltipfields,hide_additional_tooltipandhide_tooltipcomponents. - Format: object with fields:
hide_tooltip- boolean (default:false).- If true, the item will have no tooltip when hovered.
hidden_components- list of item component ids (default:[]).- The tooltips provided by any component in this list will be hidden.
- If that component provides no tooltip, it will have no effect.
- Added support for Kyrgyz language.
- Added the
#can_wear_horse_armorentity tag.- Contains entity that can hold horse armor in their body slot.
Changes
Items
- Will now show all charged projectiles in their tooltip instead of just the first
Command format
- SNBT (textual representation of NBT-like data) has been expanded to accept heterogenous lists, i.e. ones where elements are not of the same type.
- NBT format is not changed
General
- The field
backgroundno longer containstextures/prefix and.pngsuffix.
minecraft:paletted_permutationssprite source- New field:
separator- Optional string (default:
_). - Value to be used when joining texture and permutation names to produce sprite name.
- Optional string (default:
- New field:
hide_additional_tooltipcomponent- Has been removed and replaced by use of the
tooltip_displaycomponent andhidden_componentsfield.- The following components previously covered by the
hide_additional_tooltipcomponent may need to be hidden:minecraft:banner_patternsminecraft:beesminecraft:block_entity_data- Specifically, Mob Spawner and Trial Spawner block entity data will display the configured mob.
minecraft:block_state- Specifically, the
honey_levelproperty will be displayed in the tooltip for any item with this specified.
- Specifically, the
minecraft:bundle_contentsminecraft:charged_projectilesminecraft:containerminecraft:container_lootminecraft:firework_explosionminecraft:fireworksminecraft:instrumentminecraft:map_idminecraft:painting/variantminecraft:pot_decorationsminecraft:potion_contentsminecraft:tropical_fish/patternminecraft:written_book_content
- This additionally means that tooltips from the above listed components are no longer restricted to specific item types.
- Note: for existing items in a world with the
hide_additional_tooltipcomponent, any of the above listed components also present on the same item will be added to the list to hide intooltip_display.
- Note: for existing items in a world with the
- The following components previously covered by the
- Has been removed and replaced by use of the
hide_tooltipcomponent- Has been removed and replaced by use of the
tooltip_displaycomponent andhide_tooltipfield.
- Has been removed and replaced by use of the
attribute_modifierscomponent- Removed the
show_in_tooltipfield, replaced bytooltip_displaycomponent. - This component now always uses its simplified form, with the modifiers field inlined to top-level.
- e.g.
attribute_modifiers={modifiers:[...]}]->attributes_modifiers=[...]
- e.g.
- Removed the
dyed_colorcomponent- Removed the
show_in_tooltipfield, replaced bytooltip_displaycomponent. - This component now always uses its simplified form, with the rgb field inlined to top-level.
- e.g.
dyed_color={rgb:12345}]->dyed_color=12345]
- e.g.
- The specified color now supports the RGB array format.
- e.g.
dyed_color=[0.5, 1.0, 0.2]
- e.g.
- Removed the
can_place_onandcan_breakcomponents- Removed the
show_in_tooltipfield, replaced bytooltip_displaycomponent. - The predicates field has been inlined to top-level, and supports either a single element or list.
- e.g.
can_place_on={predicates:[{blocks:'stone'},{blocks:'dirt'}]}]->can_place_on=[{blocks:'stone'},{blocks:'dirt'}]] - or:
can_place_on={predicates:[{blocks:'stone'}]}]->can_place_on={blocks:'stone'}]
- e.g.
- Removed the
enchantmentsandstored_enchantmentscomponents- Removed the
show_in_tooltipfield, replaced bytooltip_displaycomponent. - These components now always use their simplified form, with the levels field inlined to top-level.
- e.g.
enchantments={levels:{sharpness:2}}]->enchantments={sharpness:2}]
- e.g.
- Removed the
jukebox_playablecomponent- Removed the
show_in_tooltipfield, replaced bytooltip_displaycomponent.
- Removed the
trimcomponent- Removed the
show_in_tooltipfield, replaced bytooltip_displaycomponent.
- Removed the
unbreakablecomponent- Removed the
show_in_tooltipfield, replaced bytooltip_displaycomponent.
- Removed the
weaponcomponentcan_disable_blockingfield was replaced withdisable_blocking_for_seconds.disable_blocking_for_seconds- Non-negative float (default:
0) - If non-zero, will disable a blocking Shield on successful attack for the specified amount of seconds.
- Non-negative float (default:
- Some existing components are now also transferred from spawning item to spawned entity:
minecraft:custom_name- any entity.minecraft:potion_contents- Lingering Potion to Area Effect Cloud.minecraft:potion_duration_scale- Lingering Potion to Area Effect Cloud.
- The pack format version is now
64. - Trim pattern and trim material items are no longer specified in the trim registries, but instead in the recipes and items respectively.
- The
potionentity type has been split intosplash_potionandlingering_potion - Filled Maps without any
map_idcomponent no longer show an 'Unknown Map' tooltip (invalid IDs will still produce this tooltip)
Entity variant components
- Cat and Frog variants are now data-driven.
- Added uniform way to define variant selection rules.
- Select Property
minecraft:component- If the selected value comes from a registry and the current datapacks does not provide it, the entry will be silently ignored.
- In previous snapshot, unrecognized elements caused the whole item model to be ignored.
- If the selected value comes from a registry and the current datapacks does not provide it, the entry will be silently ignored.
- Boolean Property
minecraft:component- New conditional model property has been added to condition item model:
component - Uses component predicates (like ones used in item predicates) to match item components.
- However, instead of encoding them as a map of
<predicate type>:<predicate value>, a single predicate is encoded in two fields.
- However, instead of encoding them as a map of
- Fields:
predicate- type of component predicate (member ofminecraft:data_component_predicate_typeregistry)value- predicate-specific value
- New conditional model property has been added to condition item model:
Loot Functions
toggle_tooltips- Now supports any component id in the toggles map.
- Any component specified will be toggled in the
tooltip_displaycomponent.
- The particle type
tinted_leavesnow has a parameter:color- Tint color, specified either as packed int or list of 4 floats.
smithing_transformrecipe type- The
baseingredient field is no longer optional- Previously, if no base ingredient was given, the recipe would parse but never be usable.
- The
smithing_trimrecipe type- The
base,template, andadditioningredient fields are no longer optional.- Previously, if these ingredients were not given, the recipe would parse but never be usable.
- Added new
patternfield, controlling which trim pattern will be applied in the recipe.- As such, the trim pattern registry definition no longer specifies the item.
- Format: trim pattern id
- e.g.
"pattern": "minecraft:bolt"
- e.g.
- The
- The pack format version is now
49.
Reversion of bug fixes
After consideration, we have decided to revert both fixed bugs. While we do want to revisit these mechanics in the future, it's clear that these recent fixes alone didn't quite hit the mark and caused too many negative side-effects for parkour, speedbridging, and movement in general.
The reverted bug fixes include:
- MC-152728 — The player continues sprinting when performing actions that slow them down
- MC-271065 — Diagonal movement is not normalized when crouching or using certain items
- Renamed
#bypasses_shielddamage type tag to#bypasses_blocking. - Removed
#default_spawnsand#full_moon_spawnscat variant tags. - Added
test_block, andtest_instance_blockto the#dragon_immune, and#wither_immuneblock tags.
Uniform variant selection
- Variants that have spawn rules now use uniform approach for selecting.
- Selection process:
- Every variant field
spawn_conditionsthat contain a list of entries. - Every entry has a condition and an integer priority.
- Conditions for all variants for given entity type are evaluated for position where entity is being spawned.
- Entries with priority lower than maximum priority of remaining entries are removed.
- The game randomly picks one entry out of remaining ones.
- If no conditions are remaining, variant remains unchanged from default.
- Every variant field
- Entry format:
priority- integercondition- optional structure- Fields:
type- Additional fields dependent on
type.
- If field is not present, condition is always true.
- Fields:
- Selection process:
- Spawn conditions
minecraft:biome- Checks if entity is spawning in specific biomes.
- Fields:
biomes- single entry, list or a tag describing biomes.
minecraft:moon_brightness- Checks if current moon brightness is within certain range.
- Fields:
range- floating point range (a single number or an object like {"min": 1, "max": 2}).
minecraft:structure- Checks if entity is spawning in specific structures.
- Fields:
structures- single entry, list or a tag describing structures.
- Wolf Variants
- The fields
angry_texture,tame_textureandwild_texturehave been grouped in fieldassetsand renamed toangry,tameandwild. - Added the field
spawn_conditions.
- The fields
- Pig Variants
textureandbiomefields are replaced withasset_idandspawn_conditionsrespectively.- Fields in file:
asset_id- namespaced id for this variant asset, resolves toassets/<namespace>/textures/<path>.png.spawn_conditions- field described in uniform variant selection above
- Cat variants
- Cat variants can be data-driven by adding entries to
data/<namespace>/cat_variant/<id>.json. - This feature is experimental.
- Fields in file:
asset_id- namespaced id for this variant asset, resolves toassets/<namespace>/textures/<path>.png.spawn_conditions- field described in uniform variant selection above
- Cat variants can be data-driven by adding entries to
- Frog variants
- Frog variants can be data-driven by adding entries to
data/<namespace>/frog_variant/<id>.json. - This feature is experimental.
- Fields in file:
asset_id- namespaced id for this variant asset, resolves toassets/<namespace>/textures/<path>.png.spawn_conditions- field described in uniform variant selection above
- Frog variants can be data-driven by adding entries to
Fixes
From released versions before 1.21
- MC-98271 – The sound of blocking with a shield is only hearable by other players (not the person blocking).
- MC-101556 – Nether Portal teleport range is too large (equivalent to a full block).
- MC-165421 – Bubble columns have the opposite effect on wind charges.
- MC-165461 – Crossbow loading animation stops after loading, even when still holding down right click.
- MC-176233 – Crossbows no longer have a transition after loading.
- MC-200311 – Advancement background texture referencing is inconsistent with models.
- MC-255756 – When the shield is broken between players, the attacking side has no shield breaking sound.
- MC-279646 – Toggling fullscreen with F11 does not visually update the fullscreen option in the video settings menu.
From 1.21.1
- MC-276061 – Decorated pot sherds don't visually update until relog when replacing with blank pot.
From 1.21.3
- MC-278400 – Arrows and tridents move after hitting a block in flowing lava.
From 1.21.4
- MC-279653 – Block Entity Data desynchronizes after subsequent setblock commands.
From the 1.21.5 development versions
- MC-279217 – Arrows and tridents constantly spin after hitting a block in flowing lava.
- MC-279218 – The
minecraft:enchant.thorns.hitsound does not play when mobs or players are killed by the Thorns enchantment. - MC-279225 – Players jitter and land slightly too high up when landing on powder snow while wearing leather boots.
- MC-279232 – SNBT text components prevent mixing text styles in lists.
- MC-279389 – The
minecraft:entity.arrow.hit_playersound is played when player is hit by an arrow shot by himself. - MC-279454 –
hide_additional_tooltipno longer hides author and generation on written books.
From the previous development version
- MC-279480 – The "
test_instance_block.reset_success" string incorrectly spells the word "succeeded" as "succeded". - MC-279481 – Leaf litter no longer generates in forests or wooded badlands.
- MC-279482 – Elements within the test block and test instance block menus are not selected in order when using the TAB key.
- MC-279483 – Test blocks set to start mode show the "Message:" text despite no text field being present.
- MC-279485 – Test block and test instance block menus have blurred backgrounds.
- MC-279486 – Some strings displayed within the test instance block interface are untranslatable.
- MC-279487 – The "Test Instance ID" and "Test Structure Size" text within the test instance block interface are positioned too far to the right.
- MC-279488 – Leaf litter generates very sparsely in Dark Forests.
- MC-279489 – An unexpected error occurs when attempting to create tests with large sizes.
- MC-279490 – No command feedback messages are displayed when attempting to reset tests that don't exist.
- MC-279491 – The "
commands.test.no_tests" raw translation key is displayed when using "/test run..." commands in situations where no tests exist. - MC-279492 – An unexpected error occurs when attempting to locate tests that don't exist.
- MC-279493 – No command feedback messages are displayed when using the "
/test create" command. - MC-279498 – Test blocks and test instance blocks aren't part of the "
#minecraft:dragon_immune" or "#minecraft:wither_immune" tags. - MC-279502 – Axolotl variants are no longer saved when bucketing.
- MC-279504 – "
minecraft:enchantments" component does not work on the select property of Item Models. - MC-279505 – Horse-esque mobs that disallow horse armor still show an non-interactive slot.
- MC-279511 – Using "
minecraft:always_pass" while the player is inside the test zone breaks the world. - MC-279518 – Test environment accepts
minecraft:raininginstead ofminecraft:weather. - MC-279519 – Some words within some test command strings are always pluralized.
- MC-279522 – GameTest entrypoint doesn't load zip datapacks.
- MC-279527 – GameTest entrypoint doesn't load custom tests from datapacks.
- MC-279538 – The key name of the test instances field that represents the namespaced ID of the test environment is different from the changelog.
- MC-279539 – Villager variant is not applied to spawned zombie villagers.
- MC-279553 – Players using items no longer turn their body in the moving direction while moving diagonally.
- MC-279570 – Some piston operations don't send neighbor updates.
- MC-279573 – The "
test_instance_block.error.no_test" string is missing the word "no". - MC-279588 – Test instance field typo '
sky_accesss'. - MC-279599 –
/test posis offset by one on the y and z axis. - MC-279601 – "
test.error.expected_entity_at_pos" translation is missing.
Video
References
- ↑ "Minecraft Snapshot 25w04a" – Minecraft.net, January 22, 2025.