Technical Changes
The Data Pack version is now 107.1
The Resource Pack version is now 88.0
Profiling the game with Tracy (launching with –tracy) now includes GPU timings
Rendering now uses a reversed depth buffer, which helps with Z-fighting on most hardware
The fps F3 screen entry will now report which type of present mode is used (e.g. mailbox or fifo relaxed), as opposed to just vsync
The particle_render_stats now includes the counts of different particle groups (SQ for single quads, NR for no render, EG for elder guardians and IP for item pickup), as well as the total
A player’s score will no longer be displayed in the player tab overlay if the player doesn’t have the objective
Updates to telemetry
Server Properties
Added chat-spam-threshold-seconds and command-spam-threshold-seconds properties, separating the spam thresholds for chat vs commands
Both thresholds are set to 10 by default, which was the existing threshold for combined command+chat spam
These thresholds configure the mechanism that automatically kicks players for sending too many chat messages or commands
The value describes how many seconds worth of spamming a player must do to get kicked, where each message a player sends increases the counter by 1 second
The counter is decremented once per tick (equivalent to 1/20th of a second), and a player is kicked if their counter reaches the configured threshold
Either threshold can be set to 0 to disable kicks for the associated type of spam
Examples of message rates that would cause a kick, given the default threshold of 10:
Sending 11 messages in 1 second
Sending 14 messages in 2 seconds
Sending 21 messages in 10 seconds
Minecraft Server Management Protocol 3.0.0
The management server now starts before the Minecraft server starts
Most notably, this means the heartbeat will be sent while the world is loading and potentially upgrading
The rpc.discover and notification/server/status methods are now accessible before the dedicated server spins up
The server will return an error when other methods are called during this time
Telemetry
New Property in World Events
server_session_id a unique identifier for a multiplayer session, shared across all players in that session
A “session” is defined as a continuous period where at least one player was in the server
This property is required and not affected by the opt-in setting
New Required Events
graphics_capabilities
This is a new event that posts on startup, and informs us of the capabilities of the graphics device used to play the game
Added new property: backend_name
This will be Vulkan or OpenGL, and will help us understand which Graphics API players are using
Added new property: backend_failure_reason
This will be a list of short error codes, for example vulkan_device_version_too_low, which will help us identify any issues with our targeted Vulkan requirements
Added new property: backend_failure_message
This will be short and vague messages, such as Failed to find the GLFW platform surface extensions, which will help us narrow down issues if players are experiencing issues running with Vulkan
Added new property: backend_failure_missing_capabilities
This will be a list of missing capabilities from Vulkan, for example VULKAN_CORE_1_2, VK_KHR_dynamic_rendering, which will help us know which capabilities players would need in order to use Vulkan
Data Pack Version 107.1
Sulfur Cube Archetype Registry
Added data-driven minecraft:sulfur_cube_archetype registry. Elements are loaded from data//sulfur_cube_archetype/.json.
Entry format: Object with fields:
items – item tag that contains all items that can be fed to Sulfur Cubes of this archetype
buoyant – boolean indicating if the Sulfur Cube of this archetype floats in liquids
explosion – an optional field, if present, the Sulfur Cube of this archetype will explode:
fuse – positive integer, the fuse time when ignited
power – non-negative integer, the explosion power
causes_fire – boolean, whether the explosion causes fire
contact_damage – an optional field, if present, the Sulfur Cube of this archetype will deal damage to entities when they come in contact with it
amount – non-negative float, amount of damage dealt
damage_type – damage type
attribute_to_source – boolean indicating if the damage is attributed to the Sulfur Cube
attribute_modifiers – a list of objects with fields:
attribute – entity attribute, the attribute to modify
id – namespaced ID, unique identifier for the modifier
amount – double, the amount to modify the attribute by
operation – string, how to modify the attribute, one of add_value, add_multiplied_base, and add_multiplied_total
knockback_modifiers – a field that contains various modifier fields for the Sulfur Cube’s knockback magnitude and direction
horizontal_power – float that represents the horizontal power of the knockback
vertical_power – float that represents the vertical power of the knockback
sound_settings – a field that contains various sound settings for the Sulfur Cube
hit_sound – sound event that is played when the Sulfur Cube is hit while it has a block inside
push_sound – sound event that is played when the Sulfur Cube is pushed while it has a block inside
push_sound_impulse_threshold – float that specifies the smallest impulse required to trigger the push sound effect on the Sulfur Cube
push_sound_cooldown – float that specifies the cooldown in seconds for the push sound effect
Commands
When granting or revoking several advancements, the command output will now report how many advancements changed state across all players
When granting or revoking advancements or a criterion on several players, the command output will now report the number of players that any change applied to
Team color arguments (used in team modify [name] color and waypoint modify [name] color) now accept only lowercase names with underscores
e.g. only dark_purple is accepted and not darkpurple or DarkPurple
Values now match the color names in text components
The execute on owner command will now consider Vexes as owned by their Evoker
Added unpublish
Allows to unpublish the integrated server if there is one present
Attributes
Added minecraft:bounciness
Determines what portion of the velocity is restituted after the entity collides with blocks and collidable entities
When landing on bouncy blocks, like Beds and Slime Blocks, the higher bounciness (of the block or the entity) is applied
Accepts values between 0.0 and 1.0
Default value: 0.0 – no velocity is restituted
Maximum value: 1.0 – full velocity is restituted, collisions with blocks and collidable entities will have no effect on lowering the velocity
Added minecraft:friction_modifier
Determines how much ground friction is applied to the entity in regard to the block it is on
Accepts values between 0.0 and 2048.0
Default value: 1.0 – friction of blocks is not modified
Minimum value: 0.0 – friction of blocks is reduced to zero
Values higher than 1.0 increase the friction applied to the entity from the blocks it is on
Added minecraft:air_drag_modifier
Determines how much drag is applied to an entity while in the air
Accepts values between 0.0 and 2048.0
Default value: 1.0 – the entity uses existing drag when moving in the air
Minimum value: 0.0 – no drag is applied to the entity
Values higher than 1.0 increase the drag applied to the entity when moving through the air
Added minecraft:name_tag_distance
Controls how far away in blocks the name tag of an entity is visible
The name cannot be visible if the entity is not visible
Accepts values between 0.0 and 512.0
Default value: 64.0
Added minecraft:below_name_distance
Controls how far away in blocks the below_name scoreboard display is visible
The display cannot be visible if the entity is not visible
Accepts values between 0.0 and 512.0
Default value: 10.0
Changes to minecraft:knockback_resistance
The minimum value was changed from 0.0 to -2.0
Data Components
Added minecraft:sulfur_cube_content
Represents the item that is absorbed by the Sulfur Cube
Format: item that is absorbed by the Sulfur Cube
e.g. minecraft:sulfur_cube_content=green_wool
Entity Data
Removed the HurtByTimestamp tag from Living Entities, ticks_since_last_hurt_by_mob should be used instead
Block Entity Data
The minecraft:bed block entity has been removed
Damage Types
Added a new minecraft:sulfur_cube_hot damage type
Predicates
Entity Predicates
Entity predicate format has changed from a structure with multiple optional fields to one similar to data component maps.
For example: previously, effects was an optional field:
{
“effects”: {…}
}
In this version it has become a component-like sub-predicate entry:
{
“minecraft:effects”: {…}
}
The main functional changes are:
All keys in entity predicates are now namespaced IDs
Since namespaced IDs can be written without a namespace (defaulting to the minecraft namespace), existing field names are still valid
Exception: the field type has been renamed to minecraft:entity_type
Unrecognized sub-predicate components are now rejected (previously, unknown fields were ignored)
Existing type-specific sub-predicates have been renamed and moved to top-level.
minecraft:lightning to minecraft:type_specific/lightning
minecraft:fishing_hook to minecraft:type_specific/fishing_hook
minecraft:player to minecraft:type_specific/player
minecraft:raider to minecraft:type_specific/raider
minecraft:sheep to minecraft:type_specific/sheep
minecraft:slime to minecraft:type_specific/cube_mob as it now includes Sulfur Cubes in addition to Slimes and Magma Cubes
For example:
{
“type_specific”: {
“type”: “minecraft:player”,
“looking_at”: {
“type”: “minecraft:ender_dragon”
}
}
}
becomes
{
“minecraft:type_specific/player”: {
“looking_at”: {
“minecraft:type”: “minecraft:ender_dragon”
}
}
}
Added minecraft:entity_tags entity sub-predicate
This predicate matches entity tags (i.e. ones set with the /tag command).
Fields:
any_of – optional list of strings, if present the matched entity must have at least one of the listed tags
all_of – optional list of strings, if present the matched entity must have all the listed tags
none_of – optional list of strings, if present the matched entity must have none of the listed tags
World Generation
Added matching_biomes world generation-type block predicate type which checks if the block position matches one of the specified biomes
Format: object with fields:
biomes – biome ID, list of biome IDs, or hash-prefixed biome tag: the biomes to match
tree feature configuration’s below_trunk_provider block state provider no longer has a default value
Surface Rules
Changes to noise_threshold Condition
Added new is_3d field – boolean, true if the noise should be evaluated in 3D
If not specified, defaults to false
Dimension Types
The field infiniburn now also accepts an ID and a list of IDs in addition to a tag
Configured Features
Added minecraft:sequence Feature Type
Generates a list of Placed Features in order. If any feature in the list is not placed, the following features will also be skipped.
Format: object with fields:
features – list of Placed Features or hash-prefixed Placed Feature tag, the features to generate
Added minecraft:template Feature Type
Places one template randomly chosen from the given weighted list of namespaced IDs. By default, the template will be spawned randomly rotated, centered around the origin.
Format: object with fields:
templates – weighted list of structure template entries. Each structure template entry is composed of a namespaced ID and a list of rotations to randomly choose from
id – The template’s namespaced ID
rotations – Optional list of rotations to choose from and apply to this template if it is picked
Allowed values: none, clockwise_90, 180, counterclockwise_90
If not specified, defaults to all allowed values
Added minecraft:weighted_random_selector Feature Type
Randomly selects one of the given features to generate based on their weights.
Format: object with fields:
features – list of Placed Features and their weights
Changes to minecraft:pointed_dripstone
Renamed Feature Type pointed_dripstone to speleothem
Added field base_block – block state, describes the block forming the base of the speleothem
Added field pointed_block – block state, describes the block creating the columns of the speleothem
Added field replaceable_blocks – block ID, list of block IDs, or hash-prefixed block tag describing which blocks this feature can generate on
Renamed field chance_of_taller_dripstone to chance_of_taller_generation
Changes to minecraft:dripstone_cluster
Renamed Feature Type dripstone_cluster to speleothem_cluster
Added field base_block – block state, describes the block forming the base of the speleothem
Added field pointed_block – block state, describes the block creating the columns of the speleothem
Added field replaceable_blocks – block ID, list of block IDs, or hash-prefixed block tag describing which blocks this feature can generate on
Renamed field dripstone_block_layer_thickness to speleothem_block_layer_thickness
Renamed field chance_of_dripstone_column_at_max_distance_from_center to chance_of_speleothem_at_max_distance_from_center
Renamed field max_distance_from_edge_affecting_chance_of_dripstone_column to max_distance_from_edge_affecting_chance_of_speleothem
Changes to minecraft:large_dripstone
Added field replaceable_blocks – block ID, list of block IDs, or hash-prefixed block tag describing which blocks this feature can generate on
The maximum allowed value for column_radius has been reduced from 19 to 16 to prevent features from reaching beyond neighboring chunks
Wind offset is now clamped to ensure the full dripstone (radius + wind) stays within neighboring chunk bounds
Changes to minecraft:lake
Added field can_place_feature – block predicate, describes which blocks this feature can be placed on
Added field can_replace_with_air_or_fluid – block predicate, describes which blocks this feature can replace with air or the provided fluid block
Added field can_replace_with_barrier – block predicate, describes which blocks this feature can replace with the provided barrier block
Changes to minecraft:geode
The fields cannot_replace and invalid_blocks in the blocks section of the feature configuration now also accept an ID and a list of IDs in addition to a tag
Changes to minecraft:root_system
The field root_replaceable in the feature configuration now also accepts an ID or a list of IDs in addition to a tag
New field level_test_distance indicating how far away from the origin the root system will check the existing terrain
New field max_level_deviation indicating how far the ground level can deviate from the original ground level at these test positions
Changes to minecraft:vegetation_patch
The field replaceable in the feature configuration now also accepts an ID and a list of IDs in addition to a tag
Changes to minecraft:waterlogged_vegetation_patch
The field replaceable in the feature configuration now also accepts an ID and a list of IDs in addition to a tag
Changes to minecraft:multiface_growth
Field block is now mandatory (defaulted to minecraft:grow_lichen)
Structure Processors
Changes to minecraft:block_rot
Now evaluates the block state produced by previous block processors in the chain, instead of always using the original block defined in the structure
The first processor in the chain still always evaluates against the original structure-defined block
minecraft:protected_blocks
The field value now also accepts an ID or a list of IDs in addition to a tag
Density Functions
Added minecraft:interval_select
Selects between a number of Density Functions based on an input Density Function and a set of threshold values.
Format: object with fields:
input – Density Function, the value to be compared with any given thresholds
thresholds – non-empty list of floats, the threshold values to compare input with
If input < thresholds[i], the result of functions[i] will be selected
If the input is greater than the last threshold value, the last function will be selected
Must be one fewer element in thresholds than in functions
functions – list of at least 2 Density Functions, the resulting functions to be selected from
Must be one more element in functions than in thresholds
Removed minecraft:weird_scaled_sampler
This Density Function has been removed, with its functionality replaced by interval_select
When rarity_value_mapper was type_1, equivalent to:
interval_select with thresholds -0.75, -0.5, 0.5, 0.75
Selected functions follow: abs(rarity * noise(x/rarity, y/rarity, z/rarity))
Corresponding rarity values: 0.5, 0.75, 1.0, 2.0, 3.0
When rarity_value_mapper was type_2, equivalent to:
interval_select with thresholds -0.5, 0.0, 0.5
Selected functions follow: abs(rarity * noise(x/rarity, y/rarity, z/rarity))
Corresponding rarity values: 0.75, 1.0, 1.5, 2.0
Tags
Block Tags
Added #suppresses_bounce – all blocks that suppress the bounciness of entities when colliding with them
Added #causes_periodic_geyser_eruptions – all blocks that cause periodic eruptions of Potent Sulfur blocks
Added #causes_continuous_geyser_eruptions – all blocks that cause continuous eruptions of Potent Sulfur blocks
Added #glazed_terracotta and #concrete collection tags
Renamed #concrete_powder collection tag to #concrete_powders
Added #shears_extreme_breaking_speed for blocks that can be broken with shears with speed 15
Added #shears_major_breaking_speed for blocks that can be broken with shears with speed 5
Added #shears_minor_breaking_speed for blocks that can be broken with shears with speed 2
Added #speleothems for blocks which are speleothems like Pointed Dripstone and Sulfur Spike
Added the following tags for blocks which some mobs are immune to. These have an effect on dismounting and valid surroundings of spawn placements for some mobs, but do not have an effect on pathfinding
#fox_immune_to
#polar_bear_immune_to
#snow_golem_immune_to
#stray_immune_to
#wither_immune_to
#wither_skeleton_immune_to
#default_immune_to – this tag is intentionally left empty
Item Tags
Added #glazed_terracotta, #concrete, and #concrete_powders collection tags
Added #sulfur_cube_food – all items that can be fed to a small Sulfur Cube
Added #sulfur_cube_swallowable – all items that can be placed inside a large Sulfur Cube
Added the following tags for items that can be placed inside a Sulfur Cube to determine its archetype:
#sulfur_cube_archetype/regular
#sulfur_cube_archetype/bouncy
#sulfur_cube_archetype/slow_flat
#sulfur_cube_archetype/fast_flat
#sulfur_cube_archetype/light
#sulfur_cube_archetype/fast_sliding
#sulfur_cube_archetype/slow_sliding
#sulfur_cube_archetype/high_resistance
#sulfur_cube_archetype/sticky
#sulfur_cube_archetype/hot
#sulfur_cube_archetype/slow_bouncy
Damage Type Tags
Added minecraft:sulfur_cube_with_block_immune_to – all damage types that Sulfur Cubes are immune to when having a block absorbed
Entity Tags
Added #not_affected_by_geysers – entities that are not affected by the upward impulse applied by geyser eruptions
Game Events
Added minecraft:bounce
Emitted when an entity collides with a block or a collidable entity with non-zero bounciness
Has a vibration frequency of 2
Particles
Added minecraft:sulfur_cube_goo
This particle is showing on a Sulfur Cube mob when hopping around
Has no fields
Added minecraft:geyser_base
Spawns as a cloud on the base of an erupting Potent Sulfur block
Format: object with fields:
water_blocks – positive integer, scales the particle size and its burst impulse
burst_impulse_base – float, scales the initial burst impulse
Added minecraft:geyser_poof
Spawns as a cloud on the base of an erupting Potent Sulfur block
Format: object with fields:
water_blocks – positive integer, scales the particle size and its burst impulse
burst_impulse_base – float, scales the initial burst impulse
Added minecraft:geyser_plume
Spawns as an upwards stream above an erupting Potent Sulfur block
Format: object with fields:
water_blocks – positive integer, scales the particle size and its burst impulse
Added minecraft:geyser
An emitter particle that spawns the geyser_base, geyser_poof, and geyser_plume particles above an erupting Potent Sulfur block
Format: object with fields:
water_blocks – positive integer, scales the particle size and its burst impulse
Game Test Environments
Added minecraft:difficulty
Sets the difficulty of the game test environment
Format: object with fields:
difficulty – the difficulty ID to set, one of peaceful, easy, normal, hard
World Presets
Added a new minecraft:flat_all_dimensions world preset
This preset does not show up by default in the Create New World screen
Â