Published: 9/15/26
Wilderness Bound is out now in Minecraft Java Edition! Pack your supplies and set off on an expedition into the dappled forest where the trails end and adventure begins. Seek out abandoned camps, build outposts among the poplar trees, sleep under the stars on straw beds, and share campfire stories atop cushions. Just remember that the wilderness rewards the prepared - and maps are lighter than regrets!
Happy camping!
New Features
- Added Dappled Forest Biome
- Added Poplar Trees
- Added fallen Poplar Trees
- Added Red Poplar Leaves, Orange Poplar Leaves, and Yellow Poplar Leaves blocks
- Added Poplar wood set
- Added Shelf Mushrooms
- Added Red Shrubs
- Added Abandoned Camp structures
- Added new Explorer Maps
- Added Cushions
- Added Straw Beds
- Added Wool Stairs and Wool Slabs for all Wool blocks
- Added Concrete Stairs and Concrete Slabs for all Concrete blocks
- Players in spectator mode can now interact with portals to teleport
- Improvements to Realms, including the ability to create and manage Invite Codes
- Added Gothic language support
Dappled Forest Biome
- A new type of forest biome which can be found near cold biomes
- Poplar Trees and fallen Poplar Trees generate here
- Shelf Mushrooms can be found here, placed on Poplar Trees and fallen Poplar Trees
- Red Shrubs generate here
- The following passive and neutral mobs spawn in the Dappled Forest, using their cold variants where applicable:
- Sheep
- Chicken
- Cow
- Pig
- Rabbit
- Fox
- A Dappled Forest variant of the new Abandoned Camp structure can be found here
Poplar Trees
- A new type of tree which comes in three color variations:
- Red Poplar Leaves
- Orange Poplar Leaves
- Yellow Poplar Leaves
- Each variant of the tree has its own variant of falling leaf particles matching the color of the leaves
- Poplar Leaves drop Poplar Saplings which will randomly grow into any of the three different variants
- Poplar Saplings can be found in trades with the Wandering Trader
- Shelf Mushrooms and Leaf Litter naturally generate on or around Poplar Trees
- The trunk of the trees are made of Poplar Logs
- Poplar Logs can be crafted into a new set of Poplar wood blocks
Shelf Mushroom
- A new type of mushroom that generates on Poplar Trees and fallen Poplar Trees
- Can be found in two sizes, small and large
- A small Shelf Mushroom can be grown into a large Shelf Mushroom by using Bone Meal
- A large Shelf Mushroom drops two Shelf Mushroom items when broken
- Can be used like other mushrooms to make Stews
- Can be found in trades with the Wandering Trader
- Shelf Mushrooms have a slight bounciness when stepped on, similar to Beds
- The Shelf Mushroom makes a bouncing sound when a living entity bounces on it
Red Shrub
- A new type of decorative plant block that can be found in small patches in the Dappled Forest
- Can be used in the Composter
- Using Bone Meal on a Red Shrub grows a Red Shrub in a random adjacent space if possible
Abandoned Camp Structure
- A new kind of structure which can be found in the following biomes:
- Meadow
- Cherry Grove
- Forest
- Birch Forest
- Old Growth Birch Forest
- Flower Forest
- Windswept Forest
- Dappled Forest
- Taiga
- Snowy Taiga
- Old Growth Spruce Taiga
- Old Growth Pine Taiga
- Sparse Jungle
- Bamboo Jungle
- Swamp
- Savanna
- Wooded Badlands
- Pale Garden
- Each of these biomes has its own variant of the structure with a design based on the biome
- Certain structure pieces are generic for all biome variants of the structure
- Various Chests and Barrels with loot can be found at Abandoned Camps
Cushion
- The Cushion is an item that the player can place in the world and interact with to sit on
- Can be crafted in 16 colored variants
- Cushions are crafted by using 3 Wool Slabs of the same color
Cushion Placement Rules
- A Cushion can be placed on any flat surface
- Cushions always align horizontally to the grid, but vertically sit on top of the supporting surface
- Cushions cannot be moved by pistons
- Cushions break if the supporting block is removed
- Cushions do not have collision and can overlap with other objects (except other Cushions)
Straw Bed
- The Straw Bed is a new type of bed which can be used to sleep through the night without setting your spawn point
- It can only be used once and will be destroyed after use
- It cannot be used in the Nether or the End and will be destroyed if you try to sleep on it there
- It is crafted by using 3 Hay Bales and will give you 4 Straw Beds
- There's a new statistic in the Statistics window for the amount of times you've slept in a Straw Bed
Wool Stairs and Wool Slabs
- Each colored Wool block now has a new Stair and Slab variant
- Wool Stairs and Wool Slabs can be used like other Wool blocks to dampen vibrations

Concrete Stairs and Concrete Slabs
- Each colored Concrete block now has a new Stair and Slab variant
- Concrete Slabs and Stairs can also be crafted using a Stone Cutter
Abandoned Camp Explorer Maps
- New Explorer Maps have been added to the Abandoned Camps
- Added maps showing the location of other Abandoned Camps in the following biomes:
- Bamboo Jungle
- Cherry Grove
- Birch Forest
- Dappled Forest
- Flower Forest
- Pale Garden
- Swamp
- Windswept Forest
- Added maps for the following structures:
- Ancient City
- Trial Chambers
- Mineshaft
- Desert Pyramid
- Jungle Pyramid
- Warm Ocean Ruins
- Woodland Mansion
Realms
- Realm owners can now create and manage Invite Codes
- Each Realm can have up to five Invite Codes
- Invite Codes can be configured to be active/inactive and deleted
- The expiration of an Invite Code can also be configured
- Players can now easily join a Realm by entering an Invite Code in a new "Join Realm" screen, found in the Realms main menu
- Added render distance and simulation distance sliders to the Realm configuration settings
- Added a new Realms introduction screen showcasing Realms key features
- Accessible from the "Add Realm" button
- Automatically shown when entering Realms if a trial is available

Changes
- The Main Menu now has an updated background panorama showing the new Dappled Forest biome with an Abandoned Camp
- Removed fallen leaf particles from Spruce Trees
- Suspicious Stews can now be crafted with 2 of any mushroom
- Mushroom Stew can now be crafted with 2 of any mushroom
- The player icon on maps has been updated to always show the direction the player is facing
- New Villager trades, unlocked from a Villager leveling up their profession, will now update even if the player is in the process of trading with them
- Persistent mobs' random walk/swim behaviors will now deactivate when players are not nearby, in the same way as non-persistent mobs
- Replaced the current "Improved Transparency" approach with a new order-independent transparency algorithm which is expected to be much better at solving translucency issues
- Added a rebindable debug key combination "F3 + X" to toggle "Improved Transparency"
- When using a Shield together with a Hoe or a Shovel, raising the Shield will take precedence over tilling and path making
- Changed the Adventure Mode icon in the Game Mode Switcher to the Buried Treasure Map
- Improvements to performance when trying to locate structures
- Improvements to chunk generation performance
Explorer Maps
- Explorer Maps are now their own items instead of renamed Filled Maps, and each has its own icon:
- Ocean Monument Map
- Woodland Mansion Map
- Buried Trial Chambers Map
- Jungle Pyramid Map
- Swamp Hut Map
- Desert Village Map
- Plains Village Map
- Savanna Village Map
- Snowy Village Map
- Taiga Village Map
- Buried Treasure Map
- Buried Ancient City Map
- Buried Mineshaft Map
- Desert Pyramid Map
- Abandoned Camp Map
- Warm Ocean Ruins Map
- These items cannot be obtained from the Creative inventory
- Existing Explorer Maps in old worlds are converted to the matching new item on load
- The following Explorer Maps have been renamed to have more consistent naming
- Ocean Monument Explorer Map → Ocean Monument Map
- Swamp Hut Explorer Map → Swamp Hut Map
- Trial Chambers Explorer Map → Buried Trial Chambers Map
- Woodland Mansion Explorer Map → Woodland Mansion Map
- Jungle Pyramid Explorer Map → Jungle Pyramid Map
- Explorer Maps can still be cloned in a Crafting Table, and the copies keep their own item type
- Explorer Maps and Buried Treasure Maps can no longer be zoomed out, neither in a Crafting Table nor at a Cartography Table
- Buried Treasure Maps could previously be zoomed out at both
- Explorer Maps could previously be zoomed out at a Cartography Table
- Only maps in the #minecraft:extendable_maps tag can be zoomed out
- Map and Empty Map have new icons

Order-independent Transparency (OIT)
- Generally, translucent surfaces need to be rendered back-to-front to avoid visual issues
- In order to do so, the translucent geometry has to be sorted before rendering
- This is very expensive and even with perfect sorting of individual triangles, intersecting triangles are not possible to render correctly
- Before this release, the "Improved Transparency" video setting attempted to mitigate translucency-related visual issues
- It did this by rendering different types of translucent objects (entities, particles, water, etc.) to different textures that were later combined to create the final image
- This allowed us to fix some of the issues with some performance impact
- However, it introduced some other less noticeable issues
- Now, the "Improved Transparency" video setting will instead enable a new order-independent transparency algorithm (which we will refer to as OIT)
- This makes it possible to render translucent objects in any order without sorting
- It fixes all existing major translucency-related visual issues (such as certain objects disappearing when viewed through translucent objects)
- However, the algorithm is an approximation, and so it introduces some new minor visual artifacts (such as the color of clouds being somewhat incorrect when viewed through multiple layers of translucent surfaces)
- We expect OIT to have a higher performance impact than the previous implementation of "Improved Transparency"
- When "Improved Transparency" is turned off, the behavior hasn't meaningfully changed and the game will still prioritize performance over correctness while sorting geometry as necessary
Developer's Note: Special thanks to Rubén Osorio López, Jozufozu, and the Minecraft modding community in general for sharing the information that helped us to deliver this.
Minor Tweaks to Blocks, Items, and Entities
- Endermen will now take damage from projectiles if they're riding something
- Teleporting randomly after eating a Chorus Fruit now shows particles into the direction of the teleportation
- Endermen and Shulkers no longer teleport onto Bedrock
- Armadillos no longer try to roll up when submerged in liquids
- Data set on a Spawn Egg will now transfer to a Mob Spawner when a player with operator permissions uses the Egg on the Spawner
- Sherds dropped from breaking a Decorated Pot will now preserve data, for example custom names
- Enchantments now apply to items being damaged from protecting an undead mob from the sun
- Teleporting with an Ender Pearl now resets the momentum of the player being teleported
UI
- Removed the Raw Input mouse setting
- Mouse input now always uses relative mouse mode while playing in-game
- Key bindings now use physical keys instead of keyboard-layout-specific key codes
- Borderless Fullscreen is now the default fullscreen mode
- Switching between Borderless and Exclusive Fullscreen no longer requires restarting the game
- The cursor is now confined to the window while Exclusive Fullscreen is active
- The minimum window size is now 320 by 240 pixels
- On macOS, holding a key while entering text now displays the native accent and candidate popup
- On Linux systems, the game will now use and prefer Wayland natively if available
- Fixed an issue where Realm owners could not select automatic region preference as their Realm region
- Added a "Quit Shortcuts" option in Controls settings, which controls whether keyboard shortcuts can close the game (Alt + F4 on Windows/Linux, Cmd + Q and Cmd + W on macOS)
- On by default
- On macOS, added a "Right Click Emulation" option in Controls settings, which treats Control + left-click as a right-click
- Off by default
- On macOS, added a "Menu/Dock Visibility" option in Video Settings, which controls whether the macOS Menu bar and Dock can be revealed by moving the mouse to the edge of the screen while in fullscreen
- Added support for Realms to use additional server regions in Canada, Mexico, South Africa, and Arizona, USA if they become available in the future
Debug Overlay
- The debug overlay now supports a separate GUI scale from the rest of the game
- This is customizable through the Debug Options screen, F3 + F6
- The default scale is "Auto", which tries to stay at a higher resolution than normal
- Another option is "Unchanged", which matches your regular GUI scale
- The rest of the options work the same as in the normal "GUI Scale", controlling the scale directly
- Added a "player_speed" debug entry that displays the speed of the player in blocks per tick
- The debug overlay now shows the display refresh rate
World Options
- The World Options button has been moved to where the Open to Lan button used to be, accessible from the pause menu
- The World Options screen is divided into two sections: "General" and "Multiplayer"
- The "General" section contains the following options:
- Default Game Mode: the default game mode of the world (equivalent to the /defaultgamemode command)
- Personal Game Mode: your active game mode in the current world (equivalent to the /gamemode command, or F3 + F4)
- Allow Commands: Controls whether you can use commands in this world or not
- Difficulty: Controls the difficulty of the world (equivalent to the /difficulty command)
- Edit Game Rules: Opens the Game Rules screen, which allows you to view and edit the game rules of the world
- Restrictions: View your restrictions in the world
- The "Multiplayer" section contains the following options:
- LAN: changes the multiplayer scope of the world
- Port: the port number to use when opening the world to LAN
- Command Access: controls whether players that join your world can use commands or not
- Force Game Mode: controls whether other players' game mode is forced to match the default game mode of the world or not
- The "General" section contains the following options:
- The World Options screen is divided into two sections: "General" and "Multiplayer"
- The Online button used to access the Online Options screen will now always be shown in the Options menu instead
Accessibility
- Subtitles now point to the most recent sound in range
Creative Inventory
- Reordered mineral item and block ordering to have non-tiered ingredients up first, then tiered ingredients that craft into equipment last
- Ingredients
- Non-tiered minerals
- Unrefined tiered minerals
- Refined tiered minerals
- Nuggets
- Ingots
- Building Blocks
- Non-tiered mineral blocks and variants
- Refined tiered mineral blocks and variants
- Copper block family
- Copper Blocks continue to be pushed to the end of the order in Building Blocks since they have a large list of content
- Ingredients
- Improved the ordering of the Natural Blocks tab so that all inner ordering of group content sequentially progresses from Overworld → Nether → End to stay consistent with other tabs
Technical Changes
- The Data Pack version is now 121.0
- The Resource Pack version is now 97.1
- Some log lines that server software might look out for have been removed
- The Minecraft Server Management Protocol can be used instead
- If you are missing access to specific events, please create a feature request on the Feedback site
- The definition field from the blocks.json data generation report has been removed
- Terrain blocks are now rendered with MultiDrawIndirect on supported devices
- level.dat now contains a version_history list with prior data versions of the file
Windowing and Input Backend
- Minecraft now uses SDL3 instead of GLFW for window management, input, and platform integration
- Keyboard input now uses SDL scancodes for physical key positions and SDL keycodes for layout-dependent text editing shortcuts
Server Properties
- The white-list property is now true by default
Minecraft Server Management Protocol 3.1.0
- Added notifications indicating when the server performs a full world upgrade on startup
- minecraft:notification/world/upgrade_started
- minecraft:notification/world/upgrade_progress
- minecraft:notification/world/upgrade_finished
- minecraft:notification/world/upgrade_failed
Data Pack Versions 108.0 through 121.0
- Commands like /give, /unpublish, and /tick should now properly signal errors
- Pottery sherds are now data-driven
- Entries stored in the minecraft:pot_decorations component and minecraft:decorated_pot block entity are now full item stacks
- Signs no longer automatically execute click events in custom text
- Potion recipes are now data-driven
- The minecraft:number_provider and minecraft:number_provider_type registries have been split into separate registries for integer calculations (minecraft:context_int_provider, minecraft:context_int_provider_type) and float calculations (minecraft:context_float_provider, minecraft:context_float_provider_type)
- Loot table types that have a dedicated registry now support registry element and tag references
- This means that the majority of fields of such types that previously accepted single elements will now accept either a namespaced ID or an inline value, while fields that previously accepted lists can now accept an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID
- Affected types:
- minecraft:advancement
- minecraft:item_modifier
- minecraft:loot_table
- minecraft:context_int_provider
- minecraft:context_float_provider
- minecraft:predicate
- minecraft:recipe
- minecraft:slot_source
- Existing reference types for predicates, item modifiers, and slot sources are now obsolete and have been removed
- The codec for element lists/tags now allows mixing inline values and references
- For example, item modifiers like [{type:set_count, ...}, "minecraft:some_modifier"] are now allowed
- The following Block State fields have been renamed
- Name is now id
- Properties is now properties
- The default Block State of a Block can now be referred to in a compact form directly by the Block id

Commands
Added posteffect
- Allows adding or removing "post effects" to players
- These are postprocessing shaders that are applied to the player's screen, after the game has finished normal rendering
- Post effects exist on the client (in resource packs), not the server – the server cannot know if one will actually apply
- Post effects themselves were already part of the resource pack format, but only a few hardcoded ones were available to use
Developer's Note: This now makes custom shaders fully available to use from resource packs, but please be aware that shaders are still subject to be changed at-will, and the features involved (the command, post effects, or shaders) may be redesigned in the future.
Syntax:
- /posteffect add <player> <posteffect> - adds the post effect to the player, if it doesn't already exist
- /posteffect clear <player> - removes all post effects from the player, if any exist
- /posteffect list <target> - lists all post effects applied to the player, if any exist
- /posteffect remove <player> <posteffect> - removes the post effect from the player, if it exists
Changes to publish
- The gamemode argument has been removed
- Instead, the default game mode of the world should be set using the defaultgamemode command or the Game Mode button in the World Options screen, while player-specific game modes should be set using the gamemode command
Added compute
- Evaluates minecraft:context_int_provider and minecraft:context_float_provider values in various contexts
- In all contexts, origin is set to the current command context position, while this entity is set to @s
- If the evaluation fails (for example due to division by zero), this command will fail
Syntax:
- /compute <target> integer <int_provider> OR
- /compute <target> float <float_provider> [<scale>], where:
- <target> - one of:
- default - runs the provider in the minecraft:command_compute_default context, where only common arguments (position and this entity) are available
- block <pos> - runs the provider in the minecraft:command_compute_position context, where block state and block position are set based on the block at position <pos>
- entity <entity selector> - runs the provider in the minecraft:command_compute_entity context, where target_entity is set to the selector result
- <int_provider> - either an element of the minecraft:context_int_provider registry or an inline value
- <float_provider> - either an element of the minecraft:context_float_provider registry or an inline value
- <scale> - optional scale value, defaults to 1.0
- The final result will be multiplied by <scale> and rounded towards negative infinity
- <target> - one of:
Changes to data
- Added new source to /data modify ... append|insert|merge|prepend|set called compute
- It evaluates a minecraft:context_int_provider or minecraft:context_float_provider value and then provides the result either as an integer or a float tag
- Example: /data modify storage foo bar set compute entity @n[type=minecraft:armor_stand] integer {type:score,target:{type:context,target:target_entity},score:baz}
Syntax:
- compute <target> (integer <int_provider> | float <float_provider>), where the syntax of target, int_provider, float_provider is the same as in the /compute function
- Note: unlike /compute, there is no scale, since the result is directly stored as a float, instead of being returned from the command as an integer
Changes to give
- When the amount of items passed to the give command is above the limit, the command will now signal an error instead of just printing an error message and returning 0
Changes to tellraw
- The nbt component in a raw chat message will only be resolved up to 64k times
Changes to tick
- The following subcommands will now signal an error instead of just printing an error message and returning 0:
- tick step
- tick step stop
- tick sprint stop
Changes to team
- The result of the team join and team leave subcommands now reflects the exact count of entities that have joined or left (i.e. excluding entities for which teams have not changed)
Changes to item
- Now takes a slot source as an argument in place of anywhere a slot was previously used
- It will be evaluated with the minecraft:command_slot_source loot type
- Can be a slot source in either inline or reference form
- Can be a slot source targeting multiple slots
- The replace sub-command has new semantics:
- The contents of each destination slot are replaced with the corresponding source item one by one in the order they are provided by the slot source
- When there are more destination slots than there are source items, the remaining slots are ignored
- Example: replace [12345] with (ABC) → [ABC45]
- When there are fewer destination slots than there are source items, the remaining items are ignored
- Example: replace [123] with (ABCDE) → [ABC]
- String notation slot ranges in the form <slot_type> or <slot_type>.<slot_number> are still permitted
- Can be a single slot, such as armor.chest
- Can be multiple slots, such as container.*
- Acts as shorthand for a minecraft:slot_range slot source using that slot range
- Example: hotbar.4 is the same as {type:"minecraft:slot_range",slots:"hotbar.4"}
- The entity argument in the from entity item source can now be a selector targeting multiple entities
- When more than a single entity is targeted, the slots sourced from each are concatenated
- Added new fill and override sub-commands, each with syntax identical to /item replace
- /item fill
- Fills each destination slot with a source item
- When there are more destination slots than there are source items, the items repeat until every slot is filled
- Example: fill [12345] with (ABC) → [ABCAB]
- /item override
- Overrides the contents of each destination slot with the corresponding source item
- When there are more destination slots than there are source items, the remaining slots are cleared
- Example: override [12345] with (ABC) → [ABC__] (where _ represents an empty slot)
- /item fill
Changes to execute
- Added new slots condition sub-command
- Counts the number of slots from the slot source that are present on the targeted block or entity
- The slot source will be evaluated with the minecraft:command_slot_source loot type
- Syntax:
- /execute if|unless slots block <pos> <slot source>
- /execute if|unless slots entity <targets> <slot source>
- The items condition sub-command now takes a slot source as argument instead of a slot
- The slot source will be evaluated with the minecraft:command_slot_source loot type
- Syntax:
- /execute if|unless items block <pos> <slot source> <item predicate>
- /execute if|unless items entity <targets> <slot source> <item predicate>
Changes to place
- The feature sub-command now allows inline definition of the Feature
Changes to spreadplayers
- Whether a block is safe to spread a player to is now controlled by the #entities_can_teleport_to block tag
Changes to swing
- When used on a player, the player's attack strength will no longer be reset
- Added a new optional argument to set the swing animation to play
- Allowed values: none, whack, stab
- If omitted, defaults to whack
- Added a new argument to set the duration of the swing animation, if provided
- Format: positive time value (by default in ticks)
- If omitted, defaults to 6t
Environment Attributes
Added minecraft:gameplay/natural_mob_spawns
- Defines mob spawns in an Environment Attribute Source
- During worldgen placement, only Dimensions and Biomes will apply this Environment Attribute
- Format: object with fields:
- spawns_by_category - map of spawn category to weighted list of spawn data
- Spawn data format: object with fields:
- type - entity type, the entity to spawn
- count - int provider, amount to spawn
- Spawn data format: object with fields:
- spawn_costs - map of entity type to object with fields:
- energy_budget - float, energy change allowed per spawn
- charge - float, how much existing mobs will attract or repulse other charged mobs
- spawns_by_category - map of spawn category to weighted list of spawn data
- Available attribute modifiers:
- overlay
- For each mob category, overrides the lower layer's spawn settings with the higher layer's, unless the category is not included
- Merges each layer's spawn costs together, overriding the lower layer's spawn costs with the higher layer's if both define the same entity type
- overlay
- Default: Empty
Added minecraft:gameplay/creature_world_gen_spawn_probability
- Sets the probability to run an iteration in which mobs defined to spawn in the creature mob category will spawn during world generation
- Only Dimensions and Biomes will apply this Environment Attribute
- Format: float with range [0,1)
- Default: 0.1
Changed minecraft:gameplay/bed_rule
- Field explodes has been renamed to destroy_on_use
- Added destroy_on_leave - optional boolean, if true, the Bed will be destroyed when leaving it
- If omitted, defaults to false
Added minecraft:gameplay/straw_bed_rule
- Same format as minecraft:gameplay/bed_rule, but used for the Straw Bed
Changed minecraft:visual/ambient_particles
- Now supports interpolation between Timeline keyframes (probabilities will be crossfaded)
- Introduced support for new modifier: append
- Unlike override which totally replaces the particle list, this modifier concatenates all elements with the layers below

Data Components
Added minecraft:provides_pottery_pattern
- Describes the pottery pattern stored on a stack
- Format:
- namespaced ID pointing to an element of the minecraft:decorated_pot_pattern registry
Added minecraft:cooking_fuel
- Describes an item that can be used as fuel for a Furnace, Smoker, or Blast Furnace
- Format: object with fields
- burn_time - inline integer number, or a namespaced ID pointing to an element of the minecraft:context_int_provider registry representing the time in ticks for which this fuel will burn
- speed_multiplier - inline float number, or a namespaced ID pointing to an element of the minecraft:context_float_provider registry representing the speed of the cooking/smelting
- Cooking fuel items with remainders will be handled as follows:
- If there is fuel remaining in the fuel slot, the remainder item will be dropped on the ground
- If the fuel has run out, the remainder item will remain in the fuel slot
Added minecraft:brewing_fuel
- Describes an item that can be used as fuel for a Brewing Stand
- Format: object with fields
- uses - inline integer number, or a namespaced ID pointing to an element of the minecraft:context_int_provider registry representing the number of times this fuel will brew before being consumed
- speed_multiplier - inline float number, or a namespaced ID pointing to an element of the minecraft:context_float_provider registry representing the speed of the brewing
- Brewing fuel items with remainders will be handled as follows:
- If there is fuel remaining in the fuel slot, the remainder item will be dropped on the ground
- If the fuel has run out, the remainder item will remain in the fuel slot
- This behavior matches items placed in the input and reagent slots of the brewing stand
- Note: the #brewing_fuel item tag has been removed and will no longer function to register new brewing fuels
Changed minecraft:pot_decorations
Instead of taking a list of 4 item IDs, this component now takes an object with 4 optional item stack fields named:
- back
- left
- right
- front
Changed minecraft:trim_material
- The format of inline material definitions has been updated as described below
Added minecraft:block_transformer
- Allows an item to transform blocks into other blocks on player interaction
- Format:
- a namespaced ID of a minecraft:block_transformer registry type
Added minecraft:sign_text_front and minecraft:sign_text_back
- Two identical components that represent text on the front and back of a sign
- Contents will be displayed in the item's tooltip
- The format is the same as the front_text and back_text fields on the minecraft:sign and minecraft:hanging_sign block entities, i.e.
- messages - a list of text components
- filtered_messages - an optional list of text components, if omitted, it will be set to the same value as messages
- messages and filtered_messages must have the same entry count
- color - optional dye color, default: black
- has_glowing_text - optional boolean, default: false
Added minecraft:waxed
- A marker for blocks with contents that are waxed
- No fields
Added minecraft:cushion/color
- Applied to Cushion entities when they get placed using an item
- Format: one of 16 dye colors
Added minecraft:compostable
- Represents the ability to compost an item and how it adds layers to the composter
- Format: object with fields
- layers - inline integer number, or namespaced ID pointing to an element of the minecraft:context_int_provider registry
Added minecraft:villager_food
Represents items that Villagers can eat. Villagers will pick up items with this component in addition to items in the #villager_picks_up tag.
- Format: object with fields
- nutrition - positive integer, how much hunger the item satiates in the Villager once eaten
Added minecraft:mob_visibility
Represents the visibility percentage provided by an item with the appropriate minecraft:equippable component, modifying the range at which mobs are able to detect an entity.
- Format: object with fields
- targeting_entity_types - an entity ID, a list of namespaced entity IDs, or a hash-prefixed entity tag to match
- visibility - float (between 0.0 and 10.0), with 0.0 reducing the range at which mobs detects the entity to 2 blocks while 10.0 increases the detection range tenfold
- While multiple items with this component stack, the maximum vision will still never exceed 10.0
Added minecraft:attack_animation
- The animation to play when the item is being used to attack something
- Format: object with fields:
- type - swing animation type, one of none, whack, stab
- duration - non-negative integer, the length of the animation in ticks
Added minecraft:interact_animation
- The animation to play when the item is being used to interact with something
- Format: Same as minecraft:attack_animation
Changed minecraft:consumable
- Added a new optional field to the teleport_randomly consume effect:
- directional_particles - boolean, whether to show a particle trail into the direction of the teleportation
- If not present, defaults to true
- directional_particles - boolean, whether to show a particle trail into the direction of the teleportation
Removed minecraft:swing_animation
- This has been replaced by minecraft:attack_animation and minecraft:interact_animation
- Setting both of these new components to the same value will be functionally identical to the old component, except for:
- The /swing command - animation type now specified by the command
- Items being dropped by entities
- Setting both of these new components to the same value will be functionally identical to the old component, except for:
Removed minecraft:map_color
- Maps are no longer drawn as a tinted overlay, so there is nothing left for the color to apply to
- Existing maps have the component stripped on load
- See the Resource Pack section for the matching removal of the minecraft:map_color tint source
Trim Materials
The format of elements in the trim_material registry has been updated:
- asset_name has been replaced with palette - Palette Texture ID to be used for this material
- override_armor_assets has been removed
- Overrides are now defined in the Resource Pack Equipment Asset
- See the Resource Pack section for details about Palette Texture IDs
Instruments
The format of elements in the instrument registry have been updated:
- Added durability_damage field - optional non-negative integer, amount of durability to consume on each use
- Updated use_duration field - can now be 0 for no cooldown
Entity Data
- Added invulnerable_time tag which makes an entity temporarily invulnerable for a specific number of ticks

Block Entity Data
Changed minecraft:decorated_pot
The sherds field no longer stores a list of 4 item IDs. Instead, the new format is an object with 4 optional item stack fields named:
- back
- left
- right
- front
Changed minecraft:sign and minecraft:hanging_sign
- By default, commands and other click events contained in Sign text are no longer executed when the block is clicked
- Additionally, text components on newly placed Signs are no longer resolved by default
- A new boolean field called allow_op_features (defaults to false) has been added to restore previous behavior
- Placed Signs and items with the minecraft:block_entity_data component containing Sign data stored in worlds saved before this version will have allow_op_features set to true
- Any newly created Sign will need to have that field set explicitly
- Changed the rules for opening the Sign edit screen after a block is placed:
- Previously, the screen would open unless minecraft:block_entity_data was applied successfully
- Now, the screen will open only if it could be opened normally by clicking the block (i.e. it's not waxed and only has editable text on the front side)
- Signs will now accept and return the minecraft:sign_text_front, minecraft:sign_text_back, and minecraft:waxed components
Changed minecraft:brewing_stand
The following fields are now stored as integers rather than shorts:
- Changed the BrewTime field from a short to an integer, this is the amount of time that the current brewing process has taken so far
- Changed the Fuel field from a byte to an integer, this is the amount of fuel remaining
The following new fields have been added:
- total_brew_time - integer, the total amount of time the current brewing process will take
- total_fuel - integer, represents the amount of fuel that was added in the last refuel
- speed_multiplier - float, used to speed up or slow down the next brewing process
Changed minecraft:furnace, minecraft:smoker, and minecraft:blast_furnace
The following fields are now stored as integers rather than shorts:
- Changed the cooking_time_spent field from a short to an integer, this is the amount of time that the current cooking process has taken so far
- Changed the cooking_total_time field from a short to an integer, this is the total amount of time the current cooking process will take
- Changed the lit_time_remaining field from a short to an integer, this is the amount of burn time remaining
- Changed the lit_total_time field from a short to an integer, this is the total amount of burn time that was added in the last refuel
The following new fields have been added:
- speed_multiplier - float, used to speed up or slow down the next brewing process
Advancements
Validation
- Visible root advancements (i.e. ones that have a display field, but no parent field) must always declare a background field in the display structure
- Only root advancements can have a background field in the display structure
Rewards
- The loot sub-field in the rewards field now accepts an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:loot_table type
Triggers
- Multiple fields that accepted a list of loot conditions are now stricter:
- The previous functionality of a list of conditions being equivalent to a single minecraft:all_of condition has been removed
- Additionally, the type field is now mandatory (previously it defaulted to minecraft:entity_properties)
- Some fields that previously accepted only inline loot conditions now also accept a namespaced ID of a minecraft:predicate
- The player field, available on all triggers except minecraft:impossible, now accepts an inline value or a namespaced ID of a minecraft:predicate type
- To avoid duplication, this field is not mentioned in entries below
Changed minecraft:any_block_use
- The location field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:bee_nest_destroyed
- The block field has been renamed to blocks and now accepts a single namespaced ID, a list of namespaced IDs, or a hash-prefixed tag ID of a minecraft:block type
- Added field state that matches block state properties (same format as minecraft:enter_block)
Changed minecraft:bred_animals
- The child, parent, and partner fields now accept an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:brewed_potion
- The potion field now accepts a minecraft:potion_contents data component predicate
Changed minecraft:cured_zombie_villager
- The villager and zombie fields now accept an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:default_block_use
- The location field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:effects_changed
- The source field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:enter_block
- The block field has been renamed to blocks and now accepts a single namespaced ID, a list of namespaced IDs, or a hash-prefixed tag ID of a minecraft:block type
Changed minecraft:fall_after_explosion
- The cause field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:fishing_rod_hooked
- The entity field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:placed_block
- The location field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:item_used_on_block
- The location field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:allay_drop_item_on_block
- The location field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:player_killed_entity
- The entity field now accepts an inline value or a namespaced ID of a minecraft:predicate type
- The killing_blow.tags.id field now accepts a single namespaced ID, a list of namespaced IDs, or a hash-prefixed tag ID of a minecraft:damage_type type
Changed minecraft:entity_killed_player
- The entity field now accepts an inline value or a namespaced ID of a minecraft:predicate type
- The killing_blow.tags.id field now accepts a single namespaced ID, a list of namespaced IDs, or a hash-prefixed tag ID of a minecraft:damage_type type
Changed minecraft:kill_mob_near_sculk_catalyst
- The entity field now accepts an inline value or a namespaced ID of a minecraft:predicate type
- The killing_blow.tags.id field now accepts a single namespaced ID, a list of namespaced IDs, or a hash-prefixed tag ID of a minecraft:damage_type type
Changed minecraft:lightning_strike
- The bystander and lightning fields now accept an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:player_generates_container_loot
- The loot_table field has been renamed to loot_tables and now accepts a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:loot_table type
- If a tag or a list is used, the trigger will run when any listed loot table is generated
Changed minecraft:thrown_item_picked_up_by_player
- The entity field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:thrown_item_picked_up_by_entity
- The entity field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:player_hurt_entity
- The entity field now accepts an inline value or a namespaced ID of a minecraft:predicate type
- The damage.type.tags.id field now accepts a single namespaced ID, a list of namespaced IDs, or a hash-prefixed tag ID of a minecraft:damage_type type
Changed minecraft:entity_hurt_player
- The damage.type.tags.id field now accepts a single namespaced ID, a list of namespaced IDs, or a hash-prefixed tag ID of a minecraft:damage_type type
Changed minecraft:player_interacted_with_entity
- The entity field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:player_sheared_equipment
- The entity field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:crafter_recipe_crafted
- The recipe_id field has been renamed to recipes and now accepts a single namespaced ID, a list of namespaced IDs, or a hash-prefixed tag ID of a minecraft:recipe type
- If a tag or a list is used, the trigger will run when any listed recipe is used
Changed minecraft:recipe_crafted
- The recipe_id field has been renamed to recipes and now accepts a single namespaced ID, a list of namespaced IDs, or a hash-prefixed tag ID of a minecraft:recipe type
- If a tag or a list is used, the trigger will run when any listed recipe is used
Changed minecraft:recipe_unlocked
- The recipe field has been renamed to recipes and now accepts a single namespaced ID, a list of namespaced IDs, or a hash-prefixed tag ID of a minecraft:recipe type
- If a tag or a list is used, the trigger will run when any listed recipe is unlocked
Changed minecraft:slide_down_block
- The block field has been renamed to blocks and now accepts a single namespaced ID, a list of namespaced IDs, or a hash-prefixed tag ID of a minecraft:block type
Changed minecraft:summoned_entity
- The entity field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:tame_animal
- The entity field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:target_hit
- The projectile field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:villager_trade
- The villager field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Slot Sources
- Slot sources can now be defined as files inside a Data Pack, within the slot_source folder
- Can be used in commands which take slot sources as arguments
- minecraft:contents is no longer restricted to only selecting non-empty slots
Changed minecraft:group
- The terms field now accepts an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:slot_source type
- The inline format of minecraft:group (previously only a list of inline slot sources) can now also accept a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:slot_source type
- This format is now consistently available for all fields of a slot source (but not for stand-alone files)
Changed minecraft:filtered
- The slot_source field now accepts an inline value or a namespaced ID of a minecraft:slot_source type
Changed minecraft:contents
- The slot_source field now accepts an inline value or a namespaced ID of a minecraft:slot_source type
Changed minecraft:limit_slots
- The slot_source field now accepts an inline value or a namespaced ID of a minecraft:slot_source type
Changed minecraft:slot_range
- The source field has a new valid type container, which sources slots from a container or inventory provided through loot context
- The source field is now optional
- Defaults to the container source type when absent
Loot Tables
- Added till/rooted_dirt loot table for drops when Rooted Dirt is tilled with a hoe
- Multiple block loot tables now reference predicates for checking if a tool has Silk Touch and is Shears instead of inlining a copy of those checks
- The rolls field now accepts an inline value or a namespaced ID of a minecraft:context_int_provider type
- The bonus_rolls field now accepts an inline value or a namespaced ID of a minecraft:context_float_provider type
Loot Table Types
Added minecraft:command_slot_source
- Currently used to evaluate slot sources with the /item and /execute commands
- It takes the following parameters:
- container, the container or inventory being evaluated
- origin, the position at which the command was executed
- this_entity, the @s entity of the command being executed (optional)
Added minecraft:command_compute_default
- Currently used for the /compute default command
- It takes the following parameters:
- origin, the position at which the command was executed
- this entity, the @s entity of the command being executed (optional)
Added minecraft:command_compute_position
- Currently used for the /compute block command
- It takes the following parameters:
- Everything included in minecraft:command_compute_default
- block_entity, the block entity of the block at the position given in a command
- block_state, the current state of the block at the position given in a command
Added minecraft:command_compute_entity
- Currently used for the /compute entity command
- It takes the following parameters:
- Everything included in minecraft:command_compute_default
- target_entity, the entity selected by the selector given in a command
Added minecraft:container_process
- Currently used to evaluate cooking and brewing fuel values
- It takes the following parameters:
- container, the container or inventory being evaluated
- block_entity, the block entity being fueled
- block_state, the current state of the block being fueled
- origin, the location of the block being fueled
Changed minecraft:advancement_location
- Block entities are now available in context and can be matched by conditions like minecraft:match_block
Changed minecraft:block_interact
- origin is now available in context, as the center of the block being interacted with
Loot Pool Entries
- The conditions field in loot pool entries has been renamed to condition and now accepts an inline value or a namespaced ID of a minecraft:predicate type
- The functions field in loot pool entries has been renamed to modifier and now accepts an inline value (including a list as a short form of minecraft:sequence) or a namespaced ID of a minecraft:item_modifier type
- This field is now present on all loot entries, including previously omitted minecraft:alternatives, minecraft:sequence, and minecraft:group
Changed minecraft:tag
- The name field has been renamed to items and now accepts a single namespaced ID, a list of namespaced IDs, or a hash-prefixed tag ID of a minecraft:item type
Changed minecraft:loot_table
- The value field now accepts a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:loot_table type
- Added expand field, working the same as in the minecraft:tag pool entry:
- if true, each entry inside the tag will be added to the outer pool, with weights equal to the weight of this entry
- if false, this pool entry will operate as a single entry in the outer pool
- If this entry gets selected, it will return all items from all referenced loot tables
Loot Functions
- The conditions field is now available in all loot functions and has been renamed to condition
- It now also accepts an inline value or a namespaced ID, but no longer an inline list of conditions
- The functionality of the old condition list format can be achieved by explicitly using the minecraft:all_of loot condition type
- The function field (describing the function type) has been renamed to type
Changed minecraft:sequence
- The functions field now accepts an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:item_modifier type
- Added an optional condition field which accepts an inline value or a namespaced ID of a minecraft:predicate type
- The inline format of minecraft:sequence (previously only a list of inline functions) can now also accept a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:item_modifier type
- This format is now consistently available for all fields of a loot function type (but not for stand-alone files), which means that every such field can accept an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:item_modifier type
Changed minecraft:modify_contents
- The modifier field now accepts an inline value or a namespaced ID of a minecraft:item_modifier type
Changed minecraft:set_attributes
- Number providers in the amount sub-fields of the modifiers list now accept an inline value or a namespaced ID of a minecraft:context_float_provider type
Changed minecraft:enchanted_count_increase
- The count field now accepts an inline value or a namespaced ID of a minecraft:context_float_provider type
Changed minecraft:enchant_with_levels
- The levels field now accepts an inline value or a namespaced ID of a minecraft:context_int_provider type
Changed minecraft:set_custom_model_data
- Elements in the floats list can now be an inline value or a namespaced ID of a minecraft:context_float_provider type
- Elements in the colors list can now be an inline value or a namespaced ID of a minecraft:context_int_provider type
Changed minecraft:set_enchantments
- Values in the enchantments map can now be an inline value or a namespaced ID of a minecraft:context_int_provider type
Changed minecraft:set_count
- The count field now accepts an inline value or a namespaced ID of a minecraft:context_int_provider type
Changed minecraft:limit_count
- The min and max fields inside the limit structure now accept an inline value or a namespaced ID of a minecraft:context_int_provider type
- The limit field no longer accepts a single number
Changed minecraft:set_damage
- The damage field now accepts an inline value or a namespaced ID of a minecraft:context_float_provider type
Changed minecraft:set_ominous_bottle_amplifier
- The amplifier field now accepts an inline value or a namespaced ID of a minecraft:context_int_provider type
Changed minecraft:set_random_dyes
- The number_of_dyes field now accepts an inline value or a namespaced ID of a minecraft:context_int_provider type
Changed minecraft:set_stew_effect
- The duration field in the elements of the effects list now accepts an inline value or a namespaced ID of a minecraft:context_int_provider type
Changed minecraft:set_loot_table
- Removed unused field type
- The name field has been renamed to loot_table_id
Changed minecraft:exploration_map
- The destination field is no longer optional and now accepts a single namespaced ID, a list of namespaced IDs, or a hash-prefixed tag ID of a minecraft:structure type
- The map_color field has been removed
- The function no longer changes the type of the item it is applied to - it now only adds map data to the existing item
- Previously it required a minecraft:map and produced a minecraft:filled_map
- The item to produce is now chosen by the loot entry or villager trade itself, so a data pack that produced exploration maps has to change its item from minecraft:map to minecraft:filled_map (or one of the explorer map items)
- If no matching structure is found, the item is left without a minecraft:map_id - use minecraft:filtered with minecraft:discard_item to drop those, as the vanilla loot tables and villager trades now do
Removed minecraft:reference
- This function has become obsolete, as any field that takes a function now accepts (among other things) a namespaced ID to other functions
Predicates
- The condition field (describing the predicate type) has been renamed to type
Changed minecraft:all_of
- The terms field now accepts an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:predicate type
- Note: values of this type can no longer be shortened to a single list, a full object with the type minecraft:all_of needs to be used explicitly
Changed minecraft:any_of
- The terms field now accepts an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:predicate type
Changed minecraft:inverted
- The term field now accepts an inline value or a namespaced ID of a minecraft:predicate type
Changed minecraft:random_chance
- The chance field now accepts an inline value or a namespaced ID of a minecraft:context_float_provider type
Removed minecraft:value_check
- This condition has been split into integer and float variants
Added minecraft:int_value_check
- Checks a value against some range
Fields:
- value - an inline value or a namespaced ID of a minecraft:context_int_provider type
- test - one of:
- an inline value (including a single integer) or a namespaced ID of a minecraft:context_int_provider type
- Will test if the result of value is equal to the provided test value
- an object with fields:
- min - an optional inline value (including a single integer) or a namespaced ID of a minecraft:context_int_provider type
- max - an optional inline value (including a single integer) or a namespaced ID of a minecraft:context_int_provider type
- Will test if the result of value is between min and max (inclusive)
- an inline value (including a single integer) or a namespaced ID of a minecraft:context_int_provider type
Added minecraft:float_value_check
- Checks value against some range
Fields:
- value - an inline value or a namespaced ID of a minecraft:context_float_provider type
- test - one of:
- an inline value (including a single float) or a namespaced ID of a minecraft:context_float_provider type
- Will test if the result of value is equal to the provided test value
- an object with fields:
- min - an optional inline value (including a single float) or a namespaced ID of a minecraft:context_float_provider type
- max - an optional inline value (including a single float) or a namespaced ID of a minecraft:context_float_provider type
- Will test if the result of value is between min and max (inclusive)
- an inline value (including a single float) or a namespaced ID of a minecraft:context_float_provider type
Changed minecraft:time_check
- The min and max fields inside the value structure now accept an inline value or a namespaced ID of a minecraft:context_int_provider type
- The value field itself now accepts an inline value or a namespaced ID of a minecraft:context_int_provider type (previously only integers were allowed)
Changed minecraft:entity_scores
- The min and max fields inside the values of the scores map now accept an inline value or a namespaced ID of a minecraft:context_int_provider type
- The scores field itself now accepts an inline value or a namespaced ID of a minecraft:context_int_provider type (previously only integers were allowed)
Changed minecraft:damage_source_properties
- The predicate.tags.id field now accepts a single namespaced ID, a list of namespaced IDs, or a hash-prefixed tag ID of a minecraft:damage_type type
Removed minecraft:reference
- This condition has become obsolete, as any field that takes a loot condition now accepts (among other things) a namespaced ID to other conditions
Added Vanilla Predicates
New entries added to the previously empty minecraft:predicate:
- minecraft:tool/can_silk_touch
- minecraft:tool/can_shear
- minecraft:block/fast_cooking
Added minecraft:match_block Condition Type
Matches block state and optionally block entity data and components (if present)
Fields (same as the elements of the minecraft:can_place_on component):
- blocks - optional block id, list of namespaced block IDs, or hash-prefixed block tag to match
- state - optional map of block state property keys to values to match
- nbt - optional block entity NBT to match
- The match will fail if this field is present but no block entity is available in the context
- components - optional map of exact components to match
- The match will fail if this field is present but no block entity is available in the context
- predicates - optional map of component predicates to match
- The match will fail if this field is present but no block entity is available in the context
Removed minecraft:block_state_property Condition Type
- This has been fully replaced by minecraft:match_block
Potion Predicates
The minecraft:potion_contents Data Component Predicate has been changed to allow matching on specific potion effects.
The previous predicate format used a list of potion types, the new format allows for more refined matching.
The following fields can be used in any combination, all are optional:
- potions - a list of potion types or a potion tag to match
- effects - a Collection Predicate of mob_effects predicates to match
- The Collection Predicate format is as follows:
- contains - a list of mob_effects predicates to match
- count - a list of options for matching a specific number of mob effect predicates, which follow the same format as the minecraft:effects entity sub-predicate
- test - the mob_effects predicate to match
- count - the number of matches required, or with min and max will match a range of counts
- size - require the mob effects list to have a specific size, or with min and max will match a range of sizes
- The Collection Predicate format is as follows:
The mob_effects predicate format is a mapping of effect types to properties of that effect. All fields are optional, only the provided fields will be used for matching:
{
"minecraft: <effect type>": {
"duration": <integer bounds representing a duration in ticks>,
"amplifier": <integer bounds>,
"ambient: true/false,
"visible": true/false
}
)
Here is an example of matching on several different effects and criteria:
"effects": {
"minecraft:jump_boost": {
"duration": 3600,
"amplifier": 5,
"ambient: true,
"visible": true
},
"minecraft:speed": {
"duration": {
"min": 360,
"max": "3600
},
"amplifier: {
"min": 2
}
},
"minecraft:resistance": {}
}
All criteria are optional.
Number Providers
- The minecraft:number_provider type has been split into two separate types: minecraft:context_int_provider (integer number providers) and minecraft:context_float_provider (float number providers)
- Note: those new types should not be confused with the already existing minecraft:int_provider_type and minecraft:float_provider_type, which are context-free providers, used mostly for world generation
Integer Number Providers
- Added the minecraft:context_int_provider registry
- All calculations are performed using 32-bit integers
- The result of calculations that provide invalid values (like division by zero) is undefined
- Fields:
- type - a namespaced ID from minecraft:context_int_provider_type registry
- <type-specific fields>
Added Vanilla Integer Number Providers
- minecraft:compostable/low
- returns 1 if the minecraft:block_state context parameter is an empty composter, otherwise has a 30% chance of returning 1
- minecraft:compostable/low_medium
- returns 1 if the minecraft:block_state context parameter is an empty composter, otherwise has a 50% chance of returning 1
- minecraft:compostable/medium
- returns 1 if the minecraft:block_state context parameter is an empty composter, otherwise has a 65% chance of returning 1
- minecraft:compostable/medium_high
- returns 1 if the minecraft:block_state context parameter is an empty composter, otherwise has an 85% chance of returning 1
- minecraft:compostable/always_add_one
- always returns 1
- minecraft:cooking/time_bamboo
- Returns the burn time in ticks for Bamboo and Scaffolding
- minecraft:cooking/time_blaze_rod
- Returns the burn time in ticks for Blaze Rods
- minecraft:cooking/time_boats
- Returns the burn time in ticks for Boats
- minecraft:cooking/time_coal
- Returns the burn time in ticks for Coal
- minecraft:cooking/time_coal_block
- Returns the burn time in ticks for Coal Blocks
- minecraft:cooking/time_dried_kelp_block
- Returns the burn time in ticks for Dried Kelp Blocks
- minecraft:cooking/time_dry_plants
- Returns the burn time in ticks for various dry plants
- minecraft:cooking/time_hanging_signs
- Returns the burn time in ticks for Hanging Signs
- minecraft:cooking/time_lava_bucket
- Returns the burn time in ticks for Lava Buckets
- minecraft:cooking/time_roots
- Returns the burn time in ticks for Mangrove Roots
- minecraft:cooking/time_wood_blocks
- Returns the burn time in ticks for wood blocks
- minecraft:cooking/time_wood_items_extra_small
- Returns the burn time in ticks for very small wood items such as Buttons
- minecraft:cooking/time_wood_items_large
- Returns the burn time in ticks for large wood items such as Doors
- minecraft:cooking/time_wood_items_small
- Returns the burn time in ticks for small wood items such as Bows
- minecraft:cooking/time_wood_slabs
- Returns the burn time in ticks for wood slabs
- minecraft:cooking/time_wool
- Returns the burn time in ticks for most Wool blocks
- minecraft:cooking/time_wool_carpets
- Returns the burn time in ticks for Wool Carpets
- minecraft:cooking/time_wool_slabs
- Returns the burn time in ticks for Wool Slabs and Cushions
- minecraft:cooking/normal_burn_time_reduction_factor
- Returns the burn time reduction factor for cooking fuel when used in a normal furnace
- minecraft:cooking/fast_burn_time_reduction_factor
- Returns the burn time reduction factor for cooking fuel when used in a block matching the block/fast_cooking predicate
- minecraft:brewing/uses_default
- Returns the default number of brews provided by brewing fuel
Added minecraft:abs
- Returns the absolute value of input
- If the final result does not fit inside a 32-bit integer, the calculation will be canceled
- Fields:
- input - an inline value or a namespaced ID of a minecraft:context_int_provider type
Added minecraft:avg
- Evaluates multiple integer providers and returns the arithmetic mean of all results
- Division rounds towards 0
- Fields:
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_int_provider type
- Requires at least one value
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_int_provider type
Added minecraft:binomial
- Makes n random coin flips with the probability of succeeding equal to p, then returns the number of successes
- Fields:
- n - the number of coin flips, an inline value or a namespaced ID of a minecraft:context_int_provider type
- p - the probability of a single coin flip succeeding ([0.0, 1.0]), an inline value, or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:conditional
- Returns the value from on_true if its condition is fulfilled or on_false if not
- Fields:
- condition - an inline value or a namespaced ID of a minecraft:predicate type
- on_true - an inline value or a namespaced ID of a minecraft:context_int_provider type which is executed if its condition is fulfilled
- on_false - an optional inline value or a namespaced ID of a minecraft:context_int_provider type
- Defaults to a constant 0 if omitted
Added minecraft:constant
- Returns a constant value
- Fields:
- value - an integer
- Can also be written inline as a plain number (foo: 1 is equivalent to foo: {type:"minecraft:constant",value:1})
Added minecraft:sub
- Returns left minus right
- If the final result does not fit inside a 32-bit integer, the calculation will be canceled
- Fields:
- left - an inline value or a namespaced ID of a minecraft:context_int_provider type
- right - an inline value or a namespaced ID of a minecraft:context_int_provider type
Added minecraft:from_float
- Evaluates a float provider and converts it to an integer value
- Noninteger values will be truncated (i.e. rounded towards zero)
- Values that don't fit inside a 32-bit integer (including NaN) are treated as errors and will cancel the calculation
- Fields:
- input - an inline value or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:max
- Evaluates multiple integer providers and returns the largest of all results
- Fields:
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_int_provider type
- Requires at least one value
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_int_provider type
Added minecraft:min
- Evaluates multiple integer providers and returns the smallest of all results
- Fields:
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_int_provider type
- Requires at least one value
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_int_provider type
Added minecraft:mod
- Returns the modulus of left by right
- Uses truncated integer division (rounds towards zero)
- Division by zero is treated as an error and will cancel the calculation
- Fields:
- left - an inline value or a namespaced ID of a minecraft:context_int_provider type
- right - an inline value or a namespaced ID of a minecraft:context_int_provider type
Added minecraft:floor_mod
- Returns the modulus of left by right
- Uses floored integer division (rounds towards negative infinity)
- Division by zero is treated as an error and will cancel the calculation
- Fields:
- left - an inline value or a namespaced ID of a minecraft:context_int_provider type
- right - an inline value or a namespaced ID of a minecraft:context_int_provider type
Added minecraft:environment_attribute
- Fetches and provides the value of an Environment Attribute (minecraft:environment_attribute)
- Fields
- attribute - the Environment Attribute ID to fetch (must be representable as an int)
Added minecraft:negate
- Returns the negation of input
- If the final result does not fit inside a 32-bit integer, the calculation will be canceled
- Fields:
- input - an inline value or a namespaced ID of a minecraft:context_int_provider type
Added minecraft:number_dispatcher
- Returns the first case which fulfills its condition or the default if none do
- Fields:
- cases - a list of cases in the order that the dispatcher will try to execute them
- Fields:
- condition - an inline value or a namespaced ID of a minecraft:predicate type
- value - an inline value or a namespaced ID of a minecraft:context_int_provider type which is executed if the condition is fulfilled
- Fields:
- default - an optional inline value or a namespaced ID of a minecraft:context_int_provider type
- Defaults to a constant 0 if omitted
- cases - a list of cases in the order that the dispatcher will try to execute them
Added minecraft:pow
- Returns base to the power of exponent
- If the exponent is negative, the calculation will be canceled
- If both the base and the exponent are zero, the calculation will be canceled
- If the final result does not fit inside a 32-bit integer, the calculation will be canceled
- Fields:
- base - an inline value or a namespaced ID of a minecraft:context_int_provider type
- exponent - an inline value or a namespaced ID of a minecraft:context_int_provider type
Added minecraft:mul
- Evaluates multiple integer providers and returns the product of all results
- If the final result does not fit inside a 32-bit integer, the calculation will be canceled
- Fields:
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_int_provider type
- Requires at least one value
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_int_provider type
Added minecraft:div
- Returns left divided by right
- Uses truncated integer division (rounds towards zero)
- Division by zero is treated as an error and will cancel the calculation
- Fields:
- left - an inline value or a namespaced ID of a minecraft:context_int_provider type
- right - an inline value or a namespaced ID of a minecraft:context_int_provider type
Added minecraft:floor_div
- Returns left divided by right
- Uses floored integer division (rounds towards negative infinity)
- Division by zero is treated as an error and will cancel the calculation
- If the final result does not fit inside a 32-bit integer, the calculation will be canceled
- Fields:
- left - an inline value or a namespaced ID of a minecraft:context_int_provider type
- right - an inline value or a namespaced ID of a minecraft:context_int_provider type
Added minecraft:score
- Returns a score of the selected target
- If the score is not present, the provider returns the value of fallback
- Fields:
- score - objective name
- target - score holder (same format as in the number provider version)
- fallback - an optional inline value or a namespaced ID of a minecraft:context_int_provider type
- Defaults to a constant 0 if omitted
Added minecraft:storage
- Returns an integer value from a command storage
- If the value is not present, is not a number, or the path returned multiple values, the provider returns the value of fallback
- The conversion of numeric NBT values that are not an integer is undefined
- Fields:
- storage - a namespaced ID of a command storage
- path - an NBT path
- fallback - an optional inline value or a namespaced ID of a minecraft:context_int_provider type
- Defaults to a constant 0 if omitted
Added minecraft:add
- Evaluates multiple integer providers and returns the sum of all results
- If the final result does not fit inside a 32-bit integer, the calculation will be canceled
- Fields:
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_int_provider type
- Requires at least one value
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_int_provider type
Added minecraft:uniform
- Picks a random integer from a closed range
- Fields:
- min - minimum value (inclusive), an inline value, or a namespaced ID of a minecraft:context_int_provider type
- max - maximum value (inclusive), an inline value, or a namespaced ID of a minecraft:context_int_provider type
Added minecraft:weighted_list
- Returns a value from a distribution of weighted number providers
- Fields:
- distribution - a list of objects with the following fields
- Fields:
- data - an inline value or a namespaced ID of a minecraft:context_int_provider type
- weight - a positive integer
- Fields:
- distribution - a list of objects with the following fields
Float Number Providers
- Added a minecraft:context_float_provider registry
- All calculations are performed using single-precision floating-point numbers ("floats")
- The result of calculations that produce NaN and Infinity is undefined
- Format:
- type - a namespaced ID from minecraft:context_float_provider_type registry
- <type-specific fields>
Added Vanilla Float Number Providers
- minecraft:cooking/speed_default
- Returns the default speed multiplier for cooking fuel
- minecraft:cooking/normal_speed_multiplier
- Returns the speed multiplier for cooking fuel when used in a normal Furnace
- minecraft:cooking/fast_speed_multiplier
- Returns the speed multiplier for cooking fuel when used in a block matching the block/fast_cooking predicate
- minecraft:brewing/speed_default
- Returns the default speed multiplier for brewing fuel
Added minecraft:abs
- Returns the absolute value of input
- Fields:
- input - an inline value or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:avg
- Evaluates multiple float providers and returns the arithmetic mean of all results
- Fields:
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_float_provider type
- Requires at least one value
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_float_provider type
Added minecraft:ceil
- Returns the ceiling (i.e. rounded towards positive infinity) value of input
- Fields:
- input - an inline value or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:conditional
- Returns the value from on_true if its condition is fulfilled or on_false if not
- Fields:
- condition - an inline value or a namespaced ID of a minecraft:predicate type
- on_true - an inline value or a namespaced ID of a minecraft:context_float_provider type which is executed if its condition is fulfilled
- on_false - an optional inline value or a namespaced ID of a minecraft:context_float_provider type
- Defaults to a constant 0.0 if omitted
Added minecraft:constant
- Returns a constant value
- Fields:
- value - a float
- Can also be written inline as a plain number (foo: 1.0 is equivalent to foo: {type:"minecraft:constant",value:1.0})
Added minecraft:cos
- Returns the cosine of input
- Fields:
- input - argument in radians, an inline value, or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:sub
- Returns left minus right
- Fields:
- left - an inline value or a namespaced ID of a minecraft:context_float_provider type
- right - an inline value or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:enchantment_level
- Evaluates Enchantment Level-Based (minecraft:enchantment_level_based_value_type) parameter
- Fields:
- amount: A Level-Based Value giving a value based on the level of the Enchantment
Added minecraft:environment_attribute
- Fetches and provides the value of an Environment Attribute (minecraft:environment_attribute)
- Fields
- attribute - the Environment Attribute ID to fetch (must be representable as a float)
Added minecraft:floor
- Returns the floored (i.e. rounded towards negative infinity) value of input
- Fields:
- input - an inline value or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:from_int
- Evaluates an integer provider and converts it to a float value
- Fields:
- input - an inline value or a namespaced ID of a minecraft:context_int_provider type
Added minecraft:length
- Evaluates multiple float providers and returns the square root of the sum of squares
- Fields:
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_float_provider type
- Requires at least one value
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_float_provider type
Added minecraft:max
- Evaluates multiple float providers and returns the largest of all results
- Fields:
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_float_provider type
- Requires at least one value
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_float_provider type
Added minecraft:min
- Evaluates multiple float providers and returns the smallest of all results
- Fields:
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_float_provider type
- Requires at least one value
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_float_provider type
Added minecraft:mod
- Returns the modulus of left by right
- Fields:
- left - an inline value or a namespaced ID of a minecraft:context_float_provider type
- right - an inline value or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:negate
- Returns the negation of input
- Fields:
- input - an inline value or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:number_dispatcher
- Returns the first case which fulfills its condition or default if none do
- Fields:
- cases - a list of cases in the order that the dispatcher will try to execute them
- Fields:
- condition - an inline value or a namespaced ID of a minecraft:predicate type
- value - an inline value or a namespaced ID of a minecraft:context_float_provider type which is executed if the condition is fulfilled
- Fields:
- default - an optional inline value or a namespaced ID of a minecraft:context_float_provider type
- Defaults to a constant 0.0 if omitted
- cases - a list of cases in the order that the dispatcher will try to execute them
Added minecraft:pow
- Returns base to the power of exponent
- Fields:
- base - an inline value or a namespaced ID of a minecraft:context_float_provider type
- exponent - an inline value or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:mul
- Evaluates multiple float providers and returns the product of all results
- Fields:
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_float_provider type
- Requires at least one value
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_float_provider type
Added minecraft:div
- Returns left divided by right
- Fields:
- left - an inline value or a namespaced ID of a minecraft:context_float_provider type
- right - an inline value or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:round
- Returns the rounded (towards the nearest integer, with ties rounding towards positive infinity) value of input
- Fields:
- input - an inline value or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:sin
- Returns the sine of input
- Fields:
- input - argument in radians, an inline value, or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:sqrt
- Returns the square root of input
- Fields:
- input - an inline value or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:storage
- Returns a float value from a command storage
- If the value is not present, is not a number, or the path returned multiple values, the provider returns the value of fallback
- The conversion of numeric NBT values that are not a float is undefined
- Fields:
- storage - a namespaced ID of a command storage
- path - an NBT path
- fallback - an optional inline value or a namespaced ID of a minecraft:context_float_provider type
- Defaults to a constant 0.0 if omitted
Added minecraft:add
- Evaluates multiple float providers and returns the sum of all results
- Fields:
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_float_provider type
- Requires at least one value
- inputs - an inline value, a single namespaced ID, a list of namespaced IDs, a list of inline values, or a hash-prefixed tag ID of a minecraft:context_float_provider type
Added minecraft:truncate
- Returns the truncated (rounded towards zero) value of input
- Fields:
- input - an inline value or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:uniform
- Picks a random number from a range
- Fields:
- min - minimum value, an inline value, or a namespaced ID of a minecraft:context_float_provider type
- max - maximum value, an inline value, or a namespaced ID of a minecraft:context_float_provider type
Added minecraft:weighted_list
- Returns a value from a distribution of weighted number providers
- Fields:
- distribution - a list of objects with the following fields
- Fields:
- data - an inline value or a namespaced ID of a minecraft:context_float_provider type
- weight - a positive integer
- Fields:
- distribution - a list of objects with the following fields

Recipes
Potion Brewing Recipes
Potion brewing recipes are now data-driven. New recipes can be added via data packs, and vanilla recipes may be modified. Brewing recipes use the minecraft:brewing type.
The main contents are:
- input - a potion ingredient with a required item field and an optional potion_contents field using a minecraft:potion_contents Data Component Predicate
- reagent - a potion ingredient with a required item field and an optional potion_contents field using a minecraft:potion_contents Data Component Predicate
- output - item stack, the resulting item
Here is an example of a vanilla recipe:
{
"type": "minecraft:brewing",
"input": {
"item": "minecraft:potion",
"potion_contents": {
"potion": "minecraft:water"
}
},
"output": {
"components": {
"minecraft:potion_contents": {
"potion": "minecraft:awkward"
}
},
"id": "minecraft:potion"
},
"reagent": {
"item": "minecraft:nether_wart"
}
}
Any items may be used in any of the 3 slots, for example:
{
"type": "minecraft:brewing",
"input": { "item": "minecraft:bucket" },
"output": { "id": "minecraft:sulfur_cube_bucket" },
"reagent": { "item": "minecraft:potent_sulfur" }
}
Cooking Recipes
The cookingtime field of all cooking recipes is no longer optional.
The recipes for Smokers and Blast Furnaces now use the same cooking time in their data definition as their Furnace counterparts.
The cooking time speedup is now done through the minecraft:cooking/speed_default Number Provider used by the furnace fuel components.
Custom Smoker and Blast Furnace recipes should be updated accordingly, by setting cookingtime to twice the previous value.
If a custom cooking recipe was previously relying on the default cookingtime value, 200 can be used to maintain the same timing.
Block Transformers
- Added a minecraft:block_transformer registry containing rules for transforming a block into another block
- Format: list of objects with fields:
- block_state_provider - Block State Provider, used to provide the state for the transformed block
- If the Block State Provider returns no result (as by rule_based, for example), the next rule in the list will be attempted
- The set of Block State Providers are the same as the Block State Providers used in World Generation
- sound - optional field, Sound Event to play on interaction, e.g. minecraft:item.axe.strip
- If not present, defaults to play no Sound Event
- particle - optional field, particles to play on interaction
- One of:
- none
- scrape
- wax_on
- wax_off
- If not present, defaults to none
- One of:
- disallowed_faces - optional field, list of directions specifying faces on the clicked Block that cannot be interacted with
- One of:
- up
- down
- north
- south
- east
- west
- If a disallowed face is interacted with, the next rule in the list will be attempted
- If not present, defaults to an empty list
- One of:
- loot - optional Loot Table, the Loot Table to use for dropping items on a successful transformation, e.g. minecraft:till/rooted_dirt
- If not present, defaults to using no Loot Table
- drop_strategy - optional field, configures from where in the Block any loot should drop
- One of:
- from_middle - from the middle of the Block
- clicked_face - from the face interacted with
- If not present, defaults to from_middle
- One of:
- update_from_neighbors - optional boolean, if the transformed block should update based on neighboring blocks. This allows e.g. fences to connect
- If not present, defaults to true
- transform_type - optional field, configures how nearby blocks should be affected by the transformation
- One of:
- single_block - only affects the Block interacted with
- copper_chest - if input and output blocks are both copper chests of any weathering state, waxed or unwaxed, this transformation will affect both sides of a double chest
- If not present, defaults to single_block
- One of:
- consume_on_use - optional boolean, determines if the item should be consumed or not
- Only applies to stackable items
- If not present, defaults to true
- item_damage_per_use - optional integer, determines how much damage the item takes with each use
- Only applies to non-stackable items
- If not present, defaults to 0
- block_state_provider - Block State Provider, used to provide the state for the transformed block
- Default values in vanilla:
- minecraft:shovel - default value for shovels
- minecraft:axe - default value for axes
- minecraft:hoe - default value for hoes

World Generation
- Cave Air is no longer generated in Nether caves
Biomes
- Removed the spawners, spawn_costs, and creature_spawn_probability fields
- These values have been moved to the new Environment Attributes
Features
- The worldgen/configured_feature registry has moved to worldgen/feature and configuration is now done inline in the root object rather than separated into a config field
- Removed feature types:
- minecraft:coral_mushroom
- minecraft:kelp
- minecraft:seagrass
- minecraft:sea_pickle
- minecraft:nether_forest_vegetation
- minecraft:twisting_vines
- minecraft:weeping_vines
- minecraft:desert_well
Developer's Note: These feature types are no longer needed, since the features they previously hardcoded are now implemented with other, more configurable functionality.
Changed minecraft:coral_claw and minecraft:coral_tree
- Added field feature, a Placed Feature that is used to place at every desired block position
Changed minecraft:stepped_column_cluster (renamed from minecraft:basalt_columns)
Now exposes more control over the feature functionality.
Format changes:
- Renamed field reach to column_reach
- Added fields:
- block- Block state provider, which block to place
- can_replace - Block predicate, which blocks can be replaced by the column
- continue_through - Block predicate, which pre-existing blocks to accept as part of a column
- cannot_place_on - Block ID, list of Block IDs, or hash-prefixed Block Tag ID, which blocks are avoided when starting placement
- column_count - int provider (between 1 and 150), the number of columns to generate
- cluster_reach - int provider (between 0 and 13), the size of the square to attempt to generate columns in
- The effective reach is also limited by height
Changed minecraft:single_block_pillar (renamed from minecraft:basalt_pillar)
Now exposes more control over the feature functionality.
- Added fields:
- block - Block state provider, which block to place
- can_replace - Block predicate, which blocks to replace
- direction - one of up and down, vertical direction of the pillar
- chance_to_continue - optional float between 0 and 1, probability that the pillar continues another block (assuming can_replace matches)
- If omitted, defaults to 1
- cap_feature - optional Placed Feature, placed at the end of the pillar
Changed minecraft:random_neighbor_spread (renamed from minecraft:glowstone_blob)
Now exposes more control over the feature. Places blocks randomly in an area starting at the origin, each block placing so it has exactly one accepted neighbor.
- Added fields:
- block - Block state provider, which block to place
- accepted_neighbors - Block ID, list of Block IDs, or hash-prefixed Block Tag, which blocks count as a valid neighbor
- can_replace - Block predicate, which blocks to replace
- attempts - int provider (between 1 and 3000), how many placement attempts to make
- xz_offset - int provider (between -16 and 16), what offsets to try along the x and z axes
- y_offset - int provider (between -16 and 16), what offsets to try along the y-axis
Changed minecraft:sculk_patch
- Removed extra_rare_growths and catalyst_chance fields
Added minecraft:overlay
Places a set of features in the same location. Note that as opposed to the minecraft:sequence Feature Type, all features are placed regardless of individual placement success.
- Format: object with fields:
- features - Placed Feature ID, non-empty list of Placed Feature IDs, or hash-prefixed Placed Feature Tag, the features to place
Added minecraft:projected_random_patchy_square
Generates a square where each block is randomly placed or not placed with its probability based on the distance from the center of the square, with the center more likely to generate than the edges. Each placed block can be projected downwards if the appropriate conditions are met.
- Format: object with fields:
- block - Block state provider, which block to place
- project_through - Block Predicate, which blocks are considered "empty" and should be projected through
- size - int provider (between 1 and 16), determines the size of the square as measured from the center to the edge
- max_projection_height - non-negative integer, the maximum change in y level from the original height to the placement height for a block in the square
Added minecraft:end_podium
- Places the End Podium
- Two feature instances are now used to place the podium from in-game events:
- end_podium_active
- end_podium_inactive
- Format: object with fields:
- active - boolean, whether the portal is active
Changed minecraft:template
- Added field processors: Namespaced ID or inline definition of a structure processor list to apply to the template
Changed minecraft:tree
Added shelf_mushroom Tree Decorator Type
- Places Shelf Mushrooms on logs with the specified probability
- Format: object with fields:
- probability - float (between 0 and 1), the probability that any Shelf Mushrooms will be placed for a given feature
Added poplar_foliage_placer Foliage Placer Type
- Places Leaf blocks for Poplar trees in a rhombus shape in one of two possible directions
- Format: Common fields for all foliage placers plus:
- height - int provider (between 5 and 16), the height of the foliage
- side_hole_chance - float (between 0.0 and 1.0), the chance for blocks to be randomly removed at the edge of the foliage
Added poplar_trunk_placer Trunk Placer Type
- Places Log blocks for Poplar trees in a straight shape with branches by the start of the foliage
- Format: Common fields for all trunk placers plus:
- trunk_height_above_branches - int provider (between 0 and 8), the height of the trunk above the branches
- branch_amount - int provider (between 1 and 4), the amount of branches to create by the foliage
Placement Modifiers
Added minecraft:cuboid
Repeats a feature in a cuboid shape.
- Added fields:
- xz_size - int provider (between 1 and 16), the size of the cuboid along x and z axes
- y_size - int provider (between 1 and 16), the size of the cuboid along the y-axis
- include_interior - optional boolean, whether to place interior blocks of the cuboid
- If omitted, defaults to true
- include_edges - optional boolean, whether to place edge blocks of the cuboid
- Setting this to false generates a somewhat "rounded" cuboid
- If omitted, defaults to true
Added minecraft:random_chance
Gates the feature being placed behind a random chance.
- Format: object with fields:
- chance - float (between 0 and 1), the chance that the feature gets placed
Added minecraft:randomly_selected
Randomly selects a Placement Modifier from a list and delegates placement to it.
- Format: object with fields:
- placements - non-empty list of Placement Modifiers to pick from
Changed minecraft:offset (renamed from minecraft:random_offset)
- Format changes:
- Removed fields xz_spread and y_spread
- Added fields x, y, z - integer providers (between -16 and 16), the axis-specific offset
Block State Providers
Block State Providers can now be defined as stand-alone types in the worldgen/block_state_provider registry and referenced by using a namespaced string for a field that expects a Block State Provider.
An inline Block State definition is now an accepted shorthand form for a minecraft:simple block state provider providing that state. The Block State has to be in the form of an object with fields, a shorthand Block ID is not allowed.
Renamed Provider Types
The following providers types have been renamed:
- minecraft:dual_noise_provider renamed to minecraft:dual_noise
- minecraft:noise_provider renamed to minecraft:noise
- minecraft:noise_threshold_provider renamed to minecraft:noise_threshold
- minecraft:randomized_int_state_provider renamed to minecraft:randomized_int
- minecraft:rule_based_state_provider renamed to minecraft:rule_based
- minecraft:simple_state_provider renamed to minecraft:simple
- minecraft:weighted_state_provider renamed to minecraft:weighted
Added minecraft:copy_properties
Copies common Block State properties from the Block at the evaluated position to the resulting state
- Format: object with fields:
- source - Block State Provider, the Block State which the copied properties are copied on top of
- Only properties common between both the source and the target blocks will be copied
- source - Block State Provider, the Block State which the copied properties are copied on top of
Added minecraft:random_block
Returns the default block state for a randomly chosen block.
- Format: object with fields:
- blocks: Block ID, list of Block IDs, or hash-prefixed Block Tag, the set of blocks to randomly pick from
Changed minecraft:rotated
Now works on any block with axis or facing properties.
- Format changes:
- Changed field state - now a Block State Provider
- Added field direction - optional direction, the direction to set
- If omitted, a random direction is chosen
Changed minecraft:rule_based
- If a rule yields no result, the following rules will be evaluated
- If no rule or fallback yields a result, will now also yield no result
Noise Settings
- The surface_rule field has been renamed to material_rule
- Format: inline Material Rule or Material Rule ID reference
- The final_density field no longer has the beardifier Density Function implicitly added to the final result
- Renamed preliminary_surface_level to chunk_surface_level
- This Density Function is no longer implicitly interpolated across the entire chunk
- The aquifers_enabled field has been replaced by an optional aquifers object:
- If not present, no aquifers will be generated
- Fields:
- barrier - Density Function, moved from noise_router.barrier
- fluid_level_floodedness - Density Function, moved from noise_router.fluid_level_floodedness
- fluid_level_spread - Density Function, moved from noise_router.fluid_level_spread
- lava - Density Function, moved from noise_router.lava
- surface_level - Density Function, duplicated from noise_router.preliminary_surface_level
- exclusion - Density Function, any aquifer cell where this value is positive will have no fluid
- The ore_veins_enabled field has been removed, and replaced by the minecraft:ore_vein Material Rule
- The following fields from noise_router have been moved:
- barrier, fluid_level_floodedness, fluid_level_spread, lava - moved into aquifers field
- vein_toggle, vein_ridged, vein_gap - moved into the minecraft:ore_vein Material Rule
- Removed noise.size_horizontal and noise.size_vertical fields, these are now specified in the interpolated density function
- Added optional debug_functions field - list of objects with fields, Density Function values to show in the chunk_generation_stats debug entry
- Fields:
- label - string, label to identify this Density Function
- function - Density Function, the Density Function to compute and show at the player position
- If not specified, no density function values will be shown
- Fields:
Spawn Target
The spawn_target field has been updated to allow use of any Density Function, instead of just a subset of those defined within the noise_router field.
The suitability of a candidate spawn position is determined by evaluating, in some arbitrary n-dimensional space, the squared Euclidean distance to a set of target hypercubes.
For example, one axis might be temperature and the second erosion - and suitability determined by distance to the square between temperature=0.1, erosion=0.2 and temperature=0.3, erosion=0.5. This would prefer any candidate spawn within those ranges equally, while penalizing candidate spawns very far out of that range.
Format: list of target hypercubes
- Target format: map between Density Function ID and a range on that axis:
- Range is specified as one of:
- Float, an exact target value
- Array of 2 floats, a range of target values in form [min, max]
- An object with fields:
- min - float, the minimum value of the target range
- max - float, the maximum value of the target range
- Range is specified as one of:
Material Rules
Material Rule Registry
A new data-driven registry has been introduced, loaded from data/<namespace>/worldgen/material_rule/<id>.json.
Elements in this registry define a pipeline for selecting what base block to place in the world at a given position.
The format is identical to that which was formerly written in the surface_rule field within Noise Settings files, with the following extensions:
- Material Rules can now be specified either inline (as previously), or as an ID reference to an element in the worldgen/material_rule registry
- Material Conditions can also now be specified as an ID reference to an element in the worldgen/material_condition registry
Material Condition Registry
A new data-driven registry has been introduced, loaded from data/<namespace>/worldgen/material_condition/<id>.json.
Elements in this registry define a condition that can be referenced within a Material Rule pipeline (e.g. testing biome or surface depth).
The format is identical to that which was formerly written within the condition Material Rule type, with the following extension:
- Material Conditions can also now be specified as an ID reference to an element in the worldgen/material_condition registry
Added minecraft:ore_vein
- Format: object with fields:
- ore_block - Block State, the ore block to place
- raw_ore_block - Block State, the raw ore block to place
- filler_block - Block State, the filler block to place
- raw_ore_chance - float between 0 and 1, the probability for a raw_ore_block to be placed instead of an ore_block
- density - Density Function, the probability between 0 and 1 for the ore vein to replace a block
- If 0 or lower, no block will be replaced
- richness - Density Function, the probability between 0 and 1 for ore_block or raw_ore_block to be placed (as opposed to filler_block)
- If 0 or lower, all blocks will be filler_block
- If 1 or greater, no blocks will be filler_block
- filler_gap - Density Function, acts as an override to richness: if positive, filler_block will always be placed
Noises
The format of Noises (defined in the worldgen/noise registry, or inline in noise-based Block State Providers) has been updated.
Noises define a fractal Brownian motion (fBm) configuration with the following properties:
- Produces output values (approximately) fitting a normal distribution
- Unless otherwise specified, fits the output amplitude to [-1; 1]
- Due to the normal distribution, in practice this means that 99.7% of all samples will fit in that range - but values may still be encountered outside of this range
- Parameterized by persistence=0.5, lacunarity=2.0
- i.e. between each octave, the amplitude is halved and the frequency doubled
- Has stable seeding such that an octave can be boosted, muted, or added without affecting the rest of the octaves
- Renamed firstOctave to base_octave
- Added base_amplitude - positive float, a scale factor to apply to the noise output
- If not specified, defaults to 1.0
- Added octave_count - integer between 1 and 32, the number of octaves to sample
- Added normalize - boolean, or "legacy", controls how the output amplitude should be normalized
- If true, base_amplitude is the expected amplitude of the output (i.e. 99.7% of all samples in [-base_amplitude; base_amplitude])
- If false, base_amplitude is the amplitude of the first octave
- If "legacy", inherits the same normalization behavior as expressed by the previous format
- This would generally fit to a range smaller than expected
- If not specified, defaults to true
- Note: normalization is not affected by the amplitude_modifiers field - as such, modifying the amplitude of a single octave will not affect the amplitude of others
- Renamed amplitudes to amplitude_modifiers - list of floats, a scaling factor to apply to each octave
- The number of elements in this list must match octave_count
- As described above, this scaling factor bypasses normalization and will affect the output amplitude
- This field is no longer required - if not specified, defaults to all 1.0
Density Functions
- Density Functions and noises are no longer evaluated with double-precision floating point values, but instead with single-precision
- This affects all intermediate steps, not just the final result
Developer's Note: _We are aware that the details of floating point rounding have been used in some Data Packs, and this change may affect specific configurations. We have introduced alternatives for the use-cases that we are aware of, but please do share with us on feedback.minecraft.net or in the feedback Discord if you encounter use-cases that are no longer possible to support.
Changed minecraft:constant
- argument has been renamed to value
Changed minecraft:noise
The following fields have been introduced:
- shift_x - optional Density Function, a domain warp to apply on x
- If not specified, no warping will be applied (equivalent to 0)
- shift_y - optional Density Function, a domain warp to apply on y
- If not specified, no warping will be applied (equivalent to 0)
- shift_z - optional Density Function, a domain warp to apply on z
- If not specified, no warping will be applied (equivalent to 0)
Removed minecraft:shifted_noise
- Replaced by minecraft:noise
Changed minecraft:add, minecraft:mul, minecraft:min, and minecraft:max
- argument1 has been renamed to left
- argument2 has been renamed to right
Changed minecraft:abs, minecraft:square, minecraft:cube, minecraft:half_negative, minecraft:quarter_negative, minecraft:squeeze, minecraft:interpolated, minecraft:flat_cache, minecraft:cache_2d, minecraft:cache_once, minecraft:cache_all_in_cell, and minecraft:blend_density
- argument has been renamed to input
Changed minecraft:shift_a, minecraft:shift_b, and minecraft:shift
- argument has been renamed to noise
Added minecraft:sub
Performs subtraction between two arguments.
- Format: object with fields:
- left - Density Function, the left-hand side of the operation
- right - Density Function, the right-hand side of the operation
Added minecraft:div
Performs division between two arguments.
- Format: object with fields:
- left - Density Function, the left-hand side of the operation
- right - Density Function, the right-hand side of the operation
Changed minecraft:reciprocal (renamed from minecraft:invert)
- No changes to the format
Added minecraft:negate
Negates the input.
- Format: object with fields:
- input - Density Function, the function to negate
Added minecraft:lerp
Performs (unclamped) linear interpolation between two arguments based on an alpha.
- Format: object with fields:
- alpha - Density Function, the interpolation factor (0=first, 1=second)
- Any value outside of [0; 1] will extrapolate
- first - Density Function, the value at alpha=0
- second - Density Function, the value at alpha=1
- alpha - Density Function, the interpolation factor (0=first, 1=second)
Added minecraft:floor, minecraft:round, minecraft:ceil, and minecraft:truncate
Rounds the input value to an integer multiple of a given function in a type-dependent direction:
- floor rounds towards negative infinity
- round rounds towards the nearest integer (ties round up)
- ceil rounds towards positive infinity
- truncate rounds towards 0
Format: object with fields:
- input - Density Function, the input to round
- multiple - Density Function, the output will be rounded to an integer multiple of this value
- If not specified, defaults to constant 1 (i.e. rounding to integer)
Added minecraft:pow
Raises the given base value to an exponent.
- Format: object with fields:
- base - Density Function, the base value
- exponent - Density Function, the exponent
Added minecraft:sqrt
Computes the square root of the given input.
- Format: object with fields:
- input - Density Function, the value for which to compute the square root
Added minecraft:log
Computes the natural logarithm of the given input.
- Format: object with fields:
- input - Density Function, the value for which to compute the natural logarithm
Added minecraft:sign
Computes the sign of the input:
- If the input is positive, returns 1
- If the input is 0, returns 0
- If the input is negative, returns -1
Format: object with fields:
- input - Density Function, the value of which to compute the sign
Added minecraft:distance_to_point
Computes the distance to a fixed point using the specified distance function.
- Format: object with fields:
- point - array of 3 integers in form [x, y, z], the point to compute distance to
- metric - one of:
- euclidean - i.e. sqrt(dx^2 + dy^2 + dz^2)
- euclidean_squared - i.e. dx^2 + dy^2 + dz^2
- manhattan - i.e. abs(dx) + abs(dy) + abs(dz)
- chebyshev - i.e. max(abs(dx), abs(dy), abs(dz))
Changed minecraft:gradient (renamed from minecraft:y_clamped_gradient)
- Format: object with fields:
- axis - x, y, or z, the axis over which to define this gradient
- tiling - one of:
- clamp_to_edge - outside the gradient boundaries, the value at the nearest boundary will be used
- repeat - the gradient will be repeated outside its boundaries
- mirrored_repeat - the gradient will be repeated such that odd repetitions are mirrored, ensuring continuity between repetitions
- from_coordinate - int, the coordinate at which the gradient starts
- to_coordinate - int, the coordinate at which the gradient ends
- Must not be equal to from_coordinate
- from_value - float, the value at which the gradient starts
- to_value - float, the value at which the gradient ends
Added minecraft:slice
Removes a dimension from the input domain by taking a "slice" along an axis with a specific coordinate. For example, with axis=y and coordinate=0, a slice will be taken along the XZ plane, with all values sampled at y=0.
- Format: object with fields:
- axis - x, y, or z, the axis to remove
- coordinate - int, the fixed coordinate to be passed to the input function
- input - Density Function, the input function
Added minecraft:beardifier
Outputs the structure bearding density. Generally summed together with the base terrain density to produce ground below, carve air around, or bury structures.
Format: no fields
Changed minecraft:end_outer_islands (renamed from minecraft:end_islands)
No longer computes the density of the main island.
Changed minecraft:interpolated
- Added fields:
- cell_size_xz - positive int, size in blocks of the interpolation grid cells on the XZ axes
- cell_size_y - positive int, size in blocks of the interpolation grid cells on the Y axis
Changed minecraft:cache (renamed from minecraft:cache_once)
- No format change
Removed minecraft:cache_2d, minecraft:cache_all_in_cell, and minecraft:flat_cache
- May be replaced with minecraft:cache
- minecraft:slice may be used to always pick Y=0, as formerly handled by minecraft:flat_cache
Structure Pool Elements
Changed minecraft:feature_pool_element
- Can now connect to Jigsaw blocks with any target name, instead of just minecraft:bottom
Structure Placements
Added minecraft:dimension_origin
- Places a single instance of the structure at the dimension origin
- The dimension origin is defined as the spawn_target for noise settings based dimensions, otherwise Chunk (0, 0)
- No additional fields
Block Predicates
Added minecraft:height_range
Checks the height of the position against a given range.
- Format: object with fields:
- min_inclusive - Vertical Anchor, the minimum height required
- max_inclusive - Vertical Anchor, the maximum height required
Added minecraft:volume_match
Checks that every block in a volume matches a given Block Predicate.
- Format: object with fields:
- min - list of 3 integers in range -16 to 16, the lower corner of the volume as an offset from the test position
- max - list of 3 integers in range -16 to 16, the upper corner of the volume as an offset from the test position
- match - Block Predicate to test on each position
Vertical Anchors
- Added a new option for Vertical Anchors:
- relative_to_sea_level - specifies an offset to the sea level of the dimension
Rule Tests
These are the predicates used by ore Features (targets[].target), and rule Structure Processors (rules[].input_predicate and rules[].location_predicate).
Added minecraft:height_match
- Checks the y-level of a block, returning true only if it's higher than or equal to min_inclusive and lower than or equal to max_inclusive
- Format: object with fields:
- min_inclusive - int, the minimum y value of allowed blocks (inclusive)
- max_inclusive - int, the maximum y value of allowed blocks (inclusive)
Added minecraft:all_of
- Checks a list of Rule Tests for whether all of them return true for the same block
- Format: object with fields:
- rules - list of Rule Tests, the rules to test the block against
Added minecraft:any_of
- Checks a list of Rule Tests for whether any of them returns true for the same block
- Format: object with fields:
- rules - list of Rule Tests, the rules to test the block against
Added minecraft:not
- Checks a Rule Test for whether it returns false for a given block
- Format: object with fields:
- rule - Rule Test, the rule to test the block against
Carvers
- The worldgen/configured_carver registry has been renamed to worldgen/carver
Changed minecraft:cave
- All fields previously under the config field have been inlined to the top-level
- Added count field - non-negative Int Provider, the number of Cave tunnels to create from a seed chunk
- Renamed yScale to room_vertical_radius_multiplier
- Added optional start_vertical_radius_multiplier field - Float Provider, acts as a multiplier for the vertical radius of the first segment in each tunnel
- If not specified, defaults to 1.0
- Added thickness field - non-negative Float Provider, acts as a multiplier for the radius of carved tunnels
- Added optional weird_thickness_bias field - Boolean
- If true, thickness will be multiplied by, with a 10% chance: random(0, 1) * random(0, 3) + 1
- If not specified, defaults to false
- Removed replaceable field, carvers will replace any block (excluding features)
- Removed lava_level field, fluids are now always selected by the aquifer or sea_level configuration in the dimension
- Removed debug_settings field
Changed minecraft:canyon
- All fields previously under the config field have been inlined to the top-level
- Renamed and moved yScale to shape.y_scale
- Removed replaceable field, carvers will replace any block (excluding features)
- Removed lava_level field, fluids are now always selected by the aquifer or sea_level configuration in the dimension
- Removed debug_settings field
Removed minecraft:nether_cave
- Replaced by minecraft:cave
Int Providers
Added minecraft:very_biased_to_bottom Int Provider Type
Picks a random value in the provided range, with a quadratic bias towards the minimum value.
- Format: object with fields:
- min_inclusive - integer, the minimum selected value (inclusive)
- max_inclusive - integer, the maximum selected value (inclusive)
Villager Trades
- The given_item_modifiers field has been renamed to given_item_modifier
- Note: unlike other fields of type minecraft:item_modifier, this field does not support namespaced elements or tag IDs
- The max_uses and xp fields now require an inline value of a minecraft:context_int_provider type
- The count field in the wants and additional_wants structures now require an inline value of a minecraft:context_int_provider type
- The reputation_discount field now requires an inline value of a minecraft:context_float_provider type
Tags
Block Tags
- Added #poplar_logs - all Poplar log blocks
- Added #wool_stairs - all Wool Stairs blocks
- Added #wool_slabs - all Wool Slabs blocks
- Added #cushion_uses_collision_shape - Blocks where Cushion placement raycasts against collision shape instead of interaction shape
- Added #wool_stairs and #wool_slabs to #dampens_vibrations
- Added #ores - collection tag containing all types of ores
- Added #skulls - collection tag containing all head and skull blocks
- Added #blocks_motion - collection tag containing all blocks that are considered to block motion in some way
- Added #blocks_motion_no_leaves - collection tag containing all blocks that are considered to block motion in some way, but excluding leaf blocks
- Added #entities_can_teleport_to - blocks that entities are allowed to teleport to
- Added #blocks_dolphin_jump - blocks that Dolphins cannot move through when jumping out of water
- Added #ice_melts_when_destroyed_above - blocks that causes ice to melt into water if the ice is destroyed when placed above them
- Added #blocks_motion_in_heightmap - blocks that are taken into account for the motion_blocking heightmap
- Added #blocks_motion_in_heightmap_no_leaves - blocks that are taken into account for the motion_blocking_no_leaves heightmap
- Added #blocks_lava_fire_spread - blocks that block the creation of fire by lava
- Added #blocks_fluid_flow - blocks that block fluid flow
- Added #washed_away_by_fluids - blocks that break when a fluid flows through them
- Added #required_for_poplar_leaf_ambience - blocks which can satisfy requirement for Poplar leaves to make ambient sound
- Added #turns_into_dirt_path - blocks that turn into Dirt Path blocks when a Shovel is used for path making
- Added #sculk_growth_inhibitors - blocks which keep Sculk from spreading when more than 2 are in the 8x2x8 area around it
- Added #uncarvable - blocks that Carvers can never carve
- Added #cats_can_sit_on - blocks which Cats can randomly sit on
- Added #cats_can_lie_on - blocks which Cats can randomly lie on
- Added #speeds_up_zombie_villager_curing - blocks which can increase Zombie Villager curing time if placed nearby
- Added #villagers_can_sleep_on_bed - Bed blocks which Villagers can sleep on
- Added #villager_babies_can_jump_on_bed - Bed blocks which Villager kids can jump on
- Added #height_specific_ore_replaceables - blocks which Ore Features will turn into Stone Ores if found above y-level 0 and into Deepslate Ores if found below y-level 8
- Added #concrete_stairs - all Concrete Stairs blocks
- Added #concrete_slabs - all Concrete Slabs blocks
- Added #dangerous_for_teleportation - collection tag defining blocks that are dangerous to teleport on
- Added #cat_does_not_teleport_to - blocks that Cats do not teleport to
- Added #enderman_does_not_teleport_to - blocks that Endermen do not teleport to
- Added #shulker_does_not_teleport_to - blocks that Shulkers do not teleport to
- Added #consumable_does_not_teleport_to - blocks that entities do not teleport to when they consume food that teleports randomly when eaten
- Added #nether_portal_frame - blocks that can be used to create a Nether Portal
- Added #conduit_effect_block - blocks that can be used to build a Conduit
- Removed #overworld_carver_replaceables and #nether_carver_replaceables
Item Tags
- Added #poplar_logs - all Poplar log items
- Added #wool_stairs - all Wool Stairs items
- Added #wool_slabs - all Wool Slabs items
- Added #mushrooms - all Mushroom items
- Added #ores - collection tag containing all types of ores
- Added #douses_campfires - items that can douse a lit Campfire block
- Added #concrete_stairs - all Concrete Stairs items
- Added #concrete_slabs - all Concrete Slabs items
- Added #cloneable_maps - Filled Map plus all Explorer Map items and Buried Treasure Maps, used as the input to the map_cloning recipe
- Added #extendable_maps - maps that can be zoomed out with paper, either in a Crafting Table or at a Cartography Table
- Added #brewing_potion_inputs - items that can be placed in a Brewing Stand potion slot, regardless of whether they are brewing recipe inputs
- Added #furnace_fuel_bottom_takeable - items that can be taken out of furnace by a hopper attached to the bottom face
- Removed #brewing_fuel - the brewing_fuel item component is now used to identify brewing fuels
Biome Tags
- Added tags for biomes which will generate the respective Abandoned Camp variant:
- #has_structure/abandoned_camp_bamboo_jungle
- #has_structure/abandoned_camp_birch_forest
- #has_structure/abandoned_camp_cherry_grove
- #has_structure/abandoned_camp_dappled_forest
- #has_structure/abandoned_camp_flower_forest
- #has_structure/abandoned_camp_forest
- #has_structure/abandoned_camp_meadow
- #has_structure/abandoned_camp_old_growth_birch_forest
- #has_structure/abandoned_camp_old_growth_pine_taiga
- #has_structure/abandoned_camp_old_growth_spruce_taiga
- #has_structure/abandoned_camp_savanna
- #has_structure/abandoned_camp_pale_garden
- #has_structure/abandoned_camp_snowy_taiga
- #has_structure/abandoned_camp_sparse_jungle
- #has_structure/abandoned_camp_swamp
- #has_structure/abandoned_camp_taiga
- #has_structure/abandoned_camp_windswept_forest
- #has_structure/abandoned_camp_wooded_badlands
Entity Type Tags
- Added #cannot_be_dismounted_by_item_usage - entities which cannot be dismounted by items
Damage Type Tags
- Added #no_wolf_retaliation - damage types that should not cause tamed Wolves to attack their source in order to defend their owner
Potion Tags
- Added #douses_fire - Potions that douse Fire blocks when they hit something
- Added #hurts_water_sensitive_entities - Potions that will hurt entities which are sensitive to water (e.g. Endermen)
- Added #extinguishes_entities - Potions that can extinguish entities
- Added #rehydrates_axolotls - Potions that will cause Axolotls to rehydrate
Structure Tags
- Added #abandoned_camp - all variants of Abandoned Camps
- Renamed #on_woodland_explorer_maps to #on_woodland_mansion_maps
- Renamed #on_ocean_explorer_maps to #on_ocean_monument_maps
- Renamed #on_jungle_explorer_maps to #on_jungle_pyramid_maps
- Renamed #on_swamp_explorer_maps to #on_swamp_hut_maps
- Renamed #on_trial_explorer_map to #on_buried_trial_chambers_map
Fluid Tags
- Added #axolotl_try_find_liquid - all fluids Axolotls are trying to find
- Added #dolphin_try_find_liquid - all fluids Dolphins are trying to find
- Added #frog_try_find_land_near_liquid - all fluids Frogs are trying to find land near to
- Added #entity_floatable - all fluids that make entities float
Particles
Added minecraft:red_poplar_leaves
- Falls from Red Poplar Leaves blocks
- Has no fields
Added minecraft:orange_poplar_leaves
- Falls from Orange Poplar Leaves blocks
- Has no fields
Added minecraft:yellow_poplar_leaves
- Falls from Yellow Poplar Leaves blocks
- Has no fields

Resource Pack Versions 89.0 through 97.1
Palette Textures
- All armor trim palette textures have been moved from textures/trim/color_palettes/ to textures/palettes/trim/
- The base armor trim palette texture has instead been moved to textures/palettes/trim_base.png
- Entity armor trim material textures are no longer generated into the minecraft:trims atlas with paletted_permutations, but rather generated on-demand
- The base palette ID is now specified in a new palette mcmeta section field
- This section has a single field: base_palette - the base Palette Texture ID to remap from
- Item armor trim material textures are still generated with paletted_permutations as before
paletted_permutations Sprite Source
- Palette Texture locations in the palette_key and permutations fields have been replaced by Palette Texture IDs - i.e. <namespace>:<path> now resolves to <namespace>:textures/palettes/<path>.png
Equipment Assets
A new optional trim_overrides field can be used to swap out the texture or palette used with specific trim materials or patterns for a given equipment asset. This replaces functionality formerly supported by override_armor_assets in the trim material, as well as custom atlas overrides.
- Format: list of override entries with fields:
- when - object with fields, the material and/or pattern to match
- material - optional Trim Material ID, the material to match (if specified)
- pattern - optional Trim Pattern ID, the pattern to match (if specified)
- At least one of material or pattern must be specified
- If both are specified, both must match for the entry to be used
- texture - optional trim pattern asset ID, a replacement texture to use if this entry matches
- Textures are specified in the same format as asset_id
- If not specified, the default texture for the pattern will be used
- palette - optional palette ID, a replacement palette to use if this entry matches
- If not specified, no palette remapping will be applied to the texture
- The first matching entry will always be selected
- At least one of texture or palette must be defined
- when - object with fields, the material and/or pattern to match
Block Sprites
- Added new Block textures:
- block/orange_poplar_leaves.png
- block/poplar_door_bottom.png
- block/poplar_door_top.png
- block/poplar_log.png
- block/poplar_log_top.png
- block/poplar_planks.png
- block/poplar_sapling.png
- block/poplar_shelf.png
- block/poplar_sign.png
- block/poplar_trapdoor.png
- block/red_poplar_leaves.png
- block/red_shrub.png
- block/shelf_mushroom_stage0.png
- block/shelf_mushroom_stage1.png
- block/straw_bed.png
- block/stripped_poplar_log.png
- block/stripped_poplar_log_top.png
- block/poplar_hanging_sign.png
- block/yellow_poplar_leaves.png
Item Sprites
- Added new Item textures:
- item/abandoned_camp_map.png
- item/black_cushion.png
- item/blue_cushion.png
- item/brown_cushion.png
- item/buried_ancient_city_map.png
- item/buried_mineshaft_map.png
- item/buried_treasure_map.png
- item/buried_trial_chambers_map.png
- item/cyan_cushion.png
- item/desert_pyramid_map.png
- item/desert_village_map.png
- item/gray_cushion.png
- item/green_cushion.png
- item/jungle_pyramid_map.png
- item/light_blue_cushion.png
- item/light_gray_cushion.png
- item/lime_cushion.png
- item/magenta_cushion.png
- item/ocean_monument_map.png
- item/orange_cushion.png
- item/pink_cushion.png
- item/plains_village_map.png
- item/poplar_boat.png
- item/poplar_chest_boat.png
- item/poplar_door.png
- item/poplar_hanging_sign.png
- item/poplar_sign.png
- item/purple_cushion.png
- item/red_cushion.png
- item/savanna_village_map.png
- item/snowy_village_map.png
- item/swamp_hut_map.png
- item/taiga_village_map.png
- item/warm_ocean_ruins_map.png
- item/white_cushion.png
- item/woodland_mansion_map.png
- item/yellow_cushion.png
- Removed Item textures:
- item/filled_map_markings.png
- item/light.png
UI Sprites
- Added new UI textures:
- gui/hanging_signs/poplar.png
- gui/signs/poplar.png
- gui/realms/friends.png
- gui/realms/minigames.png
- gui/realms/private_server.png
- gui/sprites/widget/realms_button.png
- gui/sprites/widget/realms_button_disabled.png
- gui/sprites/widget/realms_button_highlighted.png
Entity Textures
- Added new Entity textures:
- entity/boat/poplar.png
- entity/chest_boat/poplar.png
- entity/cushion/black_cushion.png
- entity/cushion/blue_cushion.png
- entity/cushion/brown_cushion.png
- entity/cushion/cyan_cushion.png
- entity/cushion/gray_cushion.png
- entity/cushion/green_cushion.png
- entity/cushion/light_blue_cushion.png
- entity/cushion/light_gray_cushion.png
- entity/cushion/lime_cushion.png
- entity/cushion/magenta_cushion.png
- entity/cushion/orange_cushion.png
- entity/cushion/pink_cushion.png
- entity/cushion/purple_cushion.png
- entity/cushion/red_cushion.png
- entity/cushion/white_cushion.png
- entity/cushion/yellow_cushion.png
Map Sprites
- Added new Map textures:
- abandoned_camp.png
- ancient_city.png
- desert_pyramid.png
- mineshaft.png
- warm_ocean_ruins.png
- The following Icons have been updated in order to show player rotation on the map:
- player.png
- player_off_limits.png
- player_off_map.png
Block Crumbling Overlay Textures
- Added new block crumbling overlay textures that replace the existing ones for translucent blocks rendered with OIT:
- block/destroy_oit_stage_0.png
- block/destroy_oit_stage_1.png
- block/destroy_oit_stage_2.png
- block/destroy_oit_stage_3.png
- block/destroy_oit_stage_4.png
- block/destroy_oit_stage_5.png
- block/destroy_oit_stage_6.png
- block/destroy_oit_stage_7.png
- block/destroy_oit_stage_8.png
- block/destroy_oit_stage_9.png
Sounds
- Added new sound events:
- block.shelf_mushroom.break
- block.shelf_mushroom.fall
- block.shelf_mushroom.place
- block.shelf_mushroom.step
- block.shelf_mushroom.bounce
- block.poplar_leaves.ambient
- block.straw_bed.break
- block.straw_bed.break_leave
- block.straw_bed.step
- block.straw_bed.place
- block.straw_bed.hit
- block.straw_bed.fall
- block.poplar_leaves.break
- block.poplar_leaves.fall
- block.poplar_leaves.place
- block.poplar_leaves.step
- block.poplar_leaves.hit
- block.red_shrub.break
- block.red_shrub.place
- entity.cushion.break
- entity.cushion.place
- entity.cushion.get_up
- entity.cushion.sit
Particles
- Added new Particle textures:
- orange_poplar_1.png
- orange_poplar_2.png
- orange_poplar_3.png
- orange_poplar_4.png
- red_poplar_1.png
- red_poplar_2.png
- red_poplar_3.png
- red_poplar_4.png
- yellow_poplar_1.png
- yellow_poplar_2.png
- yellow_poplar_3.png
- yellow_poplar_4.png
- shelf_mushroom_particle.png
- straw_bed_particle.png
Item Models
- Added optional shade_direction_override to block model elements
- Accepted values are cardinal directions (down, up, north, south, west, east)
- When set, this overrides directional shading for the element regardless of face orientation
- Removed shade from block model elements
- Use shade_direction_override: "up" to get the previous shade: false behavior
Tint Sources
- Removed minecraft:map_color
- The minecraft:map_color component it read no longer exists
Shaders & Post-process Effects
- terrain.vsh and terrain.fsh shaders are refactored to support multi-draw
- Some of the members in Globals and DynamicTransforms are shuffled to use less memory for those uniform blocks
Developer's Note: Although it is possible in Resource Packs, overriding Core Shaders is considered as unsupported and not an intended Resource Pack feature. These shaders exist as part of the internal implementation of the game, and as such, may change at any time as the game's internals evolve. We understand that overriding Core Shaders is used for very cool Resource Pack features, many of which lack supported alternatives. We would like to provide better, supported alternatives in the future.
Order-independent Transparency (OIT)-related Shader Changes
- Added new shaders to support order-independent transparency:
- core/blit_depth.fsh
- core/oit_composite.fsh
- core/oit_depth_bounds_cull.fsh
- include/oit.glsl
- include/oit_add_transmittance.glsl
- include/oit_common.glsl
- include/oit_depth_bounds.glsl
- include/oit_depth_sample.glsl
- include/oit_sample.glsl
- Extracted the texture sampling logic from core/terrain.fsh into include/texture_sampling.glsl
- Renamed the following core shaders:
- core/rendertype_clouds.vsh → core/clouds.vsh
- core/rendertype_clouds.fsh → core/clouds.fsh
- core/rendertype_world_border.vsh → core/world_border.vsh
- core/rendertype_world_border.fsh → core/world_border.fsh
- Updated core shaders to support order-independent transparency
- Introduced new defines:
- OIT - If present, indicates that OIT is enabled
- OIT_DEPTH_BOUNDS - If present, indicates that the depth bounds pass is being executed
- OIT_TRANSMITTANCE - If present, indicates that the transmittance pass is being executed
- OIT_ACCUMULATE - If present, indicates that the accumulate pass is being executed
- OIT_ALPHA_ONLY - If present, indicates that either the depth bounds or transmittance pass is being executed
- OIT_ADDITIVE - If present, indicates that the OIT algorithm should emulate additive blending for the executing pipeline
- OIT_WAVELET_RANK - An integer internal to the OIT algorithm
- OIT_COEFF_COUNT - An integer internal to the OIT algorithm
- OIT_COEFF_ATTACHMENT_COUNT - An integer internal to the OIT algorithm
- RENDERPEARL_DEPTH_IS_ZERO_TO_ONE - If present, indicates that the current rendering backend uses the depth range of [0, 1], it is available globally to all shaders independently of the OIT setting
- RENDERPEARL_EXPLICIT_DEPTH_INVARIANCE - If present, indicates that an OIT shader should explicitly output a depth value because a device it is running on can produce a slightly different implicit value
- Affected shaders:
- core/block.fsh
- core/block.vsh
- core/clouds.fsh
- core/clouds.vsh
- core/entity.fsh
- core/entity.vsh
- core/item.fsh
- core/item.vsh
- core/particle.fsh
- core/position_color.fsh
- core/rendertype_beacon_beam.fsh
- core/rendertype_clouds.fsh
- core/rendertype_crumbling.fsh
- core/rendertype_entity_shadow.fsh
- core/rendertype_lightning.fsh
- core/rendertype_lines.fsh
- core/rendertype_world_border.fsh
- core/terrain.fsh
- core/terrain.vsh
- core/text.fsh
- core/world_border.fsh
- core/world_border.vsh
- Introduced new defines:
- Removed the old transparency post chain:
- post_effect/transparency.json
- shaders/post/transparency.fsh
New Core Shaders
- core/integrate_depth.fsh was added and is used to integrate the "3d hud" and always-on-top gizmo depth buffers into the main depth buffer
Removed Core Shaders
- core/text_background.fsh and core/text_background.vsh were removed and text background in Text Display Entities is now rendered using the text shaders
Shader Compilation Changes
- Shaders are now compiled by ShaderC when using OpenGL as well, identically to when using Vulkan
- Shader includes are now handled by ShaderC using #include instead of #moj_import
- Shader inputs and outputs must have a location specified in shader source
- Vertex input names must still match expected names
- Vertex outputs are matched to fragment inputs solely by location, the name is now ignored
- Introduced new define RENDERPEARL_INSTANCE_INDEX_INCLUDES_BASE_INSTANCE - A boolean indicating if gl_InstanceIndex follows Vulkan or OpenGL (gl_InstanceID) semantics
Developer's Note: Vertex inputs in previous versions using OpenGL were not allowed to specify a location. Compatibility can be preserved by only specifying locations when the "VULKAN" macro is defined.
Developer's Note: Vertex outputs and fragment inputs in previous versions were matched based on name alone. Compatibility can be preserved by continuing to use identical names.
Always-on Post Effect Support
- A resource pack can now define a minecraft:end_of_frame post effect
- It will be applied before other post effects, including the ones enabled by the new posteffect command
- This post effect is always on as long as the resource pack is loaded, and cannot be controlled by the posteffect command
- As usual with resource pack resources, in case of multiple packs defining this effect, the one from the last resource pack in the list will apply

Fixed bugs in 26.3
- MC-4 - Item drops sometimes appear at the wrong location
- MC-2157 - Particles emitted from dragon eggs when teleporting do not point in the correct direction
- MC-5269 - Updating a server's address in the multiplayer menu does not update its status
- MC-40597 - The interaction of the game's built-in fullscreen mode and macOS fullscreen can glitch the game window
- MC-44654 - Some entities' positions are not updated on the client when teleported
- MC-46421 - You cannot use Nether portals, End portals, and End gateways while in Spectator mode
- MC-51859 - The line spacing of text within all hover tooltips is larger between the first and second lines
- MC-58061 - Endermen can teleport onto signs
- MC-59810 - Cannot break blocks while sprinting on macOS
- MC-73162 - Breaking an entity that instantly breaks sometimes destroys the block behind it in Creative mode
- MC-90148 - When a player gets out of a boat, the other passenger's head remains rotated sideways
- MC-91006 - Some entities lose their name when placed or broken
- MC-96365 - Boats and rafts retain their rotational momentum after exiting and entering them
- MC-102732 - Arrows can visually bounce off of entities when barely missing them
- MC-102836 - Endermen can teleport to some dangerous places
- MC-102881 - Shulkers do not emit any particles when teleporting
- MC-106416 - Endermen and entities eating chorus fruit can teleport outside the world border and into powder snow
- MC-110989 - /spreadplayers considers signs to be valid blocks to be spread onto
- MC-112580 - Structure blocks' GUI does not pause the game in singleplayer
- MC-112744 - The Team NBT tag only exists for living entities
- MC-113006 - Items reeled in with fishing rods do not move smoothly but appear to teleport
- MC-116286 - /spreadplayers can spread entities on structure void
- MC-121278 - Key combinations are mapped to the US keyboard layout even if using another layout
- MC-121367 - The game doesn't use borderless fullscreen
- MC-121375 - The Command (⌘) key on macOS is displayed as "Win" in the Key Binds screen
- MC-122477 - Opening the chat sometimes appends the character the used key types to the message on Linux
- MC-122717 - Success messages for some commands include unaffected entities, unlike the command result
- MC-122731 - Camera movement stutters when turning in a boat
- MC-127939 - Several keys are displayed as "scancode.number" in the Key Binds menu
- MC-133407 - Key binds switch when upgrading from before 1.13 if not using a QWERTY keyboard
- MC-148541 - /spreadplayers can spread players to seagrass near the surface of the water
- MC-149058 - Using hotkeys to move items into the anvil UI appends the character the used key types to the new item name
- MC-151857 - The success message of /give when affecting multiple players uses the wrong string
- MC-154881 - Dropping an item from your hotbar at the same time as switching to another hotbar slot desyncs the second item
- MC-159283 - Terrain generation fails in progressively shrinking rings centered around the End's center
- MC-161885 - Many transparent things do not render behind slimes
- MC-161898 - Transparent particles make other particles behind them invisible
- MC-161926 - The block breaking animation is more transparent when mining ice or stained glass
- MC-162159 - Riding boats above bubble columns causes players to teleport up 2 blocks
- MC-168446 - Single dark oak and pale oak saplings accept bone meal despite not being able to grow
- MC-168653 - Mobs, particles, clouds, water and transparent blocks don't render behind the transparent parts of shulker bullets
- MC-174958 - /gamerule succeeds even when the value is not changed
- MC-175180 - The Silent NBT tag still doesn't make some entities fully silent
- MC-183446 - Endermen still avoid projectiles when riding minecarts or boats
- MC-187669 - The world border is too dark with the "Improved Transparency" option enabled
- MC-189953 - The Super key on macOS is displayed as "Win" in the Key Binds screen
- MC-190203 - Transparent and specially rendered blocks, entities, clouds, water and particles don't render behind wind charges, and charged creeper, wither and breeze armor
- MC-202197 - Entities' name tag background is rendered behind transparent things
- MC-206356 - The motion of falling blocks is visually slow
- MC-206540 - Increased input delay when riding an entity
- MC-210117 - Sculk sensors don't detect ice and snow melting
- MC-210584 - Water does not render behind items modified to use semi-transparent textures
- MC-210734 - Translucent blocks and other entities render over invisible spiders' eyes regardless of positions
- MC-212671 - Loot table entries of type tag with expand set to true do not apply loot functions to the items
- MC-214113 - Endermen and shulkers can teleport onto the Nether roof
- MC-218015 - Translucent blocks and other entities render over invisible endermen's eyes regardless of positions
- MC-218156 - Shipwrecks and ocean ruins can generate with empty buried treasure maps
- MC-222559 - Block hitboxes and entity hitboxes don't render behind semi-transparent entities
- MC-222818 - You can ignite TNT in Adventure mode
- MC-223321 - You can destroy turtle eggs by standing or jumping on them in spawn protection
- MC-223323 - You can trample farmland in spawn protection
- MC-223559 - Transparent blocks, particles, and clouds are not rendered behind semi-transparent marker armor stands
- MC-224528 - Two splash texts use curly single quotes (’) instead of apostrophes (')
- MC-227008 - Endermen constantly try to teleport when riding a vehicle under daylight
- MC-228273 - Goats do not move correctly after they are tempted during a long jump
- MC-229405 - The inside of boats blocks the rendering of most translucent objects with the "Improved Transparency" option enabled
- MC-229831 - Enchanting tables' GUI has three pixels in the top right corner that shouldn't be there
- MC-233888 - Pressing the Space or Enter keys to interact with elements results in the pressed key being executed again
- MC-236497 - The head rotations of passengers in boats are not correctly displayed for other players
- MC-237053 - Block breaking particles cannot be seen by other players
- MC-237165 - Block breaking sounds cannot be heard by other players
- MC-237679 - The head rotations of passengers in boats are constantly forced to turn in certain directions if the rider were to dismount the boat while moving left or right
- MC-239401 - items/light.png never appears in-game; is pointlessly referenced by other game assets
- MC-245030 - The "Bee buzzes" closed caption only appears when a bee buzzes for the first time
- MC-247034 - Particles produced from entities growing cannot be seen by other players
- MC-248600 - Particles produced from moving in powder snow cannot be seen by other players
- MC-248666 - Particles produced from dragon eggs teleporting cannot be seen by other players
- MC-249200 - Several entities constantly deviate visually from their actual positions on the client when teleported
- MC-252369 - Data packs can fail to load due to a feature cycle when one does not exist
- MC-252934 - Placing structures with paintings, item frames, or glow item frames logs Block-attached entity at invalid position: [BlockPosition]
- MC-253023 - Breaking paintings, item frames, or glow item frames cannot trigger sculk shriekers
- MC-254353 - A packet to remove the score is always broadcast when a score is reset
- MC-254370 - The entity_scores predicate type cannot check all possible scores
- MC-254547 - Villagers do not level up when exiting the world immediately after filling their experience bar
- MC-254661 - /schedule clear requires a namespace in its function argument
- MC-256073 - Miscolored pixel in tab_inventory.png
- MC-256096 - Some entities on a team can harm teammates that walk into them when friendly fire is disabled
- MC-256097 - Some entities on a team can harm their teammates when they explode when friendly fire is disabled
- MC-258347 - Endermen no longer create an extra trail of particles when teleporting
- MC-258579 - The player's head does not rotate with a delay from the camera in third person view while riding a vehicle
- MC-259512 - Horizontal camera rotation lags when riding
- MC-259583 - Brewing with a single bottle of dragon's breath does not return a glass bottle afterward
- MC-259812 - Block and item displays, beds, clouds, signs, shulker boxes, and semi-transparent blocks and entities don't render behind text displays
- MC-260780 - Shulker bullets always push fireballs south
- MC-263100 - Cave biomes interfere with relief on exploration maps
- MC-263708 - The Key Binds screen renders keypad keys the same as regular keys
- MC-264003 - Boats carrying players sometimes stop abruptly when sliding along ice
- MC-265423 - When villagers acquire enough experience to level up more than once, they only gain a single level
- MC-265584 - TNT dispensed in bubble columns with soul sand right under visually moves through blocks above
- MC-265743 - Entities, block entities, clouds and semi-transparent blocks are always rendered in front of text displays with see_through enabled
- MC-266231 - Mouse buttons above 8 can't be set as key binds
- MC-266429 - Holding Shift on macOS causes the hotbar scroll direction to reverse when scrolling with the mouse
- MC-267902 - The failure message of /random when the specified range is too large states an incorrect maximum for the range
- MC-268145 - cache_once density functions don't work
- MC-268155 - Rendering gaps in the world under specific conditions
- MC-268521 - The game window doesn't have a minimal width and height
- MC-269968 - Can't scroll with the mouse while holding Shift on macOS (except in the hotbar)
- MC-270706 - Trying to brew an uncraftable potion into a splash or lingering potion consumes the reagent but keeps the potion exactly as is
- MC-270970 - The player's camera shakes when attempting to step up blocks with a boat above them
- MC-271069 - Item entities appear to fly towards the player when picked up by a dolphin that isn't being rendered
- MC-271297 - /fillbiome doesn't fail when no changes are made
- MC-271723 - Translucent blocks and other entities render over invisible phantoms' eyes regardless of positions
- MC-271724 - Translucent blocks and other entities render over invisible breezes' eyes regardless of positions
- MC-272801 - Particles and translucent objects do not render when behind the ender dragon's death animation
- MC-273327 - The #convertable_to_mud block tag misspells "convertible" as "convertable"
- MC-273708 - Endermen taking environmental damage attempt to teleport when riding an entity
- MC-274924 - Angry endermen suffocating while in boats or minecarts can attack their target from really far away
- MC-275111 - Two animals in a boat look sideways instead of at the player when lured
- MC-275532 - The abbreviation "fps" is inconsistently capitalized across strings
- MC-276079 - Sending a swing packet to the client causes it to send one back to the server
- MC-276692 - Lingering potions which land on the target's head do not grant their effects to the target
- MC-277772 - Stained glass renders incorrectly through item models in stained glass with the "Improved Transparency" option enabled
- MC-277906 - Ender pearls land incorrectly at high speeds
- MC-278336 - The player model still flickers at very high speeds
- MC-278557 - Exiting a spinning boat and then inserting a mob makes its head spin forever
- MC-278771 - The incorrect command context is used when providing suggestions for redirected commands
- MC-279185 - The selectWorld.load_folder_access string is missing an article before the word "folder"
- MC-279285 - Experience orbs that have been stuck inside blocks rapidly accelerate toward the ground if they've been disturbed by a player's presence
- MC-279395 - Trees can generate floating over ruined portals
- MC-279561 - Resin brick walls without a center post are not solid
- MC-279586 - Closed captions continue to fade when their sound plays again from farther away, causing visual delays in the overlay
- MC-279819 - The mining speed factor of Mining Fatigue is inconsistent at level 3
- MC-280250 - Projectiles sometimes desync when thrown or shot while moving
- MC-293615 - Tooltip formatting of "[item] x [number]" is inconsistent across different types of items
- MC-293755 - The ender dragon's neck and tail disconnect from its body when it turns
- MC-295678 - Translucent blocks above water flicker when crossing chunk borders
- MC-295756 - Pistons desync on the client, causing players to be moved differently compared to other entities
- MC-296006 - Entities do not face the player correctly while in a boat
- MC-296368 - The entity.happy_ghast.riding sound event displays no closed caption
- MC-296773 - Taken screenshots are rendered as a black image on Intel graphics of Gen7 and Gen7.5 architecture
- MC-297741 - Gravity-affected blocks in upwards bubble columns can visually clip through solid blocks above them
- MC-298066 - Directly entering a bed from a mount places the player in the wrong place
- MC-298431 - Boats are launched by slime blocks inconsistently
- MC-298659 - Translucent blocks and some entities render above text displays with see_through enabled
- MC-298762 - Phantoms deflect arrows shot from bows or crossbows
- MC-299019 - Using a bed while riding a rideable mob causes the player to sleep either on the ground, or on top of the mob
- MC-299460 - Saddled pigs in boats carried by happy ghasts can cause a desync when unequipping a carrot on a stick
- MC-299582 - Special crafting recipes cannot be given or taken with /recipe and do not respect the limited_crafting game rule
- MC-300000 - Players desync when teleporting all users riding a happy ghast
- MC-300831 - /test locate always fails
- MC-301804 - Test blocks' GUI does not pause the game in singleplayer
- MC-302221 - Moving entities deflect arrows
- MC-302271 - Sniffers stop sniffing after relog
- MC-302537 - /give succeeds when trying to give more than 100 stacks of an item despite the failure message and no items being given
- MC-302661 - Interacting with something while holding spears plays the spear jab animation
- MC-302687 - Throwing items out of your inventory while holding spears plays the spear jab animation
- MC-302705 - Having a spear in the main hand affects the hand animation speed for items held in the off hand
- MC-303360 - Flat-cached shifted noise density functions are recalculated for every Y level
- MC-303493 - The apply_impulse entity effect does not apply components of the impulse that would cause the affected entity to hit a solid block when used with a tick or location_changed advancement trigger
- MC-303626 - Block hitboxes, particles, semi-transparent blocks and non-block items render behind entity hitboxes with the "Improved Transparency" option enabled
- MC-303789 - Looking directly up with an apply_impulse enchantment entity effect will limit the impulse's effect on the X and Z axes to only apply on one of the two horizontal axes
- MC-304195 - The arm overlay textures of parched have unused pixels not used by the model
- MC-304213 - Zombies, husks and drowned hold out the incorrect arm when holding spears
- MC-304594 - Spears can dismount interaction entities from their vehicles
- MC-304719 - The InhabitedTime NBT tag for some chunks can be set to impossibly high values when a world is opened
- MC-304920 - Spears in third person look wrong when the left hand is the main hand
- MC-305214 - Arrows deflecting off of entities get offset
- MC-305422 - Players can sometimes get kicked due to a waypoint packet the client fails to handle
- MC-305535 - Elytra are activated after only single tapping the "Jump" key when the player is in lava
- MC-305707 - /time reports success when no changes are made
- MC-306012 - Armadillos can escape fenced areas when at the edge of the simulation distance
- MC-306127 - Block outlines are no longer visible behind translucent items
- MC-306156 - Breezes, slimes and players between translucent blocks or fluids appear behind them with the "Improved Transparency" option enabled
- MC-306231 - Boats are filled with water when viewed through translucent blocks with the "Improved Transparency" option enabled
- MC-306318 - Translucent items render through the head of players with a translucent item equipped on their head with the "Improved Transparency" option enabled
- MC-306619 - Cannot jump while sneaking while using a Chinese input method
- MC-306778 - The fog color no longer transitions smoothly when the weather changes at night while under the Night Vision effect
- MC-306891 - Sneaking and then opening the chat forces the IME to switch to the corresponding CJK mode
- MC-307122 - The hanging roots drop from hoeing rooted dirt appears to be hardcoded
- MC-307206 - Std140Builder incorrectly pads vec3s and ivec3s
- MC-307285 - Translucent blocks don't render behind sulfur cubes
- MC-307319 - Low performance with the Vulkan rendering backend on Intel Arc GPUs (especially on Linux)
- MC-307345 - The smoke particles produced by potent sulfur do not render behind stained glass
- MC-307376 - The CPU and GPU isn't fully utilized; the framerate is stuck at 25-35 fps
- MC-307384 - Screen tearing occurs with the Vulkan rendering backend in fullscreen mode with lower framerates, even if VSync is enabled
- MC-307449 - Spawners with their light limits set no longer spawn mobs underground at night time
- MC-307452 - Significant performance regression with the Vulkan rendering backend
- MC-307596 - The OpenGL rendering backend seems to be very laggy
- MC-307616 - Typo in a log message in ActiveProfiler: "aprox"
- MC-307618 - Typo in a log message in SoundEngine: "disapeared"
- MC-307625 - The glowing effect is not visible on block displays displaying End portals or End gateways
- MC-307648 - "non-heap" is misspelled as "non-head" in the system details section of crash reports
- MC-307660 - Typo in a log message in GameRenderer: "coudln't"
- MC-307709 - The texture of upward facing sulfur spikes' merged tip has a single wrong pixel at the very top
- MC-307890 - Some textures of geyser plume particles use the wrong color in some spots
- MC-307902 - Partially transparent blocks inside sulfur cubes don't render correctly
- MC-307918 - Sculk patches can cause errors in the log during world generation
- MC-307933 - Deepslate ores can generate on the surface by replacing tuff around sulfur springs
- MC-307938 - Low performance with the Vulkan rendering backend on AMD GPUs
- MC-307996 - The game cannot use hardware acceleration on devices lacking the fillModeNonSolid Vulkan feature
- MC-308008 - The success message of /tag reports that it affected more entities than it did
- MC-308009 - The success message of /scoreboard players enable reports that it affected more players than it did
- MC-308011 - The success message of /recipe reports that it affected more players than it did
- MC-308012 - The success message of /enchant reports that it affected more entities than it did
- MC-308013 - The success message of /effect reports that it affected more entities than it did
- MC-308014 - The success message of /clear reports that it affected more players than it did
- MC-308125 - Scroll wheel tilting/sideways scrolling appears to move the selected hotbar slot the wrong way
- MC-308127 - The "Friends Screen" key bind overrides debug hotkeys using the same key
- MC-308222 - World generation heightmaps do not persist properly through chunk saving and loading
- MC-308254 - Dying to a sulfur cube with a magma block doesn't increment the player's killed_by:sulfur_cube statistic
- MC-308314 - Custom player heads do not render their texture properly when inside a sulfur cube
- MC-308344 - Validation error when compiling shaders containing in/out array or matrix variables with the Vulkan rendering backend
- MC-308405 - /unpublish succeeds when the game is not published despite the failure message
- MC-308406 - Item models are shown incorrectly in the smithing table menu's armor stand
- MC-308460 - Some of the stems in wildflowers and pink petals render brighter
- MC-308469 - Hitting the ender dragon's head hitbox no longer causes the ender dragon to take more damage
- MC-308490 - The "regular" sulfur cube archetype produces stone sounds, despite no longer using stone blocks
- MC-308593 - Animated blocks (notably water and lava) render incorrectly on some graphics
- MC-308647 - The resource packs screen can cache font glyphs incorrectly after toggling the "Font Settings" option
- MC-308694 - Using /defaultgamemode changes everyone's game mode to the one set in "Settings for Other Players" in LAN worlds
- MC-308699 - Switching the host's game mode causes new LAN players to ignore the forced game mode
- MC-308749 - Exiting and rejoining the same LAN session resets your game mode
- MC-308752 - Frame presentation stutters heavily with the OpenGL rendering backend on Intel Arc if a GUI is opened in borderless fullscreen mode
- MC-308765 - Ender pearls don't cancel the player's velocity
- MC-308789 - Pointed dripstone and sulfur spikes can be destroyed by tridents in Adventure mode
- MC-308798 - Dolphins take much longer to pick up items
- MC-308804 - The input method does not switch to the corresponding CJK mode in the Create New World screen
- MC-308809 - Full-width spaces take up more space on signs now
- MC-308830 - Placing beds does not send block updates to the foot half's neighboring blocks
- MC-308836 - Obfuscated text no longer keeps a consistent width
- MC-308849 - Creakings can take knockback
- MC-308851 - The chat_restriction.disabled_by_profile.action string is improperly capitalized
- MC-308866 - Unable to change online settings when in a world
- MC-308914 - End portals or End gateways held by glowing endermen do not glow
- MC-308915 - End portals and End gateways do not glow when inside glowing minecarts
- MC-308916 - Glowing TNT that renders as an End portal or End gateway does not glow
- MC-308917 - Items with the end_cube special model type do not show a glowing outline where expected
- MC-308961 - When changing the game mode using debug hotkeys while in the World Options screen, the "Game Mode" button does not update
- MC-309081 - Decorated pots and chorus flowers can be destroyed by projectiles in Adventure mode
- MC-309262 - Falling blocks disappear for a split second when landing
- MC-309298 - Sending chat messages while having the "Chat Delay" option set to a nonzero value can sometimes kick you from the game
- MC-309479 - The game crashes during the loading screen with the message "Failed to wait for frame completion" on some systems
- MC-309501 - Dropped shelves rotate off-center
- MC-309565 - Block outlines are rendered behind translucent elements if the "High Contrast Block Outlines" option is enabled
- MC-309872 - The system freezes when pressing the Windows key with the "Exclusive Fullscreen" option enabled
- MC-309875 - New translations for the tooltip of the "Improved Transparency" option are wrongly backported
- MC-309891 - The chat_restriction.disabled_by_launcher string lacks a period, unlike similar strings
- MC-309893 - The gamerule.minecraft.fire_spread_radius_around_player.description string lacks a period, unlike similar strings
- MC-309897 - The gui.report_to_server string is improperly capitalized
- MC-309898 - The editGamerule.inGame.discardChanges.title string is improperly capitalized
- MC-309901 - The structure_block.position.x string is improperly capitalized
- MC-309902 - Some strings contain stray spaces adjacent to line breaks
- MC-309903 - The "Isn't It Iron Pick" advancement name is missing a question mark
- MC-309907 - The word "whoosh" is misspelled as "woosh" in the subtitles.block.bubble_column.upwards_inside string
- MC-309908 - The subtitles.entity.copper_golem.no_item_get string is missing an article before the word "item"
- MC-309911 - The words "blocks" and "seconds" in the commands.worldborder.set.grow string are always pluralized
- MC-309914 - The commands.op.failed string has awkward and inconsistent adverb placement, unlike similar strings
- MC-309915 - The commands.kick.owner.failed string is missing articles before the words "server" and "LAN"
- MC-309916 - Some /stopwatch strings incorrectly capitalize the word "Stopwatch" mid-sentence, which is inconsistent with other commands
- MC-309918 - The commands.perf.started string is missing a hyphen between the words "10" and "second" and an article before the word "10"
- MC-309919 - The mco.errorMessage.6002 string is improperly capitalized
- MC-309920 - The mco.configure.world.close.question.line1 string is improperly capitalized
- MC-309921 - The mco.snapshot.subscription.info string uses the "to" preposition instead of "with"
- MC-309922 - The advMode.trackOutput string is improperly capitalized
- MC-309923 - The gamerule.minecraft.entity_drops.description string is improperly capitalized
- MC-309924 - The argument.enum.invalid string surrounds the placeholder with double quotes instead of single quotes, unlike every other command
- MC-309925 - The mount.onboard string is improperly capitalized
- MC-309926 - The selectWorld.edit.backupSize string is improperly capitalized
- MC-309927 - The gui.friends.error.unauthorized string lacks a period, unlike similar strings
- MC-309928 - The multiplayer.confirm_command.signature_required string lacks a period
- MC-309937 - The argument.pos.outofbounds string ends with a period, unlike similar strings
- MC-309938 - The quickplay.error.invalid_identifier string is missing an article before the word "world"
- MC-309940 - The datapackFailure.safeMode.failed.title string ends with a period, unlike similar title strings
- MC-310041 - Under specific conditions, chunk loading frequently fails
- MC-310057 - Pressing the "Advancements" key bind while its menu was opened from the pause menu closes both menus
- MC-310062 - Armadillos stop following players holding spider eyes after relog
- MC-310076 - Mobs sometimes stop just far enough away from the player to be unable to attack them
- MC-310182 - Some descriptive tooltip strings lack a period, unlike similar strings
- MC-310184 - The commands.bossbar.set.max.unchanged string abbreviates "maximum" to "max", unlike similar strings
- MC-310186 - The options.languageWarning string lacks a period, unlike similar strings
- MC-310187 - The commands.bossbar.get.visible.visible string uses "shown" instead of "visible", unlike similar strings
- MC-310188 - Some /tag list success strings always pluralize the word "tags"
- MC-310232 - Resizing the game window in the Realms players menu misplaces UI elements
- MC-310233 - Some strings that contain percentages have spaces before the percentage sign, unlike similar strings
- MC-310236 - Some strings use an ampersand instead of the word "and", unlike similar strings
- MC-310289 - Entity collisions fully above an entity's hitbox are ignored when stepping up blocks
- MC-310300 - Other windows cannot be displayed on top of the game window even with the "Exclusive Fullscreen" option disabled
- MC-310337 - The game log outputs the incorrect minimum format version requiring the pack_format field in pack.mcmeta
- MC-310372 - Tripwires depowering breaks cross-chunk block tick processing order
- MC-310476 - Projectiles only collide outright with the world border when underwater
- MC-310595 - The Option key on macOS is displayed as "Alt" in the Key Binds screen
- MC-310676 - The savanna_lamp_post_01 village structure contains a trailing closing square bracket in the jigsaw block's NBT
- MC-310684 - Camels stop following players holding cacti after relog
- MC-310787 - Villagers do not level up until the trading window is closed for several seconds
- MC-310939 - Interacting with camels with two passengers is preferred over using items
- MC-310962 - The trading UI opens and immediately closes when interacting with a villager whose trades were altered with commands
- MC-311094 - Villager discounts do not apply until the trading window is closed and reopened
- MC-311113 - The game does not hand off focus when clicking links on Wayland
- MC-311186 - The water overlay and fog does not render when the player's head is inside a block underwater
- MC-311235 - Upgrading a world from before 26.1 can cause data from other worlds to get saved inside it
- MC-311245 - Ruined portals can generate replacing End portal frames
- MC-311271 - Some loot context parameters are missing from the generic loot context type
- MC-311272 - The game crashes when referenced loot context parameters are not provided by certain loot tables
- MC-311323 - Locating a structure creates an empty region file for every candidate chunk in ungenerated terrain
- MC-311414 - Players can teleport arbitrary distances by using a desynced carrot on a stick on a pig
- MC-311419 - Breaking a falling block with another one on top causes the top block to briefly become invisible when landing, revealing unlit block particles
- MC-311453 - Particles from feeding flowers to brown mooshrooms cannot be seen by other players
- MC-311454 - Particles from water evaporating in the Nether are not properly displayed
- MC-311579 - The player can see through blocks when inside snow layers
- MC-311593 - Spears' charging animation jitters from another player's perspective when swapping to a spear and charging it in the same tick
- MC-311722 - Pressing Windows+↓ in fullscreen mode incorrectly restores the game window to a borderless windowed state

Get the Release
To install the Release, open up the Minecraft Launcher and click play! Make sure your Launcher is set to the "Latest Release" option.
Cross-platform server jar:
Report bugs here:
Want to give feedback?
- For any feedback and suggestions, head over to the Feedback site. If you're feeling chatty, join us over at the official Minecraft Discord.