Java Edition 1.21.5
Edition | |||||
---|---|---|---|---|---|
Official name | |||||
Release date |
March 25, 2025 | ||||
Development versions | |||||
Downloads | |||||
Obfuscation maps | |||||
Protocol version |
770 | ||||
Data version |
4325 | ||||
Resource pack format |
55 | ||||
Data pack format |
71 | ||||
Minimum Java version | |||||
|
{ "title": "Minecraft 1.21.5", "images": [ "1.21.5 banner.jpg", "Java Edition 1.21.5.png" ], "rows": [ { "field": "''(link to Java Edition article, displayed as Java Edition)''", "label": "(link to Edition article, displayed as Edition)" }, { "field": "(link to Spring to Life article, displayed as Spring to Life)", "label": "Official name" }, { "field": "March 25, 2025", "label": "Release date" }, { "field": "<div class=\"hlist\"><span style=\"white-space:nowrap;\">(link to :Category:Java Edition 1.21.5 snapshots article, displayed as '''Snapshots''') (10) </span><br/><span style=\"white-space:nowrap;\">(link to :Category:Java Edition 1.21.5 pre-releases article, displayed as '''Pre-releases''') (3) </span><br/><span style=\"white-space:nowrap;\">(link to :Category:Java Edition 1.21.5 release candidates article, displayed as '''Release candidates''') (2) </span><br/>((link to Java Edition 1.21.5/Development versions article, displayed as View all))</div>", "label": "<span style=\"white-space: normal;\">Development versions</span>" }, { "field": "[https://piston-data.mojang.com/v1/objects/b88808bbb3da8d9f453694b5d8f74a3396f1a533/client.jar Client] ([https://piston-meta.mojang.com/v1/packages/09fe09042d1767d677649d1e4a9d26ce3b462ebb/1.21.5.json .json])<br />[https://piston-data.mojang.com/v1/objects/e6ec2f64e6080b9b5d9b471b291c33cc7f509733/server.jar Server]", "label": "(link to Tutorial:Installing a snapshot#Manual version installation article, displayed as Downloads)" }, { "field": "[https://piston-data.mojang.com/v1/objects/57669731d542f98646772e91a0d68628f9827a5c/client.txt Client]<br />[https://piston-data.mojang.com/v1/objects/f4812c1d66d0098a94616b19c21829e591d0af3a/server.txt Server]", "label": "(link to Obfuscation map article, displayed as Obfuscation maps)" }, { "field": "770", "label": "(link to Protocol version article, displayed as Protocol version)" }, { "field": "4325", "label": "(link to Data version article, displayed as Data version)" }, { "field": "55", "label": "<span style=\"white-space: normal;\">(link to Pack format#List of resource pack formats article, displayed as Resource pack format)</span>" }, { "field": "71", "label": "<span style=\"white-space: normal;\">(link to Pack format#List of data pack formats article, displayed as Data pack format)</span>" }, { "field": "<span class=\"plainlinks\">[https://en.wikipedia.org/wiki/Java_version_history#Java_SE_21 Java SE 21]</span>", "label": "<span style=\"white-space: normal;\">Minimum Java version</span>" } ], "invimages": [], "footer": "<table style=\"margin: auto; word-break: break-word;\">\n<tr style=\"background: inherit;\">\n<td style=\"padding: 0.4em\" >[[Java Edition 1.21|<span style=\"margin-right:-0.35em\">◄</span>◄ 1.21]]</td>\n<td rowspan=\"2\" style=\"padding: 0.4em\">''' 1.21.5'''</td>\n<td style=\"padding: 0.4em\" rowspan=\"2\"></td>\n</tr>\n<tr style=\"background: inherit;\">\n<td style=\"padding: 0.4em\">\n[[Java Edition 1.21.4|◄ 1.21.4]]\n</td>\n</tr>\n</table>" }
1.21.5, the release of Spring to Life, is a game drop released on March 25, 2025.[1] This update introduces new chicken, cow, and pig variants, expands plant life, and updates all spawn egg textures. Additionally, several features previously exclusive to Bedrock Edition have been added to Java Edition, enhancing gameplay diversity and visual aesthetics, and also fixes bugs. This is the first version released in 2025.
is the performance fixed in this update? because it made it worse i n 1.21.2
Additions
Blocks
- Generates in the following biomes:
- They are tinted by the grass color of the biome they are placed in.
- Can be used in the composter, with a 30 % chance to add a layer.
- Using bone meal on a bush will generate a neighboring bush next to it if possible.
- Can be obtained using shears or a Silk Touch tool.
- A new type of flower which has a chance of generating on cacti.
- Can be placed on cactus blocks or any block which has center support at the top of the block.
- Has a chance of growing on cactus blocks.
- If a cactus is one or two blocks high the flower has a 10 % chance to grow instead of the cactus getting higher.
- If a cactus is three blocks or higher the flower has a 25 % chance to grow.
- Cactus flowers will only grow if they have space on all four sides.
- Can be mined without any tool.
- Can be used in the composter, with a 30 % chance to add a layer.
- Can be used to craft 1 pink dye.
Ingredients | [hide]Crafting recipe |
---|---|
Cactus Flower |
- Generates in swamps, near rivers, near water in mangrove swamps and all types of badlands (very rarely).
- When it's dark, glowing firefly particles appear around the firefly bush, up to 5 blocks away.
- It plays ambient sounds when all of the following conditions are met:
- The firefly bush is not blocked from above by any collidable block (except leaves).
- It is nighttime.
- Can be used in the composter, with a 30 % chance to add a layer.
- Using bone meal on a firefly bush will generate a neighboring firefly bush next to it if possible.
- Emits a light level of 2.
- Can be instantly broken without any particular tool.
- A new type of decorative block which can be found in forests, dark forests, and wooded badlands.
- Can have different amounts of leaves in one block space.
- Up to four leaf litter pieces can be placed in the same block space, like the pink petals.
- Placing a leaf litter into an already placed leaf litter block increases the amount of leaves.
- Leaf litter is tinted based on which biome it is in.
- Can be placed in four orientations, on any block which has full solid top surface.
- Can be created by smelting any type of leaves block.
- Can be used as fuel for smelting.
- Can be used in a composter.
- Has unique block sounds.
Ingredients | [hide]Smelting recipe |
---|---|
Any leaves block |
- Is one block high.
- Generates in the desert and badlands, randomly offset within the block they are on.
- Can be placed on types of sand, terracotta and dirt blocks like the dead bush.
- Can be obtained using shears or a Silk Touch tool.
- Can be bone mealed.
- Using bone meal on short dry grass grows it into a tall dry grass.
- Can be used in the composter, with a 30 % chance to add a layer.
- Sheep can eat short dry grass to regrow its wool.
- Can be used as fuel for smelting, where they smelt half an item.
- Is one block high.
- Generates in the desert and badlands, randomly offset within the block they are on.
- Can be placed on types of sand, terracotta and dirt blocks like the dead bush.
- Can be obtained using shears or a Silk Touch tool.
- Can be bone mealed.
- Using bone meal on tall dry grass places a neighboring short dry grass next to the block if possible.
- Can be used in the composter, with a 30 % chance to add a layer.
- Sheep can eat tall dry grass to regrow its wool.
- Can be used as fuel for smelting, where they smelt half an item.
- A new type of flower which grow in birch forests, old growth birch forests and meadows.
- Can have different amounts of flowers in one block space.
- Up to four wildflowers can be placed in the same block space, like the pink petals.
- Placing a wildflower into an already placed wildflowers block increases the amount of flowers.
- Using bone meal on wildflowers will produce more wildflowers.
- Can be placed in four orientations.
- Can be crafted into yellow dye.
Ingredients | [hide]Crafting recipe |
---|---|
Wildflowers |
- A technical block used in game tests.
- Can be obtained by
/setblock
,/fill
, or/give
commands, or through the Operator Items Tab. - The test block is a block used for implementing block-based tests. It has four modes:
start
: Triggers a redstone pulse when the test startslog
: Logs a message to the server log file when powered by redstone (prints twice, due to a bug[citation needed][2]:9m10s)fail
: Fails the test when powered by redstoneaccept
: Completes the test when powered by redstone
- Block-based tests are required to have at least one start block and one accept block in the structure.
- A technical block used in game tests.
- Can be obtained by
/setblock
,/fill
,/give
, or/test
commands, or through the Operator Items Tab. - To run a test in a world, a test instance block is used. This type of block represents the test as placed in the world and is used to interact with that test, to save the structure, reset or run the test.
- Using the
/test
command to run or create a test will also place a test instance block to control that test.
Items
- A variant of the egg laid by the cold chicken variant.
- Spawns the cold chicken variant when hatched.
- A variant of the egg laid by the warm chicken variant.
- Spawns the warm chicken variant when hatched.
Mobs
- New chicken variants have been added, the variant is determined by the biome they spawn in.
Temperate Chicken – The pre-existing chicken variant.
- Spawns by default where the cold and warm chicken variants do not spawn.
Cold Chicken – A variant that spawns in the following biomes:
Old Growth Pine Taiga
Old Growth Spruce Taiga
Taiga
Snowy Taiga
Windswept Hills
Windswept Gravelly Hills
Windswept Forest
Snowy Plains
Ice Spikes
Frozen Peaks
Jagged Peaks
Snowy Slopes
Grove
Stony Peaks
Frozen River
Cold Ocean
Deep Cold Ocean
Frozen Ocean
Deep Frozen Ocean
Deep Dark
The End
End Barrens
Small End Islands
End Midlands
End Highlands
Warm Chicken – A variant that spawns in the following biomes:
- When bred by a player, the baby chicken variant will not be chosen by the current biome, but instead randomly selected from one of the parents' variants.
- New cow variants have been added, the variant is determined by the biome they spawn in.
Temperate Cow – The pre-existing cow variant.
- Spawns by default where the cold and warm cow variants do not spawn.
Cold Cow – A variant that spawns in the following biomes:
Old Growth Pine Taiga
Old Growth Spruce Taiga
Taiga
Snowy Taiga
Windswept Hills
Windswept Gravelly Hills
Windswept Forest
Snowy Plains
Ice Spikes
Frozen Peaks
Jagged Peaks
Snowy Slopes
Grove
Stony Peaks
Frozen River
Cold Ocean
Deep Cold Ocean
Frozen Ocean
Deep Frozen Ocean
Deep Dark
The End
End Barrens
Small End Islands
End Midlands
End Highlands
Warm Cow – A variant that spawns in the following biomes:
- When bred by a player, the baby cow variant will not be chosen by the current biome, but instead randomly selected from one of the parents' variants.
- New pig variants have been added, the variant is determined by the biome they spawn in.
Temperate Pig – The pre-existing pig variant.
- Spawns by default where the cold and warm pig variants do not spawn.
Cold Pig – A variant that spawns in the following biomes:
Old Growth Pine Taiga
Old Growth Spruce Taiga
Taiga
Snowy Taiga
Windswept Hills
Windswept Gravelly Hills
Windswept Forest
Snowy Plains
Ice Spikes
Frozen Peaks
Jagged Peaks
Snowy Slopes
Grove
Stony Peaks
Frozen River
Cold Ocean
Deep Cold Ocean
Frozen Ocean
Deep Frozen Ocean
Deep Dark
The End
End Barrens
Small End Islands
End Midlands
End Highlands
Warm Pig – A variant that spawns in the following biomes:
- When bred by a player, the baby pig variant will not be chosen by the current biome, but instead randomly selected from one of the parents’ variants.
- Added six new sound variants.
- The variants are called Classic, Big, Cute, Puglin, Angry, Grumpy, and Sad. The existing wolf sounds are used for the Classic variant.
- Wolves receive a random sound variant when they spawn.
- Sound variants are not related to texture variants.
World generation
- Fallen trees are a new decorative variant of trees.
- Fallen trees come in four different wood type variants:
- Birch fallen trees can come in a shorter version or a longer version.
- Some fallen trees can be decorated with mushroom or vines.
- Fallen trees can be found in all biomes where their standing tree variant grow, except the following:
Meadow
Bamboo Jungle
River
Grove
Flower Forest
- Has fallen birch trees but not fallen oak trees.
- Longer versions of fallen birch trees also generate.
- This version is up to 15 blocks long, as opposed to the shorter version which can only reach 8 blocks at most.
Gameplay
- Dead bush blocks have a chance of playing ambient sounds when placed on top of two blocks that are any color of terracotta, sand or red sand blocks in any biome.
- Sand, red sand and terracotta of any color have a chance of playing ambient sounds when surrounded by any one of them on at least 3 sides 8 blocks away.
General
- Added support for Kyrgyz language.
Changes
Blocks
General
- Any block in the simulation distance of a player or loaded by another source of chunk loading (such as ender pearls) may now receive random ticks, instead of just 8 chunks around players.
- Beacons and their beams now render beyond 16 chunks up to the client render distance.
- To keep it easily visible at large distances, the beam is rendered thicker the further away it is from the player.
- The beam now renders up to 2048 blocks high, up from 1024.
- Bubble columns produce less particles and sounds when entities that are unaffected by them are inside them.
- Creaking hearts correctly placed between Logs have a new dormant texture during the day.
- Dormant creaking hearts cannot spawn new creakings or resin clumps.
- The transition between the awake and dormant states of creaking hearts is now based on the fixed day time.
- Can now be placed on farmland.
- The transition between the states of eyeblossoms is now based on the fixed day time.
- Will no longer burn or spread if no player is within 8 chunks.
Iron Bars, Iron Block, Iron Trapdoor, Iron Door, and Heavy Weighted Pressure Plate
- Added new break, place, step, fall and hit sounds.
- The following blocks can now spawn falling leaf particles:
- Oak Leaves
- Spruce Leaves
- Birch Leaves
- Acacia Leaves
- Jungle Leaves
- Dark Oak Leaves
- Mangrove Leaves
- Azalea Leaves
- Flowering Azalea Leaves
- Changed crafting recipe to require an iron ingot instead of a netherite ingot, making them renewable.
- Can now be found in ruined portal chests.
Pale Oak Leaves and Pale Oak Sapling
- Now have an updated map color.
- Landing on powder snow with leather boots equipped after falling further than 2.5 blocks (more precisely ~2.69456... blocks) will now make entities fall through the snow.
- Jumping or falling less than 2.5 blocks allows the entity to land on top of the snow like before.
- Now generates slightly sparser in meadows.
Items
- Can now be found in some of the chests in villages.
Cake and Pumpkin Pie
- Can now be crafted using blue eggs or brown eggs.
- Flight is now cancelled when gliding into climbable blocks like ladders, scaffolding, vines, etc.
- Saddles equipped onto pigs or striders will now maintain properties such as custom name when dropped.
- Saddles equipped onto camels and equines (horses, donkeys, mules) now remain visible if the mob equipped with them is inflicted with Invisibility.
- Saddles equipped onto camels and equines no longer turn red when the mob wearing it takes damage.
- When enchanted now show the enchantment glint on mobs wearing it.
- Thorns and Curse of Binding enchantments now work on mobs that are wearing it.

- Changed the visuals of all spawn eggs to make them easier to distinguish: each type of spawn egg now has its own unique icon instead of all just being colored variants of the same spotted egg.
- Each egg visual varies in shape to reflect the in-world properties of the mob it spawns: for example, smaller mobs tend to have a smaller spawn egg icon.
- Added textures for Programmer Art resource pack.
Mobs
General
- Farm animals can now spawn in badlands.
- Are now attracted to, and can be bred using wildflowers and cactus flowers.
- Now spawn in deserts.
Cows and Mooshrooms
- Textures have been changed.
- Nose now extrudes from model.
- Position of legs and horns changed now matches Bedrock Edition.
- Can now be named using name tags.
- Named creakings will persist through the day.
- However, it will still be torn down if stuck with a player or if it is too far from its heart.
- Named creakings are still resistant to all damage, and can communicate with their hearts via particles.
- Named creakings will persist through the day.
- Changed the rules for sheep coloring to be based on which biome they spawn in:
- Temperate biomes:
- Common:
- Uncommon:
- Rare:
- Cold biomes:
- Common:
- Uncommon:
- Rare:
- Warm biomes:
- Common:
- Uncommon:
- Rare:
- Temperate biomes:
- Sheep colors for temperate biomes is unchanged from current behavior.
- Sheep's wool undercoat is now also colored when dyed, matching existing behavior in Bedrock Edition.
- Sheep can now eat ferns, matching Bedrock Edition.
- The changes to cartographer trades have been moved from experimental features and are now available during normal gameplay.
- Added seven new maps which cartographers can sell, each pointing to a different village or other structures in a different biome, depending on the biome they come from. These maps can help players who want to quickly find a specific location.
- Village maps points to a village in a specific biome. Jungle explorer map points to a jungle pyramid. Swamp explorer map points to a swamp hut.
- Cartographers from different village types will sell a different range of maps and colored banners.
- Some prices and quantities have also been adjusted.
- Added seven new maps which cartographers can sell, each pointing to a different village or other structures in a different biome, depending on the biome they come from. These maps can help players who want to quickly find a specific location.


Available new tradable maps Desert Jungle Plains Savanna Snow Swamp Taiga Group 1 Savanna Village Map Savanna Village Map Savanna Village Map Desert Village Map Plains Village Map Snowy Village Map Plains Village Map Group 2 Plains Village Map Desert Village Map Taiga Village Map Plains Village Map Taiga Village Map Taiga Village Map Snowy Village Map Group 3 Jungle Explorer Map Swamp Explorer Map – Jungle Explorer Map Swamp Explorer Map Jungle Explorer Map Swamp Explorer Map
Cartographer Economic Trades | ||||||||
---|---|---|---|---|---|---|---|---|
Level | Bedrock Edition | Java Edition | Item wanted | Item given | Trades in stock | Price multiplier | Villager XP | |
Slot | Probability | Probability | ||||||
Novice | 1 | 100% | 100% | 24 × ![]() | ![]() | 16 | Low | 2 |
2 | 100% | 100% | 7 × ![]() | ![]() | 12 | Low | 1 | |
Apprentice | 3 | 100% | 50% | 11 × ![]() | ![]() | 16 | Low | 10 |
4 | 100% | 100% | 8 × ![]() + ![]() | ![]() | 12 | High | 5 | |
Journeyman | 5 | 50% | 67% | ![]() | ![]() | 12 | Low | 10 |
50% | 67% | 13 × ![]() + ![]() | ![]() | 12 | High | 10 | ||
6 | 100% | 67% | 12 × ![]() + ![]() | ![]() | 12 | High | 10 | |
Expert | 7 | 100% | 12% | 7 × ![]() | ![]() | 12 | Low | 15 |
8 | 100% | 100% | 3 × ![]() | ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Any color Banner[t 3] | 12 | Low | 15 | |
Master | 9 | 100% | 100% | 8 × ![]() | ![]() | 12 | Low | 30 |
10 | 100% | 100% | 14 × ![]() + ![]() | ![]() | 12 | High | 30 |
- ↑ The structure that the map leads to depends on the biome the villager is from. See the table above for more details. Each of the three possible maps are counted as independent trades, so a villager trading multiple maps is possible.
- ↑ Jump up to: a b in Java Edition, all copies of the map traded by a particular villager lead to the same structure. In worlds that do not have the structure, this trade is not offered. in Bedrock Edition, Cartographers adopting the profession in the Nether or the End do not offer explorer maps.
- ↑ The list of possible offers contains individual offers for each color, so multiple colors may be offered by the same villager as separate trades.

- The changes to wandering trader trades have been moved from experimental features and are now available during normal gameplay.
- The Wandering Trader now has better prices, more trades and a larger amount of stock for many items.
- They will also now buy basic supplies from players.
- The Wandering Trader will offer to buy two items from this list:
- Wandering Traders now have a chance of selling these items (in addition to their previous trades):
- Logs (Acacia, Birch, Dark Oak, Jungle, Oak, Spruce, Pale Oak or Cherry)
- Enchanted
Iron Pickaxe
Potion of Invisibility
- Trade list now made up by following trades, in order:
- Buying Trade (new) × 2
- Special Selling Trade × 2
- Ordinary Selling Trade × 5
- Added new buying trades, some selling trades, and changed some existing selling trades:
New trades of wandering traders Category Item wanted Quantity Item given Quantity Trades until disabled Buying Baked Potato
4 Emerald
1 2 Buying Fermented Spider Eye
1 Emerald
3 2 Buying Hay Bale
1 Emerald
1 2 Buying Milk Bucket
1 Emerald
2 2 Buying Water Bottle
1 Emerald
1 2 Buying Water Bucket
1 Emerald
2 2 Special Selling Emerald
1 Acacia Log
8 4 Special Selling Emerald
1 Birch Log
8 4 Special Selling Emerald
1 Cherry Log
8 4 Special Selling Emerald
1 Dark Oak Log
8 4 Special Selling Emerald
1 Jungle Log
8 4 Special Selling Emerald
1 Oak Log
8 4 Special Selling Emerald
1 Spruce Log
8 4 Special Selling Emerald
1 Pale Oak Log
8 4 Special Selling Emerald
6–20 Iron Pickaxe (Enchanted)
1 1 Special Selling Emerald
5 Potion of Invisibility (Long)
1 1
Changed trades of wandering traders Category Item wanted Quantity Item given Quantity Trades until disabled Special Selling Emerald
1 Gunpowder
1 → 4 8 → 2 Special Selling Emerald
3 → 1 Packed Ice
1 6 Special Selling → Ordinary Selling Emerald
5 → 3 Bucket of Pufferfish
1 4 Special Selling → Ordinary Selling Emerald
5 → 3 Bucket of Tropical Fish
1 4 Ordinary Selling Emerald
1 Lily Pad
2 → 5 5 → 2 Ordinary Selling Emerald
1 Brown Mushroom
1 → 3 12 → 4 Ordinary Selling Emerald
1 Red Mushroom
1 → 3 12 → 4 Ordinary Selling Emerald
1 Vines
1 → 3 12 → 4

- Must now be killed by a player to drop its Player-specific loot.
World generation
- Pale Garden biome now occupies more space that was previously taken by dark forests.
- Woodland Mansions can now generate in Pale Garden biome.
- Pigs and cows spawned in desert villages are now of the warm variant.
Gameplay
- The "Country Lode, Take Me Home" advancement has been moved from the Nether category to the Adventure category.
Creative mode
- The tab icon for the Spawn Eggs inventory tab has changed from the pig spawn egg to the creeper spawn egg.
- When changing state, any blocks that are in its radius will be dropped as items and also make breaking sounds, rather than outright overwritten.[3]
- The volume of the narrator is now affected by the game's configured volume in the 'Voice' category.
- Ambient block sounds in deserts, badlands and pale gardens which are only used for ambience have been moved from
Blocks
toAmbient/Environment
category. - The breaking sound for
grass
sound type has been lowered, affecting all blocks using this sound. - Blocks that are broken by a piston now play their breaking sound.
General
General
- If the game detects that the last startup did not complete normally, the fullscreen option will now be reset.
- Chunks loaded by a portal will now be re-loaded again automatically when the world is reopened.
- Uploading a world to Realms will now enable command blocks by default.
- It's now possible to upload hardcore singleplayer worlds to Realms.
- Crossbows will now show all charged projectiles in their tooltip instead of just the first.
- Tooltips for fireworks and crossbows now show a compact form of multiple repeated stars or projectiles that are identical.
Technical
Additions
Command format
/test
- A new command used to create and run tests.
- Syntax:
/test clearall [<radius>]
/test clearthat
/test clearthese
/test create <test> [<width>] [<height> <depth>]
/test locate <selector>
/test resetclosest
/test resetthese
/test resetthat
/test pos [<variable>]
/test run <selector> [<numberOfTimes>] [<untilFailed>] [<rotationSteps>] [<testsPerRow>]
/test runclosest [<numberOfTimes>] [<untilFailed>]
/test runfailed [<numberOfTimes>] [<untilFailed>] [<rotationSteps>] [<testsPerRow>]
/test runmultiple <selector> [<amount>]
/test runthat [<numberOfTimes>] [<untilFailed>]
/test runthese [<numberOfTimes>] [<untilFailed>]
/test stop
/test verify <tests>
- Parameters:
radius
:- The radius to clear tests within.
test
:- The namespaced ID of a test.
selector
:- A wildcard-enabled selector for test IDs
- Supports * and ? for matching namespaced IDs
- If namespace is not supplied, defaults to minecraft
- Examples:
*:*
- Matches all IDs
*
- Matches everything in the minecraft namespace
custom:folder/*_test_?
- Matches IDs in the folder folder of the custom namespace, with a prefix followed by
_test_
followed by a single valid character
- Matches IDs in the folder folder of the custom namespace, with a prefix followed by
width
:- The width of the test structure.
- If omitted,
5
is used.
- If omitted,
- The width of the test structure.
height
:- The height of the test structure .
- If omitted, the
width
is used.
- If omitted, the
- The height of the test structure .
depth
:- The depth of the test structure.
- If omitted, the
width
is used.
- If omitted, the
- The depth of the test structure.
variable
:- The variable name to include in the copied code snippet.
numberOfTimes
:- The number of times to repeat each test.
- If omitted,
1
is used.
- If omitted,
- The number of times to repeat each test.
untilFailed
:- Boolean (default false) noting that the test should be stopped as soon as one iteration fails.
rotationSteps
:- Number of extra 90 degree steps to apply to the test.
- If omitted,
0
is used.
- If omitted,
- Number of extra 90 degree steps to apply to the test.
testsPerRow
:- Number of tests to place per row in a grid layout.
- If omitted,
8
is used.
- If omitted,
- Number of tests to place per row in a grid layout.
- Syntax:
/test clear*
- These subcommands clear the structures and blocks associated with the selected tests.
/test create
- This subcommand creates a test setup in the current location for the given test, preparing for a structure of the given size.
- This gives a starting point for creating the structure for the test.
/test locate
- Attempts to locate the given test.
- Note that only loaded chunks are searched.
- Attempts to locate the given test.
/test reset*
- These subcommands reset the structures for the selected tests, removing any surrounding barriers and placing the structure in from scratch.
/test pos
- Shows the local coordinates to the block pointed at in the test.
- If the optional variable name is specified, this variable name is used in a code fragment obtained by clicking on the coordinates in the output message.
/test run*
- Runs one or more tests.
- If multiple tests are run at once, they are placed in a grid and run in parallel, although only up to a certain limit. Beyond that limit, tests are run in rounds where each round completes before any tests from the next round are started.
- For each test, loads the given structure and runs the associated test. Each test location will have a beacon beam showcasing the test status.
- Gray beacon = in progress
- Red = fail (required test)
- Orange = fail (optional test)
- Green = success
- If a test fails, the error is shown on a lectern book and an overlay.
- Runs one or more tests.
/test stop
- Stops all running tests.
- Note that gameplay events triggered by tests may still remain.
- Stops all running tests.
/test verify*
- Verifies one or more tests by running multiple instances of the same test.
General
- Use test blocks in the test structure to run the test and indicate success or failure.
blocks_attacks
component- When present, this item can be used like a Shield to block attacks to the holding player.
- Format: object with fields
block_delay_seconds
- Non-negative float (default:
0
). - The number of seconds that right-click must be held before successfully blocking attacks.
- Non-negative float (default:
bypassed_by
– hashtagged damage type tag (optional)- If specified, blocking is bypassed by these damage types.
damage_reductions
- List of object with fields (optional)
- Controls how much damage should be blocked in a given attack.
- If not specified, all damage is blocked.
- Each entry in the list contributes an amount of damage to be blocked, optionally filtered by damage type.
- Each entry adds to blocked damage, determined by
clamp(base + factor * dealt_damage, 0, dealt_damage)
. - The final damage applied in the attack to the entity is determined by
dealt_damage - clamp(blocked_damage, 0, dealt_damage)
- Entry format:
type
– damage type id, list of damage type ids, or hash-prefixed damage type tag (optional).- This entry will only contribute to the blocked damage if the dealt damage type matches this field.
- If not specified, any damage type will be accepted.
base
– float- Constant amount of damage to be blocked.
factor
– float- Fraction of the dealt damage that should be blocked.
horizontal_blocking_angle
– angle in degrees as a positive float- Default:
90
- The maximum angle between the user's facing and the incoming attack for the block to be effective.
- If the blocked damage has no position, the compared angle will be assumed to be the maximum 180.
- Default:
disable_cooldown_scale
- Non-negative float (default:
1
). - Multiplier applied to the number of seconds that the item will be on cooldown for when attacked by a disabling attack (
disable_blocking_for_seconds
on theweapon
component). - If
0
, this item can never be disabled by attacks.
- Non-negative float (default:
item_damage
- Object with fields (optional)
- Controls how much damage should be applied to the item from a given attack.
- If not specified, a point of durability is removed for every point of damage dealt.
- The final damage applied to the item is determined by: .
- The final value may be negative, causing the item to be repaired.
- Format:
threshold
– non-negative float- The minimum amount of damage dealt by the attack before item damage is applied to the item.
base
– float- Constant amount of damage applied to the item, if threshold is passed.
factor
– float- Fraction of the dealt damage that should be applied to the item, if threshold is passed.
block_sound
- Sound event (optional).
- If specified, this sound will be played when an attack is successfully blocked.
disable_sound
- Sound event (optional).
- If specified, this sound will be played when the item goes on its disabled cooldown due to an attack.
break_sound
component- When present, this sound will be played when the item runs out of durability and breaks.
- If not present, no sound will be played on break.
- This component is present by default on every item type.
- Format: sound event
- e.g.
break_sound='item.wolf_armor.break'
- e.g.
potion_duration_scale
component- When present, for items that have the
potion_contents
component, the duration of the applied effects will be scaled by this factor. - This also applies to
custom_effects
in thepotion_contents
component, unlike the previous hard-coded scaling factor. - If not specified, defaults to
1.0
. - Format: non-negative float
- e.g.
potion_duration_scale=0.25
- When present, for items that have the
provides_banner_patterns
component- When present, this item can be placed in the pattern slot of a Loom.
- Format: hash-prefixed banner pattern tag.
- e.g.
provides_banner_patterns='#minecraft:pattern_item/globe'
- e.g.
provides_trim_material
component- When present, this item will provide the specified trim material when used in a trimming recipe.
- Note that to be used in the built-in smithing recipes, the item must also be in the
#trim_material
tag. - As such, the trim material registry definition no longer specifies an item.
- Note that to be used in the built-in smithing recipes, the item must also be in the
- Format: trim material id
- e.g.
provides_trim_material='minecraft:iron'
- e.g.
- When present, this item will provide the specified trim material when used in a trimming recipe.
tooltip_display
component- This component allows the tooltips provided specifically by any given item component to be suppressed.
- This replaces the previous
show_in_tooltip
fields,hide_additional_tooltip
andhide_tooltip
components. - Format: object with fields:
hide_tooltip
- boolean (default:false
).- If true, the item will have no tooltip when hovered.
hidden_components
- list of item component ids (default:[]
).- The tooltips provided by any component in this list will be hidden.
- If that component provides no tooltip, it will have no effect.
weapon
component- When present, the 'Item Used' statistic will be incremented for each attack with the item.
- The specified amount of damage can be done to the item with each attack.
- Format: object with fields:
item_damage_per_attack
– non-negative integer (default:1
)- The amount to damage the weapon for each attack performed.
disable_blocking_for_seconds
- Non-negative float (default:
0
) - If non-zero, will disable a blocking Shield on successful attack for the specified amount of seconds.
- Non-negative float (default:
- e.g.
weapon={damage_per_attack:2
}
Entity components
wolf/sound_variant
- Namespaced ID from
wolf_sound_variant
registry.
- Namespaced ID from
- Rely on built-in functions to run a test and indicate success or failure.
- They have one additional field:
function
:- The namespaced ID of the Test Function to run.
- They have one additional field:
- Added the
allowFireTicksAwayFromPlayer
game rule.- Default value:
false
. - When
true
, Fire and Lava ticks can occur outside of an 8 chunk range of a player.
- Default value:
- Added the
tntExplodes
game rule.- When
false
, TNT will not explode and cannot be primed by any means.- Trying to do so directly, like with a flint and steel, will show a message on the action bar.
- Powering a TNT block with redstone makes it simply vanish, as does blowing it up with a creeper.
- A TNT block on fire can burn up as if it was a plank.
- Default value:
true
- When
- The Game Tests system is a new integrated system for testing aspects of the game.
- Each test is an asset defining some parameters for how the test gets executed, combined with a saved structure file containing a base setup.
- Generally, the test framework expects to run tests in a separate superflat world.
- Select Property
minecraft:component
- New data source has been added to select item model:
component
. - Returns value of component on item, if any.
- Fields:
component
– namespaced ID of component type.
- Possible values: depends on component type.
- New data source has been added to select item model:
- Biome Tags
- Added
#spawns_cold_variant_farm_animals
– all biomes where cold variant of farm animals spawn. - Added
#spawns_warm_variant_farm_animals
– all biomes where warm variants of farm animals spawn.
- Added
- Block Tags
- Added
#camels_spawnable_on
– contains blocks that camels can spawn on. - Added
#edible_for_sheep
– contains blocks that can be eaten by sheep to regrow their wool. - Added
#plays_ambient_desert_block_sounds
– contains blocks that will play ambient desert block sounds. - Added
#replaceable_by_mushrooms
– exhaustive list of all blocks that can be replaced as a mushroom is placed or grows. - Added
#sword_instantly_mines
– blocks that are instantly mined by Swords.
- Added
- Entity Tags
- Added
#can_equip_saddle
– contains entities that can be equipped with a saddle. This does not mean that the Saddle will function, just that it can be equipped into the saddle slot. - Added
#can_wear_horse_armor
– contains entity that can hold horse armor in their body slot.
- Added
- Item Tags
- Added
#book_cloning_target
– item that can be crafted together with a Written Book to clone it. - Added
#eggs
– contains all variants of the egg item. - Added
#flowers
– corresponds to the#flowers
block tag.
- Added
- Structure tags
- Added
#on_savanna_village_maps
– contains structures that can appear on savanna village maps. - Added
#on_desert_village_maps
– contains structures that can appear on desert village maps. - Added
#on_plains_village_maps
– contains structures that can appear on plains village maps. - Added
#on_taiga_village_maps
– contains structures that can appear on taiga village maps. - Added
#on_snowy_village_maps
– contains structures that can appear on snowy village maps. - Added
#on_swamp_explorer_maps
– contains structures that can appear on swamp explorer maps. - Added
#on_jungle_explorer_maps
– contains structures that can appear on jungle explorer maps.
- Added
- Test Environments are a way to group up tests and give them the right preconditions to run.
- A test environment is an asset in the
test_environment
registry. - Each test environment definition has a
type
field that determines its setup:all_of
definitions- Apply the setup from several sub-definitions in the
definitions
field.
- Apply the setup from several sub-definitions in the
function
definitions- Use mcfunction files as setup and teardown.
setup
:- Optional namespaced ID of the mcfunction to use for setup, if any.
teardown
:- Optional namespaced ID of the mcfunction to use for teardown, if any.
game_rules
: definitions- Set any number of game rules.
bool_rules
:- A list of boolean game rules to set and the value to set.
int_rules
:- A list of integer game rules to set and the value to set.
- Each rule is an object with two fields:
rule
:- The exact name of the rule to set.
value
:- The value to set
- Game rules are reset to their default values after the test environment has completed.
weather
definitions- Sets the weather state
weather
:- The weather to set.
- One of
clear
,rain
andthunder
.
time_of_day
definitions- Set a given time of day.
time
:- The time of day to set in number of ticks, as a non-negative integer.
- The game provides a single, empty test environment by default:
minecraft:default
.
- Test instances are defined in the registry
test_instance
.- They're small assets defining a test to run.
- Fields:
environment
:- Namespaced ID of the test environment to run this test as part of.
structure
:- Namespaced ID of the structure to use for the test.
max_ticks
:- A positive integer representing the maximum number of ticks allowed to pass before the test is considered timed out.
setup_ticks
:- Optional non-negative integer.
- Default:
0
- Represents a number of ticks to wait after placing the structure before starting the test.
required
:- Optional boolean.
- Default
true
- Whether the test is considered required to pass for the full test suite to pass.
rotation
:- Optional rotation to apply to the test structure.
- One of
none
(default),clockwise_90
,180
andcounterclockwise_90
.
manual_only
:- Optional boolean.
- Default
false
- Set to
true
for tests that are not included as part of automated test runs.
sky_access
:- Whether the test needs clear access to the sky.
- Default:
false
- Tests are enclosed in barrier blocks.
- If set to
true
, the top is left open.
max_attempts
:- Number of attempts to run the test.
- Default:
1
required_successes
:- Number of attempts that must succeed for the test to be considered successful .
- Default:
1
type
:- The type of test.
- One of
block_based
andfunction
.
Changes
Command format
General
- Arguments in commands that accept inline values like loot tables, predicates, modifiers, data components, formatted text (
/loot
,/give
,/tellraw
,/execute if predicate
, data components in/execute if items
, etc.) have been reverted to accept numbers in place of booleans.
- Text components in commands such as
/tellraw
or/title
are now specified with SNBT instead of JSON. - Text style in the
/scoreboard
command when specifying the styled number format is now specified with SNBT instead of JSON. - The behavior of
/setblock
and/fill
commands have changed in how they handle block entity data:- If the block entity data is not specified, and the existing block has data, the block entity data will be preserved.
- If the block entity data is specified, the block entity data will be set to the specified value.
- To clear the block entity data explicitly, the block entity data must be specified as
{}
. - The operation is now successful if either the block state changed or the block entity data changed.
/bossbar
, /scoreboard
, and /team
- Text component arguments are now resolved before use in context of entity held in
@s
.
/data
- Can now create and modify heterogeneous lists transparently.
- Can no longer traverse paths with an empty key (e.g.
/data get ... foo..bar
)
/fill
- The replace option in the fill command is no longer terminal, and can be followed with additional options.
/fill
, /clone
, /setblock
, and /place template
- Accepts a new option:
strict
.- If specified, the command will place blocks as-is without triggering block updates and shape updates.
- New syntax for commands to use the new strict option, and more flexible use of replace:
fill
<from> <to> <block> keep
fill
<from> <to> <block> [replace <filter>] [strict|destroy|hollow|outline]
clone
[from <sourceDimension>] <begin> <end> [to <targetDimension>] <destination> [strict] [[replace|masked|filtered <filter>] [force|move|normal]]
setblock
<pos> <block> [destroy|keep|replace|strict]
place template <template> [<pos> [<rotation> [<mirror> [<integrity> [<seed> [strict]]]]]]
Item slots
- The
horse.saddle
item slot has been renamed tosaddle
, and now supports any entity that can equip a Saddle.- Driven by the
equippable
component. - Only mobs that normally support saddles will support riding and rendering of the saddle.
- Items in the
saddle
slot can apply attribute modifiers as with other equipment.
- Driven by the
- Any interface with NBT data within the game (SNBT representation,
/data
) now supports heterogeneous lists, i.e. ones where elements are not of the same type- Inserting or replacing into a list of a different type with
/data
will no longer give an error. - Inserting into an array type (e.g.
[I;1,2,3]
) is still type-restricted. - This means that the 'wrapper' objects previously used to represent heterogeneous lists will no longer be observable by in-game means.
- Inserting or replacing into a list of a different type with
- The NBT file format is unchanged.
- Heterogeneous lists are transformed before storage to bypass NBT constraints.
- Example transform:
['a', {'b':3}]
is stored as[{'':'a'},{'b':3}]
.
- Example transform:
- Existing external tools will still be able to read NBT files as before, but heterogeneous lists will be displayed in the transformed form.
- Heterogeneous lists are transformed before storage to bypass NBT constraints.
- No data produced by the game has changed: objects such as Text Components were already producing heterogeneous lists in this form.
- Note: these wrapper objects may never be observed in-game, they are only relevant to developers working with the NBT file or network format directly.
SNBT format
- SNBT (textual representation of NBT-like data) has been expanded to accept heterogeneous lists, i.e. ones where elements are not of the same type.
- NBT format is not changed
- The text format for describing object-like data in commands (like NBT, text components, predicates, etc.) has been extended.
- SNBT now also supports following operations:
bool(arg)
- converts argument to boolean.- If argument is a boolean value, returns value directly.
- If argument is a number value, returns true if it is non-zero.
uuid(str)
- converts string representation of UUID to integer array.
- Implicit infinite float values (like
1e1000
) are now rejected.
- Number Format
- Either whole or fraction parts of a float number can be omitted
- Examples:
.1
and1.
are valid now
- Examples:
- Float numbers now use E notation
- Example: both
1.2e3
and1.2E3
,1.2E+3
,12000e-1
are now a valid way to represent1200.0
- Example: both
- Integer numbers can now be prefixed with
0x
to represent hexadecimal numbers and0b
to represent binary numbers- Example:
0xbad
(equal to2989
),0xCAFE
(equal to51966
),0b101
(equal to5
)
- Example:
- Integer numbers now can't start with
0
- Normally (e.g. in Java) it would mean number is in base-8, but this usage is not implemented, to avoid accidental misuse
- Numbers can now contain
_
character between sequences of digits (but not at the start or the end of sequence)- Example:
0b10_01
,0xAB_CD
,1_2.3_4__5f
,1_2e3_4
- Example:
NaN
,Inf
or hexadecimal float representation are NOT supported- Type suffixes have been extended:
- Integer type suffixes (
b
orB
- byte,s
orS
- short,i
orI
- integer,l
orL
) can now be prefixed withs
(signed) oru
unsigned - New suffixes only affect valid range when parsing - values are still stored as signed
- Example:
240ub
is equal to-16sb
, while240sb
does not parse
- Example:
- When a suffix is used without
u
ors
, it defaults to signed for decimal numbers and unsigned for binary and hexadecimal numbers - Note: since
b
is also a valid hexadecimal digit, byte sized hexadecimal values can only be written with a signed suffix, like0x11ub
or0x11sb
- Integer type suffixes (
- Either whole or fraction parts of a float number can be omitted
- Strings
- Quoted strings can now use escape sequences beyond ', " and \:
- Unicode escapes:
\x
– two digit escape, like\x42
\u
– four digit escape, like\u2603
\U
– eight digit escape, like\U00002603
\N{<name>}
– named Unicode character, like\N{Snowman}
- Built-in escape sequences:
\b
– backspace, Unicode\x08
\s
– space, Unicode\x20
\t
– horizontal tab, Unicode\x09
\n
– linefeed, Unicode\u0a
\f
– form feed, Unicode\u0c
\r
– carriage return, Unicode\u0d
- Unicode escapes:
- Unquoted strings now can’t start with
0-9
,.
,+
,-
to avoid accidental collision with numbers
- Quoted strings can now use escape sequences beyond ', " and \:
- Number Arrays
- Values in arrays (
[B;]
,[I;]
,[L;]
) without a suffix are now assumed to have suffix matching the type of the array- Example:
[B;1,2]
is equivalent to[B; 1b, 2b]
- Example:
- Arrays can now also accept types smaller than the array type
- Example:
[I;1b,2s,3]
is valid and equivalent to[I;1i,2i,3i]
- Example:
- Values in arrays (
- Lists
- Lists now accept trailing commas
- Example:
[1,2,]
is valid and equivalent to[1,2]
- Only one trailing comma is allowed, and it must come after a valid element - both
[,]
and[1,,]
are invalid
- Example:
- Lists now accept trailing commas
- Compounds
- Compounds (maps) now accept trailing commas
- Example:
{a:b,}
- Only one trailing comma is allowed, and it must come after a valid key-value pair - both
{,}
and{a:b,,}
are invalid
- Example:
- Compounds (maps) now accept trailing commas
General
- The field
background
no longer containstextures/
prefix and.png
suffix.
minecraft:paletted_permutations
sprite source- New field:
separator
- Optional string (default:
_
). - Value to be used when joining texture and permutation names to produce sprite name.
- Optional string (default:
- New field:
Biome effects
dry_foliage_color
field- Defines the color used for tinting blocks using dry foliage tinting.
- The
CustomName
field will no longer be preserved when removed. - The
LootTable
field will no longer be preserved when removed.
campfire
- The
CookingTimes
andCookingTotalTimes
fields will no longer be preserved when removed.
- The
chiseled_bookshelf
- The
last_interacted_slot
field now defaults to-1
if not specified.
- The
end_gateway
- The
exit_portal
field will no longer be preserved when removed.
- The
furnace
,smoker
,blast_furnace
- The
RecipesUsed
field will no longer be preserved when removed.
- The
hopper
- The
TransferCooldown
field now default to-1
if not specified.
- The
jigsaw
- The
name
,target
, andpool
fields now default tominecraft:empty
if not specified. - The
final_state
field now defaults tominecraft:air
if not specified.
- The
sculk_shrieker
- The
warning_level
field now defaults to0
if not specified.
- The
skull
- The
note_block_sound
field will no longer be preserved when removed.
- The
structure_block
- The
ignoreEntities
andshowboundingbox
fields now default totrue
if not specified. - The
posY
field now defaults to1
if not specified.
- The
attribute_modifiers
component- Removed the
show_in_tooltip
field, replaced bytooltip_display
component. - This component now always uses its simplified form, with the modifiers field inlined to top-level.
- e.g.
attribute_modifiers={modifiers:[...]}]
->attributes_modifiers=[...]
- e.g.
- Removed the
can_place_on
andcan_break
components- Removed the
show_in_tooltip
field, replaced bytooltip_display
component. - The predicates field has been inlined to top-level, and supports either a single element or list.
- e.g.
can_place_on={predicates:[{blocks:'stone'},{blocks:'dirt'}]}]
->can_place_on=[{blocks:'stone'},{blocks:'dirt'}]]
- or:
can_place_on={predicates:[{blocks:'stone'}]}]
->can_place_on={blocks:'stone'}]
- e.g.
- Removed the
dyed_color
component- Removed the
show_in_tooltip
field, replaced bytooltip_display
component. - This component now always uses its simplified form, with the RGB field inlined to top-level.
- e.g.
dyed_color={rgb:12345}]
->dyed_color=12345]
- e.g.
- The specified color now supports the RGB array format.
- e.g.
dyed_color=[0.5, 1.0, 0.2]
- e.g.
- Removed the
enchantments
andstored_enchantments
components- Removed the
show_in_tooltip
field, replaced bytooltip_display
component. - These components now always use their simplified form, with the levels field inlined to top-level.
- e.g.
enchantments={levels:{sharpness:2}}]
->enchantments={sharpness:2}]
- e.g.
- Removed the
equippable
component- Can now apply to saddle slot.
- Any mob can now have equipment added in the
body
slot as long as the component allows it (allowed_entities
). - Added new optional field:
equip_on_interact
(boolean).- If
true
, players can equip this item onto a target mob by right-clicking it (as long as this item can be equipped on the target at all). - The item will not be equipped if the target already has an item in the relevant slot.
- If not specified, defaults to
false
.
- If
hide_additional_tooltip
component- Has been removed and replaced by use of the
tooltip_display
component andhidden_components
field.- The following components previously covered by the
hide_additional_tooltip
component may need to be hidden:minecraft:banner_patterns
minecraft:bees
minecraft:block_entity_data
- Specifically, Mob Spawner and Trial Spawner block entity data will display the configured mob.
minecraft:block_state
- Specifically, the
honey_level
property will be displayed in the tooltip for any item with this specified.
- Specifically, the
minecraft:bundle_contents
minecraft:charged_projectiles
minecraft:container
minecraft:container_loot
minecraft:firework_explosion
minecraft:fireworks
minecraft:instrument
minecraft:map_id
minecraft:painting/variant
minecraft:pot_decorations
minecraft:potion_contents
minecraft:tropical_fish/pattern
minecraft:written_book_content
- This additionally means that tooltips from the above listed components are no longer restricted to specific item types.
- Note: for existing items in a world with the
hide_additional_tooltip
component, any of the above listed components also present on the same item will be added to the list to hide intooltip_display
.
- Note: for existing items in a world with the
- The following components previously covered by the
- Has been removed and replaced by use of the
hide_tooltip
component- Has been removed and replaced by use of the
tooltip_display
component andhide_tooltip
field.
- Has been removed and replaced by use of the
jukebox_playable
component- Removed the
show_in_tooltip
field, replaced bytooltip_display
component.
- Removed the
tool
component- Added new optional field:
can_destroy_blocks_in_creative
(boolean)- If false, players cannot break blocks while holding this tool in Creative Mode.
- If not specified, defaults to
true
.
- Added new optional field:
trim
component- Removed the
show_in_tooltip
field, replaced bytooltip_display
component.
- Removed the
unbreakable
component- Removed the
show_in_tooltip
field, replaced bytooltip_display
component.
- Removed the
- Some existing components are now also transferred from spawning item to spawned entity:
minecraft:custom_name
- any entity.minecraft:potion_contents
- Lingering Potion to Area Effect Cloud.minecraft:potion_duration_scale
- Lingering Potion to Area Effect Cloud.
- The pack format version is now
71
. - Trim pattern and trim material items are no longer specified in the trim registries, but instead in the recipes and items respectively.
- The
potion
entity type has been split intosplash_potion
andlingering_potion
- Filled Maps without any
map_id
component no longer show an 'Unknown Map' tooltip (invalid IDs will still produce this tooltip) - New command line argument
--renderDebugLabels
is available for the client.- Adds debug labels to relevant OpenGL objects, making debugging rendering easier for developers.
- Custom data (previously present only on markers) is now available on all entities.
- It is exposed as a
minecraft:custom_data
component, so it can be set by spawning items and matched by predicates. - The component is currently stored in a field called
data
. - It is stored only if it's non-empty.
- It is exposed as a
- The
ArmorDropChances
,HandDropChances
, andbody_armor_drop_chance
fields have been merged into adrop_chances
field- Format: map between equipment slot type and chance value
- Valid equipment slots:
head
,chest
,legs
,feet
,mainhand
,offhand
,body
.
- Valid equipment slots:
- If not specified or removed, chances will be assumed as default (
0.085f
). e.g. drop_chances:{chest:0.1,feet:1.0
}
- Format: map between equipment slot type and chance value
- Drop chances with a default value will no longer be stored, and the
drop_chances
field is removed entirely if all defaults. - Area Effect Clouds have a new field:
potion_duration_scale
(float).- If not specified, defaults to
1.0
. - The duration of the potion effect applied is scaled by this factor.
- Area Effect Clouds created by Lingering Potions will have a scale of
0.25
.
- If not specified, defaults to
- The
ArmorItems
,HandItems
, andbody_armor_item
fields have been merged into anequipment
field.- Format:
- Map between equipment slot type and item stack.
- Valid equipment slots:
head
,chest
,legs
,feet
,mainhand
,offhand
,body
,saddle
.
- Valid equipment slots:
- If not specified or removed, the entity will have no equipment.
- e.g.
equipment:{chest:{id:'minecraft:diamond_chestplate'
}}. - This affects all mobs and armor stands, but players are unaffected.
- Map between equipment slot type and item stack.
- The data format of saddles has been unified between mobs such as horses and pigs, becoming a new kind of equipment slot (and stored in the
equipment.saddle
field)- This also replaces the boolean
Saddle
flag from pigs and striders. - The Saddle dropping on death is now affected by the
drop_chances
field, as with other equipment slots.
- This also replaces the boolean
- The
FallDistance
field has been changed from float to double and is now calledfall_distance
.
- Format:
- The armor and off-hand equipment of players is now also stored in the
equipment
field.- Although items written into the Inventory using armor and off-hand slot numbers still work.
Pos
,Motion
, andRotation
values without the correct number of components (3, 3, and 2 respectively) will now be fully discarded, instead of only selecting the specified components.- The
SleepingX
,SleepingY
, andSleepingZ
fields have been collected into a singlesleeping_pos
field.- e.g.
sleeping_pos: [I;1,2,3]
- e.g.
- Block States in the entity data of arrows, minecarts, block displays, endermen, falling blocks, primed TNT, or piston moving blocks are no longer allowed to be specified as an empty object.
- The
Tags
field will no longer be preserved if removed. - The
FallFlying
field will no longer be preserved if removed.- The
Health
andAir
fields now default to their respective maximum value if not specified.
- The
allay
- Removed the
CanDuplicate
field (controlled byDuplicationCooldown
).
- Removed the
area_effect_cloud
- The
Duration
field now defaults to-1
if not specified. - If the
Duration
field is-1
, the Area Effect Cloud will never run out. - This means that an Area Effect Cloud summoned with no duration specified will no longer immediately disappear.
- The
arrow
,spectral_arrow
,trident
- The
inBlockState
andSoundEvent
fields will no longer be preserved when removed. - The
damage
field now defaults to2
if not specified.
- The
block_display
,item_display
, andtext_display
- The
glow_color_override
field will no longer be preserved when removed. - The
interpolation_duration
,teleport_duration
, andstart_interpolation
fields now default to0
if not specified. - The
view_range
field now defaults to1
if not specified. - The
shadow_radius
field now defaults to0
if not specified. - The
shadow_strength
field now defaults to1
if not specified. - The
width
andheight
fields now default to0
if not specified.
- The
cat
- The
CollarColor
field now defaults to14
(red) if not specified.
- The
creeper
- The
Fuse
field now defaults to30
if not specified. - The
ExplosionRadius
field now defaults to3
if not specified.
- The
dolphin
- Removed
TreasurePosX
,TreasurePosY
,TreasurePosZ
fields. - The
Moistness
field now defaults to2400
if not specified.
- Removed
dragon_fireball
,wind_charge
,breeze_wind_charge
,wither_skull
,small_fireball
, andlarge_fireball
- The
acceleration_power
field now defaults to0.1
if not specified.
- The
ender_dragon
- The
DragonDeathTime
field now defaults to0
if not specified.
- The
evoker_fangs
,area_effect_cloud
, and all projectiles- The
Owner
field will no longer be preserved when removed.
- The
falling_block
- The
BlockState
field can now beair
(will despawn immediately) - if otherwise not specified or invalid, defaults tosand
. - The
HurtEntities
field now defaults tofalse
if not specified (ortrue
ifBlockState
isanvil
). - The
FallHurtAmount
field now defaults to0
if not specified. - The
FallHurtMax
field now defaults to40
if not specified. - The
DropItem
field now defaults totrue
if not specified. - The
TileEntityData
field will no longer be preserved if removed.
- The
firework_rocket
- The
ShotAtAngle
field now defaults tofalse
if not specified.
- The
fox
- The
Trusted
field now defaults to empty if not specified (and will no longer be merged with the previous state if modified by/data
).
- The
ghast
- The
ExplosionPower
field now defaults to1
if not specified.
- The
goat
- The
HasLeftHorn
andHasRightHorn
fields now default to true if not specified.
- The
interaction
- The
width
andheight
fields now default to1
if not specified.
- The
item
- The
Health
field now defaults to5
if not specified. - The
PickupDelay
field now defaults to0
if not specified. - The
Age
field now defaults to0
if not specified. - The
Owner
andThrower
fields will no longer be preserved when removed.
- The
item_frame
andglow_item_frame
- The
ItemDropChance
field now defaults to1.0
if not specified
- The
item_frame
,glow_item_frame
,painting
, andleash_knot
- The
TileX
,TileY
, andTileZ
fields have been collected into a singleblock_pos
field.
- The
minecart
,*_minecart
- The
CustomDisplayTile
field has been removed. DisplayState
will now always override the default displayed block state if specified.DisplayOffset
may now be specified to override the default offset even without a custom display block state set.
- The
phantom
- The
Size
field has been renamed tosize
. - The
AX
,AY
, andAZ
fields have been collected into a singleanchor_pos
field.
- The
player
- The
SpawnX
,SpawnY
,SpawnZ
,SpawnAngle
,SpawnDimension
, andSpawnForced
fields have been collected into a singlerespawn
field.- Format: object with fields
pos
- block position to spawn at.angle
- float, angle to spawn with (default:0.0
).dimension
- dimension id to spawn in (defaultminecraft:overworld
).forced
- boolean, true if this spawn was set through commands (default:false
).
- Format: object with fields
- The
enteredNetherPosition
field has been renamed toentered_nether_pos
, and is now formatted as a list of doubles.- e.g.
entered_nether_pos: [1.0, 2.0, 3.0]
- e.g.
- The
primed_tnt
- The
block_state
field now defaults totnt
if not specified. - The
fuse
field now defaults to80
if not specified. - The
explosion_power
field now defaults to4
if not specified.
- The
shulker
- The
Color
field now defaults to16
(no color) if not specified.
- The
shulker_bullet
- The
Dir
andTarget
fields will no longer be preserved when removed.
- The
skeleton
- The
StrayConversionTime
field will no longer be preserved when removed.
- The
small_fireball
andlarge_fireball
- The
ExplosionPower
field now defaults to1
if not specified.
- The
snow_golem
- The Pumpkin field now defaults to
true
if not specified.
- The Pumpkin field now defaults to
spectral_arrow
- The Duration field now defaults to
200
if not specified.
- The Duration field now defaults to
tnt_minecart
- The
fuse
field now defaults to80
if not specified. - The
explosion_power
field now defaults to4
if not specified. - The
explosion_speed_factor
field now defaults to1
if not specified.
- The
trader_llama
- The
DespawnDelay
field now defaults to47999
.
- The
turtle
- The
HomePosX
,HomePosY
, andHomePosZ
fields have been collected into a singlehome_pos
field. - Removed
TravelPosX
,TravelPosY
, andTravelPosZ
fields. - The
HasEgg
field has been renamed tohas_egg
.
- The
vex
- The
LifeTicks
field has been renamed tolife_ticks
. - The
BoundX
,BoundY
, andBoundZ
fields have been collected into a singlebound_pos
field.
- The
villager
- The
Gossips
field will no longer be preserved when removed. - The
FoodLevel
andXp
fields now default to0
if not specified. - The
ConversionTime
field will no longer be preserved when removed.
- The
wandering_trader
- The
wander_target
field will no longer be preserved when removed. - The
DespawnDelay
field now defaults to0
if not specified.
- The
witch
,ravager
,pillager
,illusioner
,evoker
, andvindicator
- The
patrol_target
field will no longer be preserved when removed.
- The
wolf
- The
CollarColor
field now defaults to14
(red) if not specified.
- The
zombie
- The
DrownedConversionTime
field will no longer be preserved when removed.
- The
zombie_villager
- The
Gossips
field will no longer be preserved when removed. - The
Xp
field now defaults to0
if not specified. - The
ConversionTime
field will no longer be preserved when removed.
- The
Entity variant components
- Entities now have a set of components for configuring variants and other aspects of appearance.
- If those components are present on spawning item (like spawn eggs, mob buckets, minecraft:painting, minecraft:item_frame), they will be applied to new entity
- Components are currently not restored when spawn egg is picked from existing entity
- Added components:
axolotl/variant
– one oflucy
,wild
,gold
,cyan
,blue
cat/collar
– one of 16 dye colorscat/variant
– namespaced id fromcat_variant
registrychicken/variant
– namespaced id fromchicken_variant
registrycow/variant
– namespaced id fromcow_variant
registryfox/variant
– one ofred
,snow
frog/variant
– namespaced id fromfrog_variant
registryhorse/variant
– one ofwhite
,creamy
,chestnut
,brown
,black
,gray
,dark_brown
llama/variant
– one ofcreamy
,white
,brown
,gray
mooshroom/variant
– one ofred
,brown
painting/variant
– namespaced id frompainting_variant
registryparrot/variant
– one ofred_blue
,blue
,green
,yellow_blue
,gray
pig/variant
– namespaced id frompig_variant
registryrabbit/variant
– one of brown,white
,black
,white_splotched
,gold
,salt
,evil
salmon/size
– one ofsmall
,medium
,large
sheep/color
– one of 16 dye colorsshulker/color
– one of 16 dye colorstropical_fish/base_color
– one of 16 dye colorstropical_fish/pattern
– one ofkob
,sunstreak
,snooper
,dasher
,brinely
,spotty
,flopper
,stripey
,glitter
,blockfish
,betty
,clayfish
tropical_fish/pattern_color
– one of 16 dye colorsvillager/variant
– one ofdesert
,jungle
,plains
,savanna
,snow
,swamp
,taiga
wolf/collar
– one of 16 dye colorswolf/variant
– namespaced id fromwolf_variant
registry
- Mob buckets and paintings available in creative menu will now use new variants instead of
minecraft:entity_data
component. - Custom tooltips for bucket of tropical fish and painting items are now based on new components instead of
minecraft:bucket_entity_data
andminecraft:entity_data
. - Cat and Frog variants are now data-driven.
- Added uniform way to define variant selection rules.
Equipment assets
- Equipment assets may now define new layer types:
pig_saddle
– equipment layer for Pig saddlesstrider_saddle
– equipment layer for Strider saddlescamel_saddle
– equipment layer for Camel saddleshorse_saddle
– equipment layer for Horse saddlesdonkey_saddle
– equipment layer for Donkey saddlesmule_saddle
– equipment layer for Mule saddlesskeleton_horse_saddle
– equipment layer for Skeleton Horse saddleszombie_horse_saddle
– equipment layer for Zombie Horse saddles
- The following textures have been moved to support the use of equipment assets for saddles:
entity/pig/pig_saddle.png
→entity/equipment/pig_saddle/saddle.png
entity/strider/strider_saddle.png
→entity/equipment/strider_saddle/saddle.png
- The following textures have been split from their base entity texture to support the use of equipment assets for saddles:
entity/camel/camel.png
→entity/equipment/camel_saddle/saddle.png
entity/horse/horse_<variant>.png
→entity/equipment/horse_saddle/saddle.png
entity/horse/donkey.png
→entity/equipment/donkey_saddle/saddle.png
entity/horse/mule.png
→entity/equipment/mule_saddle/saddle.png
entity/horse/horse_skeleton.png
→entity/equipment/skeleton_horse_saddle/saddle.png
entity/horse/horse_zombie.png
→entity/equipment/zombie_horse_saddle/saddle.png
- Equipment layers configured to be
dyeable
will now show if thedyed_color
component is present on the item, even if the item is not in the#dyeable
tag.
- Select Property
minecraft:component
- If the selected value comes from a registry and the current datapacks does not provide it, the entry will be silently ignored.
- In previous snapshot, unrecognized elements caused the whole item model to be ignored.
- If the selected value comes from a registry and the current datapacks does not provide it, the entry will be silently ignored.
- Boolean Property
minecraft:component
- New conditional model property has been added to condition item model:
component
- Uses component predicates (like ones used in item predicates) to match item components.
- However, instead of encoding them as a map of
<predicate type>:<predicate value>
, a single predicate is encoded in two fields.
- However, instead of encoding them as a map of
- Fields:
predicate
– type of component predicate (member ofminecraft:data_component_predicate_type
registry)value
– predicate-specific value
- New conditional model property has been added to condition item model:
Loot Functions
toggle_tooltips
- Now supports any component id in the toggles map.
- Any component specified will be toggled in the
tooltip_display
component.
Network protocol
- The client-bound
player_chat
packet now contains an index increasing for every message sent to the client.- The index starts at 0 when logging in (or is reset by configuration phase and the
login
packet). - For every message, the server should increment this value by 1.
- If this value updates in an unexpected way, the client will disconnect.
- As the protocol requires that every chat packet reaches the client in produced order, the goal is to enable faster detection of missed/reordered chat messages for custom server developers.
- The index starts at 0 when logging in (or is reset by configuration phase and the
- The server-bound
chat
andchat_command_signed
packets now contain a checksum byte along with the 'last seen' update.- This is a simple hash of the 'last seen' signatures which should be reconstructed by the server, allowing quicker detection of de-synchronized state.
- This can be passed as
0
to disable the check, for compatibility with protocol translation.
- The particle type
tinted_leaves
now has a parameter:color
- Tint color, specified either as packed int or list of 4 floats.
- Block predicates
- New optional fields have been added to block predicates:
components
andpredicates
. - Their functionality and format are identical to the fields
components
andpredicates
on item predicates, but they operate on block entity components (when present).- When present,
components
will match exact contents of block entity components. - When present,
predicates
will match partial contents of block entity components.
- When present,
- New optional fields have been added to block predicates:
- Entity predicates
- A new optional field was added to entity predicate:
components
.- When present, predicate will match contents of entity components.
- Format:
- Map of component type key to matching component values.
- A new optional field has been added to entity predicates:
predicates
.- Its functionality and format is identical to the field
predicates
on item predicates, but they operate on entity components.- When present,
predicates
will match partial contents of entity components.
- When present,
- Its functionality and format is identical to the field
- The following entity sub-predicates have been removed and replaced with combination of
components
predicate and variant entity components:minecraft:axolotl
minecraft:fox
minecraft:mooshroom
minecraft:rabbit
minecraft:horse
minecraft:llama
minecraft:villager
minecraft:parrot
minecraft:salmon
minecraft:tropical_fish
minecraft:painting
minecraft:cat
minecraft:frog
minecraft:wolf
minecraft:pig
- The field
color
has been removed fromminecraft:sheep
sub-predicate. - The
stepping_on
entity predicate can only evaluate totrue
if the entity is on ground.
- A new optional field was added to entity predicate:
crafting_transmute
- The result field now supports specifying a count and a components patch to apply to the result.
- The components patch is applied to the final transmuted item.
- The new format is an object with fields:
id
– item idcount
– positive integer (default:1
)components
– a component patch object (default: empty)- e.g.
"result": {"id": "minecraft:stick", "count": 3, "components": {"!minecraft:damage": {}, "minecraft:enchantment_glint_override": {}}}
- The field can still be defined as before as an inline item id (e.g.
"result": "minecraft:stick"
)
smithing_transform
recipe type- The
base ingredient
field is no longer optional- Previously, if no base ingredient was given, the recipe would parse but never be usable.
- The
smithing_trim
recipe type- The
base
,template
, andaddition ingredient
fields are no longer optional.- Previously, if these ingredients were not given, the recipe would parse but never be usable.
- Added new
pattern
field, controlling which trim pattern will be applied in the recipe.- As such, the trim pattern registry definition no longer specifies the item.
- Format: trim pattern id
- e.g.
"pattern": "minecraft:bolt"
- e.g.
- The
- The pack format version is now
55
. - Added textures for new falling leaves particles.
- Added textures for new Wildflowers block.
- Added break, place, step, fall and hit sounds for Iron Blocks, Iron Bars, Iron Trapdoors, Iron Doors and Heavy Weighted Pressure Plates.
- Added the possibility to tint blocks based on a dry foliage color map.
- Added colormap texture for tinting dry foliage tinted blocks.
- Removed
spawn_egg.png
andspawn_egg_overlay.png
. - The texture
sheep_fur
has been renamed tosheep_wool
. - The texture
pig
has been renamed totemperate_pig
. - Added new textures for Pig variants:
cold_pig
warm_pig
- Changed the size of
temperate_pig
texture. - Pig variants can be data-driven by adding entries to
data/<namespace>/pig_variant/<id>.json
- This feature is experimental.
- Fields in file:
model
– one of:normal
,cold
.texture
– texture id for this variant, resolves toassets/<namespace>/textures/<path>.png
.biome
– single entry, list or a tag describing biomes in which this variant naturally spawns.- If not specified, this variant will only be selected if no other variant matches the current biome.
- Added new equipment asset layer type for Pigs and Striders, and moved saddle textures.
- Changed the size of
pig_saddle
texture. - The texture
cow
has been renamed totemperate_cow
. - Added new textures for cow variants.
cold_cow
warm_cow
- Changed the size of
temperate_cow
texture. - Changed the size of
red_mooshroom
andbrown_mooshroom
textures. - The temperate Cow has an updated model and texture.
- Cow models now have a snout.
- Cow models now have their legs mirrored.
- Cow variants can be data-driven adding entries to
data/<namespace>/cow_variant/<id>.json
.- This feature is experimental.
- Fields in file:
model
– one of:normal
,cold
,warm
.asset_id
– namespaced id for this variant asset, resolves toassets/<namespace>/textures/<path>.png
.spawn_conditions
– field described in uniform variant selection above.
- The texture
chicken
has been renamed totemperate_chicken
. - The
temperate_chicken
texture has been moved to a new folder:entity/chicken.png
→entity/chicken/temperate_chicken.png
- Added new textures for chicken variants:
cold_chicken
warm_chicken
- Chicken variants can be data-driven adding entries to
data/<namespace>/chicken_variant/<id>.json
.- This feature is experimental.
- Fields in file:
model
– one of:normal
,cold
.asset_id
– namespaced id for this variant asset, resolves toassets/<namespace>/textures/<path>.png
.spawn_conditions
– field described in uniform variant selection above.
- "Global" uniforms may now be defined in any shader, and the game will attempt to fill it.
- Currently, these are:
ModelViewMat
,ProjMat
,TextureMat
,ScreenSize
,ColorModulator
,Light0_Direction
,Light1_Direction
,GlintAlpha
,FogStart
,FogEnd
,FogColor
,FogShape
,LineWidth
,GameTime
,ModelOffset
. - The type of the uniform must match what it would normally be, or it'll be undefined behavior.
- Currently, these are:
- Item rendering
- Item Display
firstperson_lefthand
andthirdperson_lefthand
transforms are now rendered the same as when held in hand.
- Item Entity
- When on ground, model size is now taken into account when determining hovering motion.
- That means that models should never clip into the block below, no matter what size they are.
- Positioning of items in an item stack on ground now depends on model size and model type.
- If model depth (Z coordinate) is below 1/16th of a block, item is rendered as flat stack of items.
- Otherwise model is rendered as a cluster of items offset in all directions around center.
- Previously, flat stack rendering happened only for models with
builtin/generated
parent.
- When on ground, model size is now taken into account when determining hovering motion.
- Item Display
- Added the entry point
net.minecraft.gametest.Main
.- Automatically starts a server, runs all available game tests and then exits.
- Options:
--help
– Shows usage information--packs <path>
– Set a folder of datapacks to include in the world- Any zip file or folder with a
pack.mcmeta
file is included
- Any zip file or folder with a
--report <path>
– Exports results in a junit-like XML report at the given path--tests <selection>
– Specify which tests to run with a selection - a wildcard expression matching namespace test instance IDs- If omitted, or used with an empty ID, runs all tests
--universe <path>
– The path to where the test server world will be created- Any existing folder will be replaced
- Default:
gametestserver
--verify <boolean>
– Enables test verification- Runs the tests specified with
test
ortestNamespace
100 times for each 90 degree rotation step - Default:
false
- Runs the tests specified with
- Example usage:
java -DbundlerMainClass="net.minecraft.gametest.Main" -jar server.jar --packs mytestpacks
- Shader program definitions for core shaders and post-processing effects as JSON files have been removed.
- The shader programs themselves are still available and can be overridden.
- The post-processing effects are still configurable as JSON.
- Post-process Effect Definitions
- The field program was replaced with
vertex_shader
andfragment_shader
.<namespace>:<path>
will resolve toassets/<namespace>/shaders/<path>.<vsh|fsh>
.
type
is now a required field for eachuniform
.- Possible values are currently
int
,ivec3
,float
,vec2
,vec3
,vec4
,matrix4x4
.
- Possible values are currently
values
in eachuniform
is now optional.- Leaving it unset is not recommended and is used for runtime configuration of the blur effect.
- Leaving a uniform unspecified results in undefined behavior, the player must specify each one that will be used by the shaders.
- The field program was replaced with
- Added
cactus_flower
andwildflowers
to the#bee_attractive
, and#flowers
block tags, and the#bee_food
item tag. - Added
bush
,firefly_bush
,leaf_litter
,short_dry_grass
, andtall_dry_grass
to the#replaceable_by_trees
block tag. - Added
bush
,leaf_litter
,short_dry_grass
, andtall_dry_grass
to the#replaceable
block tag. - Added
leaf_litter
, andwildflowers
to the#inside_step_sound_blocks
block tag. - Added
cactus_flower
to the#enderman_holdable
and#wall_post_override
block tags. - Added
test_block
, andtest_instance_block
to the#dragon_immune
, and#wither_immune
block tags. - Added
pale_garden
to the#has_structure/woodland_mansion
biome tag. - Added
cactus
,campfire
,dry_out
,hot_floor
,in_fire
,lava
,lightning_bolt
, andsweet_berry_bush
to the#bypasses_shield
damage type tag. - Changed the
#big_dripleaf_placeable
block tag, effectively removingpale_moss_block
from the contents. - Renamed
#dead_bush_may_place_on
block tag to#dry_vegetation_may_place_on
, and addedfarmland
. - Fixed the
#is_overworld
, and#has_structure/trial_chambers
biome tags to contain all required biomes. - Removed blocks that mine instantly without a tool from the
#mineable/axe
, and#sword_efficient
block tags. - Removed
#default_spawns
and#full_moon_spawns
cat variant tags.
- Text Components are no longer stored as JSON wrapped by a string.
- The format itself is the same as before, but inlined directly into the outer structure.
- For example, the item component
minecraft:custom_name="{"text":"Renamed item"}"
will becomeminecraft:custom_name={text:'Renamed item'}
. - This includes Text Components passed as arguments to commands such as
/tellraw
or/title
.- For example,
/tellraw @s '{"text":"Hello world"}'
may becometellraw @s {text:'Hello world'}}
.
- For example,
- Note: in the case where Text Components are embedded in NBT, no distinction exists between boolean and integer types.
- To pass boolean arguments to translations, the string form must be used.
- For Text Components with the NBT type and interpret set to true, Text Components will be parsed from the given NBT directly rather than converting to string and parsing as JSON.
- Hover Events
- The
hoverEvent
field has been renamed tohover_event
. - For the
show_text
action:contents
field has been renamed tovalue
.- e.g.
{action:'show_text',contents:'Hello world'} becomes {action:'show_text',value:'Hello world'}
- For the
show_item
action:- The
text
field has been renamed tovalue
. - The
contents
field has been inlined. - e.g.
{action:'show_item',contents:{id:'minecraft:stick',count:2}} becomes {action:'show_item',id:'minecraft:stick',count:2}
- If contents was specified only as an item id, it is replaced with the full format and inlined.
- e.g.
{action:'show_item',contents:'minecraft:stick'}
becomes{action:'show_item',id:'minecraft:stick'}
- The
- For the
show_entity
action:- The
contents
field has been inlined. - The
id
field has been renamed touuid
. - The
type
field has been renamed toid
. - e.g.
{action:'show_entity',contents:{id:[I;0,0,0,0],type:'minecraft:pig'}} becomes {action:'show_entity',uuid:[I;0,0,0,0],id:'minecraft:pig'}
- The
- The
- Click Events
- The
clickEvent
field has been renamed toclick_event
- For the
open_url
action:- The
value
field has been renamed tourl
- The click event will no longer parse if not a valid URI with either
https://
orhttp://
schemes, instead of simply not working. - e.g.
{action:'open_url',value:'https://minecraft.net'} becomes {action:'open_url',url:'https://minecraft.net'}
- The
- For the
run_command
action:- The
value
field has been renamed tocommand
. - The click event will no longer parse if the command contains disallowed characters, instead of simply not working.
- It is no longer required that the specified command field has a
/
prefix. - e.g.
{action:'run_command',value:'/say Hi'} becomes {action:'run_command',command:'/say Hi'}
.
- The
- For the
suggest_command
action:- The value field has been renamed to command.
- The click event will no longer parse if the command contains disallowed characters, instead of simply not working.
- e.g.
{action:'suggest_command',value:'/help'} becomes {action:'suggest_command',command:'/help'}
- For the
change_page
action:- The value field has been renamed to page.
- The page value now requires a positive integer instead of a string.
- e.g.
{action:'change_page',value:'1'} becomes {action:'change_page',page:1}
- The
copy_to_clipboard
format is unchanged.
- The
Uniform variant selection
- Variants that have spawn rules now use uniform approach for selecting.
- Selection process:
- Every variant field
spawn_conditions
that contain a list of entries. - Every entry has a condition and an integer priority.
- Conditions for all variants for given entity type are evaluated for position where entity is being spawned.
- Entries with priority lower than maximum priority of remaining entries are removed.
- The game randomly picks one entry out of remaining ones.
- If no conditions are remaining, variant remains unchanged from default.
- Every variant field
- Entry format:
priority
– integercondition
– optional structure- Fields:
type
- Additional fields dependent on
type
.
- If field is not present, condition is always true.
- Fields:
- Selection process:
- Spawn conditions
minecraft:biome
- Checks if entity is spawning in specific biomes.
- Fields:
biomes
– single entry, list or a tag describing biomes.
minecraft:moon_brightness
- Checks if current moon brightness is within certain range.
- Fields:
range
– floating point range (a single number or an object like{"min": 1, "max": 2}
).
minecraft:structure
- Checks if entity is spawning in specific structures.
- Fields:
structures
– single entry, list or a tag describing structures.
- Wolf Variants
- The fields
angry_texture
,tame_texture
, andwild_texture
have been grouped in fieldassets
and renamed toangry
,tame
, andwild
. - Added the field
spawn_conditions
.
- The fields
- Pig Variants
texture
andbiome
fields are replaced withasset_id
andspawn_conditions
respectively.- Fields in file:
asset_id
– namespaced id for this variant asset, resolves toassets/<namespace>/textures/<path>.png
.spawn_conditions
– field described in uniform variant selection above
- Cat variants
- Cat variants can be data-driven by adding entries to
data/<namespace>/cat_variant/<id>.json
. - This feature is experimental.
- Fields in file:
asset_id
– namespaced id for this variant asset, resolves toassets/<namespace>/textures/<path>.png
.spawn_conditions
– field described in uniform variant selection above
- Cat variants can be data-driven by adding entries to
- Frog variants
- Frog variants can be data-driven by adding entries to
data/<namespace>/frog_variant/<id>.json
. - This feature is experimental.
- Fields in file:
asset_id
– namespaced id for this variant asset, resolves toassets/<namespace>/textures/<path>.png
.spawn_conditions
– field described in uniform variant selection above
- Frog variants can be data-driven by adding entries to
- The panorama was changed to showcase the Spring to Life.
Bugs
Referring to the ability to place dead bushes on farmland:
If the player attempts to place a seed on the same farmland block as an existing dead bush then the seed will override the dead bush and the dead bush will be broken without any particles or block drops.
Fixes
From released versions before 1.21
- MC-7697 – Tridents or arrows shot through lava sometimes don't catch fire.
- MC-13738 – Invisible saddle when using invisibility potion on a horse, donkey or mule.
- MC-55800 – Successful "
/fill air destroy
" commands give error message and return 0 for result/success. - MC-56653 – Zombified Piglins drop XP and rare drops if killed by anything while in angered state.
- MC-80243 – Saddles don't apply attribute modifiers when worn by entities.
- MC-90212 – You cannot hang on to climbable blocks while gliding with elytra.
- MC-93185 – The exit portal in the end generates at highest block at 0 0 which can make it generate incomplete.
- MC-97244 – The "
minecraft:enchant.thorns.hit
" sound event doesn't play when non-player entities are damaged by the thorns enchantment. - MC-98271 – The sound of blocking with a shield is only hearable by other players (not the person blocking).
- MC-101556 – Nether Portal teleport range is too large (equivalent to a full block).
- MC-108495 – Non-LivingBase entities can be on a team (and show color) but can't be targeted using
team=
. - MC-113878 – Attribute modifiers description for chest is misleading / "When on body" instead of "When on chest".
- MC-117574 – Using
/setblock
or/fill
to re-place a block entity keeps old NBT (if no NBT specified) but clears inventories, even when the command fails. - MC-118092 – Crafting recipe unlock toast says "New Recipes Unlocked!" even when only one recipe was unlocked.
- MC-118470 – Narrator plays at full volume when volume is off.
- MC-122840 – "
/data remove
" cannot deletebeam_target
tag in End Crystals. - MC-128079 – Statistic for using shears doesn't increase when mining certain blocks.
- MC-135192 – Boats are immediately sunken if there is a string on the surface of the water.
- MC-141297 – You cannot set lit state of redstone torches using
/setblock
, debug stick andBlockStateTag
, to be to opposite of the situation it would be in. - MC-152382 – End gateways and end portals don't fade away with render distance fog.
- MC-153392 – Unable to remove villager gossips using
/data remove
. - MC-157196 – Tamed animals cannot be added to a team.
- MC-160304 – Sneaking on ice can change direction of movement to lines along axis.
- MC-165421 – Bubble columns have the opposite effect on wind charges.
- MC-165461 – Crossbow loading animation stops after loading, even when still holding down right click.
- MC-165711 – Eye of ender hitbox always lags behind the animation.
- MC-167125 – Rounding error on fall damage.
- MC-168262 – Dead bushes cannot be placed on farmland.
- MC-170134 – Minecraft uses several times more VRAM than needed after exploring terrain for a while.
- MC-176233 – Crossbows no longer have a transition after loading.
- MC-177522 – Wolf barking and whining sounds are subtitled as "Wolf pants".
- MC-183329 – Nether portal teleport overlay does not show up if the player has the nausea effect.
- MC-183623 – Hardcore worlds in the world menu have a comma after the red exclamation mark.
- MC-184530 – Player movement at low speeds is biased towards cardinal directions.
- MC-184681 – Customized worlds still say "Buffet world customization" since 20w21a.
- MC-186241 – World border faces are rendered incorrectly with "Fabulous!" graphics.
- MC-189525 – Armored entities from pre-1.9 worlds upgrade to dual wielding armor.
- MC-190000 – Saddles equipped on horses cannot be replaced without removing them first.
- MC-193404 – Changing a powered or activator rail to powered using a debug stick or
/setblock
does not work. - MC-200311 – Advancement background texture referencing is inconsistent with models.
- MC-202226 –
/recipe
give or take for one recipe says "recipes". - MC-203550 – Blocks broken by pistons do not play breaking sounds.
- MC-220091 – Summoning
falling_block
entities withBlockState
NBT set to any air block (air
,cave_air
,void_air
) default tosand
. - MC-220672 – Inconsistent pluralization in customize world preset heading source string.
- MC-222876 – "Buffet world customization" is incorrectly capitalized.
- MC-226772 – Shulker box opening / closing subtitle shows "Shulker".
- MC-227097 – End portals delete blocks that are inside of the portal.
- MC-230445 – End portals and end gateways are not rendered properly with the Blindness or Darkness effects.
- MC-236100 – End crystal beam appears to be black.
- MC-239705 – Sprinting forward while facing a certain angle pushes the player either to the left or to the right.
- MC-241951 – Player momentum on X and Z axis are cancelled separately at low values.
- MC-248099 – Mob pathfinding breaks after falling into water accidentally while walking.
- MC-253721 – Wrong logs when running
/op @a
. - MC-255756 – When the shield is broken between players, the attacking side has no shield breaking sound.
- MC-256469 – Invisible camels don't show their saddles.
- MC-258253 – Spawn egg particles use an uncolored spawn egg overlay.
- MC-260440 – Players can no longer activate swimming mode in water while flying with elytra.
- MC-261385 – Bubble columns act differently at the surface depending on non-air blocks.
- MC-262928 – The "
minecraft:entity.player.hurt
" sound is no longer played when players receive thorns damage from guardians or elder guardians. - MC-262939 – Changing dimensions or respawning with nausea effect active displays nether portal overlay.
- MC-265514 – HRTF stuck on even when directional audio is set to off in update 1.20.2.
- MC-266912 – Saddle equipping sounds aren't played when saddles are equipped on horses, donkeys, mules, or camels shortly after the said entity is summoned.
- MC-267221 – "
value
" within "change_page
"clickEvent
json looks for a string instead of an integer. - MC-267323 – Items fields with old boolean JSON formatting are cleared upon world update.
- MC-268942 – The swimming animation no longer displays when gliding with an elytra and swimming at the same time.
- MC-269386 – Flow Pottery Sherd is not in the correct spot in the creative inventory.
- MC-269637 – Horses can wear multiple saddles but not multiple horse armor.
- MC-270043 – Reduced armor glint applies to tridents.
- MC-270192 – The saddles of some entities stay visible through their death animation.
- MC-270197 – The saddle on pigs and striders stays visible through their death animation.
- MC-270220 – Granting all advancements results in prolonged, disruptive and loud audio spam.
- MC-272100 – Unused palette pixels in horse textures (
horse_[brown/chestnut/creamy/white].png
). - MC-272790 – Shulker boxes and other blocks in the end exit portal when it changes state are not dropped as items.
- MC-279646 – Toggling fullscreen with F11 does not visually update the fullscreen option in the video settings menu.
From 1.21
- MC-273338 – Flying boat glitch using string and rising bubble columns.
- MC-274187 – The sweeping attack from a sword enchanted with Fire Aspect can ignite other players with PVP disabled.
- MC-274258 – All horse textures contain an unused chest bag texture.
From 1.21.1
- MC-276061 – Decorated pot sherds don't visually update until relog when replacing with blank pot.
From 1.21.2
- MC-275994 – Having the pie chart open while the window is unfocused spams the logs.
- MC-276861 – The player can sometimes teleport through blocked end portals when moving very fast.
- MC-277403 – Flaming arrows and tridents still don't extinguish when water is placed in their location.
- MC-277537 – Pale moss carpets sometimes generate disjointed.
- MC-277780 – Minecraft resaves all maps with every autosave even after the 1st patch.
- MC-277865 – The animation of boats in bubble columns breaks when over a certain "Time" in
level.dat
. - MC-277922 – Boats in 1 block high downward bubble column will continue to rock back and forth.
- MC-278040 – Creaking swim pathfinding breaks after being submerged.
- MC-278639 – Tripwire hooks are not activated by shulker bullets.
- MC-279340 – Baby polar bears are too small.
- MC-279390 – Baby zombified piglin helmet clipping.
From 1.21.3
- MC-277807 – Teleporting the player's mount causes rotation de-sync, previously did not.
- MC-278375 – Feeding wheat or hay bale to llama or trader llama with maximum Temper causes item stack to be desynced.
- MC-278376 – Arrows and tridents act weirdly in one block deep bubble columns.
- MC-278400 – Arrows and tridents move after hitting a block in flowing lava.
- MC-278455 – Slow sideways movement in spectator mode is wrong at angles which aren't (close to) a multiple of 45°.
From 1.21.4
- MC-278096 – "Fabulous!" graphics and clouds disabled causes all particles to linger in frame buffer for one frame.
- MC-278140 – The
/fill
command doesn't work properly with the directional states of several blocks placed adjacent to one another. - MC-278164 – Click sound is played twice when you click a setting button and there's a slider under the mouse in the next screen.
- MC-278204 – Blaze fireballs now cause TNT minecarts to explode instantly.
- MC-278249 – Experience orb positions desync severely and abruptly correct themselves.
- MC-278422 – Reloading the world after removing
Owner
tag from a sitting tamed wolf with/data remove
makes the wolf moving and sitting at the same time. - MC-278493 – Tamed wolves which are angry at creakings remain angry when said creakings despawn.
- MC-278502 – Weeping and twisting vines disconnect.
- MC-278552 –
minecraft:entity.player.big_fall
no longer plays the sound when falling from great height. - MC-278585 – Players can get stuck when landing on the edge of powder snow.
- MC-278591 – Ender dragon spawn egg is no longer given when using pick block on the ender dragon entity.
- MC-278615 – Reinforcement zombified piglins are angry at you even if you killed the "caller" in one hit.
- MC-278621 – Client/server desync when placing powder snow while landing in it.
- MC-278627 – Players wearing leather boots will take fall damage when landing on the edge of powder snow.
- MC-278634 – Trying to
/setblock
a 'waterlogged=true
' state on (glow_lichen
,resin_clump
,sculk_vein
, etc.) produces an error. - MC-278659 – Attacking a natural stationary creaking does not trigger sculk sensors.
- MC-278673 – The x-rotation of
/teleport
is limited to ±90 degrees relative to the entity's original angle. - MC-278683 – Mobs spawned from spawners or
/summon
never drop their equipment. - MC-278708 – Throwing ender pearls while mounted only dismounts you, without teleporting.
- MC-278728 –
smithing_transform
recipes can't set an item's components back to default. - MC-278733 – Breaking a double resin brick slab block only returns a single slab.
- MC-278734 – Sheep's heads stutter when they look up or down.
- MC-278755 – Teleporting far away while riding an entity softlocks the game.
- MC-278801 – The closed eyeblossom to gray dye recipe is not grouped with the other gray dye recipe.
- MC-278841 – Powder snow no longer slows down the player falling from a high place.
- MC-279145 – Shulker bullets are no longer affected by bubble columns.
- MC-279152 – Shulker bullets can't teleport through nether or end portals, end gateways.
- MC-279196 – Block loot tables cannot be removed with
/data remove
- MC-279364 –
CustomName
cannot be removed from block entities. - MC-279472 – Void appears lower & more faded than before.
- MC-279572 – End portals and end gateways aren't affected by water, lava or powder snow fog.
- MC-279653 – Block Entity Data desynchronizes after subsequent setblock commands.
- MC-279857 – Piglins summoned by the
/summon
command do not pick up gold items.
Videos
Videos made by Slicedlime:
Trivia
- Unusually, this version’s number was not revealed during the snapshot phase, only being revealed with its first pre-release.
Gallery
-
The cow, the chicken, and the pig are joined by their new variations high up on a mountain.
-
Warm pigs are amongst cactus flowers in a desert.
-
A cold chicken can be seen in the forefront, with a creeper peaking out from behind a tree.
-
A warm chicken in a desert village. A cat can be seen sitting on top of a villager's house.
-
A wolf walking on top of a fallen oak tree.
-
Sunny and Noor are inspecting a collection of spawn eggs. A cartographer villager can also been seen peaking in through the window.
-
A fallen birch tree with a brown mushroom growing on top of it.
-
In the moonlit swamp, firefly bushes can be seen emitting particles. Meanwhile, a frog seems to be leaping towards the moon.
-
Three differently colored beacon beams are seen in the sky of a sunset scenery.
-
Kai is seen testing curious behaviors with the new test blocks.
-
A game test is running, where a villager is seen running through a maze to get to their bed.
References
- ↑ "Minecraft Java Edition 1.21.5" – Minecraft.net, March 25, 2025.
- ↑ "Mojang just added some WEIRD new blocks. Here's how they work." (Archive) by Conure [@conure512] – YouTube, 2025-01-15.
- ↑ "25w02a to 25w03a" (§
EndPodiumFeature
) (Archive) – cdn.skye.lol.