It's time for another snapshot! To kick things off, we are reverting the fixes for MC-271065 and MC-152728.
This week's snapshot also comes with a whole slew of datapack updates, including new components and item model capabilities. If you like to play around with datapacks, you will definitely find something fun in this update!
As always, we're keen to get your feedback on these new features at feedback.minecraft.net and you can report any bugs at bugs.mojang.com! Here's what's new this week:
New Features
- Added language support for Kyrgyz
Changes
- Reverted fixes:
- MC-271065 - Diagonal movement is not normalized when crouching or using certain items
- MC-152728 - The player continues sprinting when performing actions that slow them down
Developer's Note: 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
- Crossbows will now show all charged projectiles in their tooltip instead of just the first
- All charged projectiles will also add their entire tooltip as a subsection, instead of only Fireworks
- All container items with stored contents, such as a Chest picked with Ctrl+Pick Block, will now list the first 4 items in their tooltip just like Shulker Boxes
Technical Changes
- The Data Pack version is now 64
- The Resource Pack version is now 49
Data Pack Versions 64
- The
potion
entity type has been split intosplash_potion
andlingering_potion
- Filled Maps without any
map_id
component no longer show an 'Unknown Map' tooltip (invalid IDs will still produce this tooltip) - Trim pattern and trim material items are no longer specified in the trim registries, but instead in the recipes and items respectively
- Field
background
in advancement definition no longer containstextures/
prefix and.png
suffix - Changes to entity variant definitions
- Cat and Frog variants are now data-driven
- Added uniform way to define variant selection rules
Commands
- SNBT literals now accept heterogenous lists
SNBT changes
- 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
- If SNBT command argument transforms value to NBT (like arguments of
/data
or/summon
), lists might be transformed to bypass NBT constraints - Example transform:
['a', {'b':3}]
is stored as[{'':'a'},{'b':3}]
- This transform is not reversed by
/data
- If SNBT command argument transforms value to NBT (like arguments of
Developer's Note: Internally, in new code we read and write data in both JSON and NBT formats. This change makes sure that we don't have to worry about NBT limitations when it comes to lists. We have chosen to not expand NBT itself to avoid breaking existing external tools.
Tags
Entity Tags
- Added
#can_wear_horse_armor
- entity that can hold horse armor in their body slot
Damage Type Tags
- Renamed
#bypasses_shield
to#bypasses_blocking
Cat Variant Tags
- Removed
#default_spawns
and#full_moon_spawns
Uniform variant selection
- Variants that have spawn rules now use uniform approach for selecting
- Selection process:
- Every variant field
spawn_conditions
that 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
- 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
- see below for values- Additional fields dependent on
type
- If field is not present, condition is always true
- Fields:
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:structures
- Checks if entity is spawning in specific structures
- Fields:
structures
- single entry, list or a tag describing structures
Wolf Variants
- Fields
angry_texture
,tame_texture
andwild_texture
have been grouped in fieldassets
and renamed toangry
,tame
andwild
- Added field
spawn_conditions
described in uniform variant selection above
Pig Variants
texture
andbiome
fields are replaced withasset_id
andspawn_conditions
respectively.- 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
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
Item Components
New weapon
component
can_disable_blocking
field is 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
New blocks_attacks
component
- 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
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_seconds
on theweapon
component) - If 0, this item can never be disabled by attacks
- Multiplier applied to the number of seconds that the item will be on cooldown for when attacked by a disabling attack (
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:
floor(base + factor * dealt_damage)
- 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
- Constant amount of damage applied to the item, if
factor
- float- Fraction of the dealt damage that should be applied to the item, if
threshold
is passed
- Fraction of the dealt damage that should be applied to the item, if
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
New break_sound
component
- 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.
New provides_banner_patterns
component
- 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.
New provides_trim_material
component
- 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_material
tag - As such, the trim material registry definition no longer specifies an item
- Format: trim material id
- e.g.
provides_trim_material='minecraft:iron'
- e.g.
Entity components
- Some existing components are now also transferred from spawning item to spawned entity:
minecraft:custom_name
- any entityminecraft:potion_contents
- Lingering Potion to Area Effect Cloudminecraft:potion_duration_scale
- Lingering Potion to Area Effect Cloud
New tooltip_display
component
- This component allows the tooltips provided specifically by any given item component to be surpressed
- This replaces the previous
show_in_tooltip
fields,hide_additional_tooltip
andhide_tooltip
components - 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
Removed hide_additional_tooltip
Component
- Replaced by use of the
tooltip_display
component andhidden_components
field - The following components previously covered by the
hide_additional_tooltip
component may need to be hidden:minecraft:banner_patterns
minecraft:bees
minecraft:block_entity_data
- Specifically, Mob Spawner and Trial Spawner block entity data will display the configured mob
minecraft:block_state
- Specifically, the
honey_level
property will be displayed in the tooltip for any item with this specified
- Specifically, the
minecraft:bundle_contents
minecraft:charged_projectiles
minecraft:container
minecraft:container_loot
minecraft:firework_explosion
minecraft:fireworks
minecraft:instrument
minecraft:map_id
minecraft:painting/variant
minecraft:pot_decorations
minecraft:potion_contents
minecraft:tropical_fish/pattern
minecraft: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_tooltip
component, any of the above listed components also present on the same item will be added to the list to hide intooltip_display
Removed hide_tooltip
Component
- Replaced by use of the
tooltip_display
component andhide_tooltip
field
attribute_modifiers
Component
- Removed
show_in_tooltip
field, replaced bytooltip_display
component - 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.
dyed_color
Component
- Removed
show_in_tooltip
field, replaced bytooltip_display
component - 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.
can_place_on
and can_break
Components
- Removed
show_in_tooltip
field, replaced bytooltip_display
component - 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.
enchantments
and stored_enchantments
Components
- Removed
show_in_tooltip
field, replaced bytooltip_display
component - 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.
jukebox_playable
Component
- Removed
show_in_tooltip
field, replaced bytooltip_display
component
trim
Component
- Removed
show_in_tooltip
field, replaced bytooltip_display
component
unbreakable
Component
- Removed
show_in_tooltip
field, replaced bytooltip_display
component
Particles
- The particle type
tinted_leaves
now has a parameter:color
: Tint color, specified either as packed int or list of 4 floats
Recipes
smithing_transform
Recipe Type
- The
base
ingredient field is no longer optional- Previously, if no base ingredient was given, the recipe would parse but never be useable
smihing_trim
Recipe Type
- The
base
,template
, andaddition
ingredient fields are no longer optional- Previously, if these ingredients were not given, the recipe would parse but never be useable
- Added new
pattern
field, 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"
Trim Patterns and Trim Materials
- The registry definitions for trim patterns and trim materials no longer include an
item
field - Instead, this mapping in patterns and materials is defined by the recipe and item components respectively
Loot Functions
toggle_tooltips
- Now supports any component id in the
toggles
map - Any component specified will be toggled in the
tooltip_display
component
Resource Pack Version 49
Item Models
minecraft:component
Select Property
- 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
minecraft:component
Boolean Property
- 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_type
registry)value
- predicate-specific value
Atlas
minecraft:paletted_permutations
sprite source
- New field:
separator
- optional string (default:_
) - value to be used when joining texture and permutation names to produce sprite name
Fixed bugs in 25w04a
- MC-98271 The sound of blocking with a shield is only hearable by other players (not the person blocking)
- 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-255756 When the shield is broken between players, the attacking side has no shield breaking sound
- MC-276061 Decorated pot sherds don't visually update until relog when replacing with blank pot
- MC-278400 Arrows and tridents move after hitting a block in flowing lava
- MC-279217 Arrows and tridents constantly spin after hitting a block in flowing lava
- MC-279218 The minecraft:enchant.thorns.hit sound 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_player sound is played when player is hit by an arrow shot by himself
- MC-279454 hide_additional_tooltip no longer hides author and generation on written books
- 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:raining instead of minecraft: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 pos is offset by one on the y and z axis
- MC-279601 "test.error.expected_entity_at_pos" translation is missing
- MC-279646 Toggling fullscreen with F11 does not visually update the fullscreen option in the video settings menu
- MC-279653 Block Entity Data desynchronizes after subsequent setblock commands