# Minecraft: Java Edition 1.21.10 It's hotfixin' time in the shipping room this week! Today we are releasing 1.21.10 to address some important issues that have been reported for 1.21.9. And for those of you that were hoping for a Snapshot release today, fret not! We are planning on releasing that one later this week. Exciting times! Happy mining! ## Fixed bugs in 1.21.10 - [MC-211096](https://bugs.mojang.com/browse/MC-211096) Entities in cobwebs clip though pistons - [MC-278182](https://bugs.mojang.com/browse/MC-278182) Items glitch inside the piston head when pushed through powder snow or cobwebs - [MC-301916](https://bugs.mojang.com/browse/MC-301916) The behavior of wind charges when colliding with certain blocks is different - [MC-302321](https://bugs.mojang.com/browse/MC-302321) Chunks don't load while the player is being teleported - [MC-302383](https://bugs.mojang.com/browse/MC-302383) Rooms with carpet on the floor cannot have maps in item frames placed on walls touching the floor - [MC-302405](https://bugs.mojang.com/browse/MC-302405) Repeating/chain command blocks with any form of a '/tp ' command doesn't constantly teleport the player to one spot --- # Minecraft: Java Edition 1.21.9 Minecraft has entered The Copper Age! Express yourself in every shade of copper as you transform this versatile metal into handy tools, shiny armor, gleaming light sources, oxidizing decor, smart storage, and even lively mechanical companions known as copper golems. In addition to these shiny new features, this drop comes with a bunch of technical news and fixes. The End now has a flashing skylight, you can populate the world with NPCs called mannequins, and item sprites can now be added into text. Whether scraped or oxidized, this is the start of a new clonking era of creativity! ## New Features - Added Copper Chest - Added Copper Golem - Added Copper Golem Statue Block - Added Copper Equipment - Added Copper Decorations - Added Shelf - Added light flashes to The End dimension - Added Chat Drafts - Added sound previews to the Music & Sound Options sliders - Added the Minecraft Server Management Protocol - Added support for servers to have an in-game Code of Conduct - Added Halychian language support > **Developer’s Note:** _Did you know that Minecraft: Java Edition is available in over a hundred languages? And it's all thanks to you, our community, and your vital contributions keeping the translation project running. If you would like to help translating the game, join us on [Crowdin](https://crowdin.com/project/minecraft). Happy International Translation day!_ ### Copper Chest - The Copper Chest is a new type of chest that has waxed and oxidized variants - Copper Chests oxidize over time and can be waxed like other Copper blocks - A Copper Chest can be crafted using a Chest and 8 Copper Ingots ### Copper Golem - The Copper Golem is a new mob which can be spawned by placing a Jack o'Lantern or Carved Pumpkin on top of a Copper block - Copper Golems oxidize over time and can be waxed like Copper blocks - If the Copper Golem is fully oxidized and not waxed it will turn into a Copper Golem Statue - Upon turning into a statue, the Copper Golem will drop any item it may be holding - The statue retains the Copper Golem's name - Copper Golems can help with sorting items into Chests - Interacting with the Copper Golem with an empty hand will make it drop its carried item - Iron Golems will occasionally plant a decorative flower onto a nearby Copper Golem - The flower can be removed with Shears - This flower is dropped when the Copper Golem turns into a Copper Golem Statue ![A trio of Copper Golems hanging out in a Taiga Village.](https://launchercontent.mojang.com/v2/images/1.21.9golempumpkin.jpg) #### Copper Golem Item Sorting - If the Copper Golem is not holding an item, it will look for nearby Copper Chests to try to pick up an item - The Copper Golem will look in any oxidized and waxed Copper Chest variant to pick up items - It can pick up at most 16 items in a stack at a time - Any item in a Copper Chest can be picked up - If the Copper Golem is holding an item, it will look for nearby Chests to try to place the item in - The Copper Golem will look in Chests and Trapped Chests to try to place items - It can place an item in a Chest if it's empty, or if it contains the same type of item that it is holding in its hand - The Copper Golem will visit at most 10 Chests or Copper Chests in sequence to try to pick up or place an item - If no matching chest is found the Copper Golem will idle for 7 seconds before trying again - The search area for chests from the Copper Golem's position is horizontally 32 blocks and vertically 8 blocks ![Three Copper Golems are crossing a bridge built out of copper. Two of the golems are transporting items.](https://launchercontent.mojang.com/v2/images/1.21.9bridge2.jpg) ### Copper Golem Statue Block ![A Copper Statue, doing its signature "star" pose, can be seen on top of a copper pedestal.](https://launchercontent.mojang.com/v2/images/1.21.9praisethesun.jpg) - The Copper Golem Statue is a new type of decorative block which has waxed and oxidized variants - The Copper Golem Statue oxidizes over time and can be waxed like Copper blocks - If the Copper Golem Statue has no oxidation when interacted with using an Axe, the statue will turn into a Copper Golem - The Copper Golem Statue can be in one out of four poses: standing, sitting, running, and star - The pose of the statue can be changed by interacting with it - Each pose emits a Redstone Comparator signal ![A house made out of various Copper blocks, with some Copper Golem Statues in various poses](https://launchercontent.mojang.com/v2/images/1.21.9copperbuilding.jpg) ### Copper Equipment - Added Copper Nugget - Added Copper armor - Added Copper Helmet, Copper Chestplate, Copper Leggings and Copper Boots - Copper armor has higher durability than Leather and Gold - Copper armor has slightly less enchantability than Iron - Added Copper tools and weapons - Added Copper Axe, Copper Hoe, Copper Pickaxe, Copper Shovel and Copper Sword - Copper tools and weapons do the same amount of damage as Stone, but have higher durability - Copper tools work faster and last longer than Stone - Copper tools have higher enchantability than Diamond, but slightly less than Iron - Copper equipment can be crafted using Copper Ingots - Copper equipment can be repaired with Copper Ingots - Copper equipment turns into a Copper Nugget when smelted - Added Copper Horse Armor - Has the same loot table and chance of generating as Iron Horse Armor - Armor toughness: 4 ![Two horses, wearing Copper Horse Armor, can be seen tied to fence posts in a Village. Two Armor Stands can also be seen, fully kitted with sets of Copper Armor.](https://launchercontent.mojang.com/v2/images/1.21.9armor2.jpg) ### Copper Decorations ![Sunny can be seen running across a mineshaft bridge, placing down Copper Torches along their way.](https://launchercontent.mojang.com/v2/images/1.21.9coppertorch.jpg) - Added Copper Torch - A green variant of the Torch crafted from a Copper Nugget, Coal, and Stick - Functionally identical to the Torch - Added Copper Bars - Functionally identical to the existing Iron Bars block - Made from copper and oxidizes over time - Added Copper Chain - Functionally identical to the existing Chain block (now renamed to Iron Chain) - Made from copper and oxidizes over time - Added Copper Lantern - Crafted similarly to a regular Lantern but uses Copper and a Copper Torch - The lantern itself oxidizes, changing its look as it ages - Functionally identical to the Lantern ![An entrance to a village, made out of Copper Bars and Lanterns.](https://launchercontent.mojang.com/v2/images/1.21.9copperbars.jpg) ### Shelf - The Shelf is a new type of decorative block which comes in the following variants: - Oak - Spruce - Birch - Jungle - Acacia - Dark Oak - Mangrove - Cherry - Pale Oak - Bamboo - Crimson - Warped - The Shelf can be crafted from six matching blocks of any Stripped Log, Stripped Stem or Block of Stripped Bamboo, filling the top and bottom row - This recipe produces 6 Shelves - The Shelf can store up to 3 item stacks: - Interacting with any of the 3 slots on its front swaps the player's main hand item with the content of that slot - The Shelf displays all items it contains in front of it, similar to an Item Frame - While a Shelf is powered by Redstone, its front texture changes to reflect that it's powered - When powered, up to 3 Shelves will connect to each other - Interacting with a single powered Shelf swaps all its contents with the 3 rightmost items in the player's hotbar - Interacting with two connected Shelves swaps their contents with the 6 rightmost items in the player's hotbar - Interacting with three connected Shelves swaps their contents with all items in the player's hotbar - It does not matter which of the connected Shelves the player interacts with ![Sunny in Copper armor standing in front of some Redstone-powered Shelves](https://launchercontent.mojang.com/v2/images/1.21.9shelf.jpg) ### Lightning Rod - Lightning Rods now oxidize like other Copper blocks ### The End Light Flashes - The End dimension now has skylight - Normally the skylight does not affect how the dimension looks - From time to time flashes in the sky happen and produce a rumbling sound - When they happen skylight intensity increases, flooding the dimension with purple light - While the Ender Dragon fog effect is active the flash source in the sky is not visible and the brightness of the light affecting the world is reduced - The "Hide Sky Flashes" accessibility option disables the End flashes - When the flash is disabled by the setting the world is not lit by the flash but the flash source is still visible in the sky and the sound effect still plays ![A purple flash of light can be seen in the sky of The End.](https://launchercontent.mojang.com/v2/images/1.21.9endskyflash.jpg) ### Minecraft Server Management Protocol Added a server management API (JSON-RPC over WebSocket) for dedicated servers - The API is disabled by default and can be enabled in `server.properties` - `management-server-enabled=true` - `management-server-host=localhost` - `management-server-port=0` - The API is accessible at `ws://:` when enabled - Supports querying and updating of server state (players, allowlist, operators, settings, game rules) - Sends notifications on state changes (e.g. player joins, game rule updates) - Calling `{"id":1,"method":"rpc.discover"}` returns an API schema containing supported methods and notifications of the currently running server - The Data Generator produces an API schema (`json-rpc-api-schema.json`) in the reports output folder mirroring the contents returned by the `rpc.discover` method - The API adheres to the [JSON-RPC 2.0 specification](https://www.jsonrpc.org/specification) - Uses namespaced methods and the reserved namespaces are `minecraft` (e.g. `minecraft:players`, `minecraft:allowlist/add`) - Extensible via custom namespaces for additional methods and events - Core method groups: players, allowlist, operators, server (save, stop), server settings, game rules - Example method call: - Request: `{"method":"minecraft:allowlist/add","id":1,"params":[[{"name":"jeb_"}]]}` - Response: `{"jsonrpc":"2.0","id":1,"result":[{"id":"853c80ef-3c37-49fd-aa49-938b674adae6","name":"jeb_"}]}` - Example notification: - `{"jsonrpc":"2.0","method":"minecraft:notification/players/joined","params":[{"id":"853c80ef-3c37-49fd-aa49-938b674adae6","name":"jeb_"}]}` - Example error: - Request: `{"method": "minecraft:foo/bar","id": 1}` - Response: `{"jsonrpc":"2.0","id":1,"result":{"jsonrpc":"2.0","id":1,"error":{"code":-32601,"message":"Method not found","data":"Method not found: minecraft:foo/bar"}}}` - Errors and error codes follow [JSON-RPC 2.0 error object format](https://www.jsonrpc.org/specification#error_object) - Clients must authenticate to access the API - Clients should supply an `Authorization` bearer token header with a server-specific secret - The secret is configured in `server.properties` - `management-server-secret=` - The secret should be exactly 40 alphanumeric characters (A-Z, a-z, 0-9) - The secret will be automatically generated if the server property is empty - Unauthorized requests are rejected with 401 Unauthorized - TLS is enabled by default - Can be disabled in `server.properties` - `management-server-tls-enabled=false` - Requires a keystore file to be set in `server.properties` - `management-server-tls-keystore=path/to/keystore.p12` - The keystore file must be in PKCS12 format - Keystore password can be set in the following ways, in order of priority - Environment variable: `MINECRAFT_MANAGEMENT_TLS_KEYSTORE_PASSWORD` - JVM argument: `-Dmanagement.tls.keystore.password=` - Server property: `management-server-tls-keystore-password=` ### Chat Drafts - Unsent chat messages now get saved as Chat Drafts if the chat was forcibly closed - This includes it being closed by external sources such as dying or a dialog opening, but not the player intentionally closing their chat - Any existing Chat Draft will get pre-filled into the message box the next time the chat is opened - Draft text has a grayed-out appearance until fully restored - Draft text can be restored as regular text by interacting with it: - Typing additional text - Moving the text cursor using the arrow keys - Clicking it - Highlighting it - Pressing enter on a Chat Draft prior to it being restored sends it like a normal chat message - Pressing backspace on a Chat Draft prior to it being restored deletes it - Added an option to the Chat Settings screen that enables saving unsent chat messages by default - With this option enabled, unsent messages will _always_ get saved as Chat Drafts, even if the player intentionally closed their chat ### Server Code of Conduct When connecting to a server, a Code of Conduct screen can now be shown. - Accepting the Code of Conduct is required to play on the server - A checkbox is available for not showing the same Code of Conduct in the future - If the Code of Conduct changes, it will be shown again #### Server Setup - A new boolean field has been added to `server.properties` called `enable-code-of-conduct` - Setting it to `true` will make the server look for Code of Conduct files in the `codeofconduct` subfolder in the same folder as `server.properties` - Each file in the folder should have the form `.txt` and be UTF-8 encoded - The language shown will attempt to match the player's language - If it doesn't exist, the `en_us` Code of Conduct will be used - If that also doesn't exist, an arbitrary available entry is used ### Sounds - Some sound sliders in the Music & Sound Options now play a preview sound when adjusting the setting outside a world ### Accessibility - The "Attack/Destroy" and "Use Item/Place Block" key binds are now toggleable, meaning they can be set to either "Hold" or "Toggle" in the Controls screen - Added "Invert Mouse X" option to the Mouse Settings screen, which inverts the mouse x-axis - Added "Sprint Window" option to the Controls screen, which represents the time window in ticks where double-tapping the forward key activates sprint - Multiple key binds that have the same key assigned to them can now work together, while before only one would work - For example, you can now bind `D` to `Jump` and `Strafe Left` to jump and strafe left at the same time - The red warning for assigning the same key to multiple key binds is changed to yellow - The spectator hotbar menu key can now be rebound - It is part of a new `Spectator` category in the Key Binds screen, alongside the pre-existing `Highlight Players` key bind ## Changes - Performance improvements - The Chain block has been renamed to "Iron Chain" - Monster Spawn Eggs now have a tooltip warning when the difficulty is set to Peaceful - The mob no longer spawns for one tick when an attempt is made to use the Spawn Egg - Changes to world loading and the "Spawn Chunks" - A dimension that has any player activity, forceloaded chunks, active portals, or Ender Pearls in flight will be considered "active" and will keep processing chunks and entities - Previously, this would only apply if a player was in the dimension or a chunk was forceloaded - Reworked the debug overlay to be less cluttered and more configurable - Players seen in the game world of the current server are now always shown in the Social Interactions screen even if they are offline - Players now stop flying when switching from Spectator Mode to Creative Mode if they are near the ground - A player is considered to be near the ground if there is a collidable surface (i.e. blocks, Happy Ghasts, boats...) within 1 block below them - Flight will not get disabled if the player was inside a block or collidable entity - This is to prevent players from suddenly falling through the ground - Migrated several server properties into game rules - OpenGL 3.3 is now required to play the game, up from 3.2. This does not change our posted Minimum Requirements > **Developer’s Note:** _We do not expect the update to OpenGL version to affect many people, if any at all. Our posted Minimum Requirement has been OpenGL 4.0 since 2017, and OpenGL 3.3 turned 15 years old recently._ ### Performance Improvements - Entity rendering order was improved for significantly better performance - You’ll notice much smoother gameplay in areas with lots of mobs, like mob farms - FPS won’t improve much if most of your lag comes from things other than entities, like playing with high render distance while not being near many mobs - Particles outside the player's view are not rendered anymore, which provides a performance improvement in some cases ### World Loading and Spawn Chunks - The concept of fixed "Spawn Chunks" has been removed - The game will ensure that the following chunks are fully loaded before the player joins or the server starts, in the same way as spawn chunks formerly were: - Chunks loaded by the `forceload` command - Chunks active due to portal activity - Thrown Ender Pearls (Singleplayer only) - A small area of chunks around the player (Singleplayer only) - Chunks required to assign the global world spawn (World creation only) - The world loading screen now shows the chunks that the player is about to be placed into, rather than chunks loaded around world spawn - The loading screen now has a progress bar - This progress bar accounts for all kinds of chunk loading mentioned above > **Developer’s Note:** _Spawn chunks incur a memory and performance cost for all players and have outlived their initial technical purpose of keeping the spawn area ready for players to quickly join into._ > _However, we also want to recognize that spawn chunks have enabled a multitude of clever contraptions and farms throughout the years, so simply removing them without having other mechanics in the game enable these designs was never an option._ > _We believe that the niche held by spawn chunks has now been filled by alternative methods of chunk loading, such as using portals or ender pearls, particularly with the changes in this release to how the game loads these chunks before the world starts ticking._ ### Server Properties Several server properties were removed in favor of making them into game rules, allowing these settings to be changed while the server is running. - Removed server property `allow-nether` in favor of the new game rule `allowEnteringNetherUsingPortals` - Removed server property `spawn-monsters` in favor of the new game rule `spawnMonsters` - Removed server property `enable-command-block` in favor of the new game rule `commandBlocksEnabled` - Removed server property `pvp` in favor of the new game rule `pvp` - Added server property `management-server-enabled` controlling whether the new Minecraft Server Management Protocol is enabled or not - Defaults to `false` - Added server property `management-server-port` controlling on what port the Minecraft Server Management Protocol is started - Defaults to `0`, assigning an available port each time management server is started - Added server property `management-server-host` controlling with what host the new Minecraft Server Management Protocol is started - Defaults to `localhost` - Added server property `management-server-tls-enabled` controlling whether the Minecraft Server Management Protocol uses TLS or not - Defaults to `true` - Added server property `management-server-tls-keystore` controlling the path to the keystore file used for TLS - Defaults to an empty string - A dedicated server won't start when TLS is enabled and no keystore is provided - Added server property `management-server-tls-keystore-password` controlling the password to the keystore file used for TLS - Defaults to an empty string - Added server property `status-heartbeat-interval` controlling the interval the management server sends heartbeat notifications to connected clients - Defaults to `0`, meaning it’s disabled - Added server property `enable-code-of-conduct` - Details on this property can be found in the "Server Setup" header ### Game Rules - Removed `spawnChunkRadius` game rule - Added `pvp` game rule controlling whether players can deal damage to other players - Defaults to `true` - Added `allowEnteringNetherUsingPortals` game rule controlling if the Nether can be entered through portals - Defaults to `true` - Added `spawnMonsters` game rule controlling if monsters should spawn naturally - Defaults to `true` - Added `commandBlocksEnabled` game rule controlling if Command Blocks should be enabled or not - Defaults to `true` - Added `spawnerBlocksEnabled` game rule controlling if Spawner Blocks should be enabled or not - Defaults to `true` ### Mob Spawning - The logic for choosing a type of equipment for mobs spawning with equipment has been tweaked to add Copper as a possibility - The initial roll to choose a type now chooses between Leather, Copper and Gold - The chance to increase an armor tier has increased from 9.5% to 10.87% ### Minor Tweaks to Blocks, Items and Entities - Test Instance Blocks now preserve error markers between world reloads - Ambient lighting on entities has been adjusted to be more visually in line with blocks and other parts of the game - The underside of flat surfaces will now be lit from that direction, instead of the opposite direction - This mainly affects models containing cubes that are either flat or "hollow" such as: - Worn armor - Worn Elytra - The outside layers on player skins - The ribcages of Skeletons or Skeleton Horses - The feet of Chickens or Frogs - The wings of Phantoms or the Ender Dragon - The fins on fish - And more! ### Recipes - Changed the Copper Trapdoor recipe to use 4 Copper Ingots instead of 6 and now yields one Copper Trapdoor instead of two ### Sounds - The Happy Ghast is now audible from 64 blocks - Sounds for Chests now play at a lower volume - The volume at which a sound is played at now respects the sound source volume value - The "Voice/Speech" sound source has been rephrased to "Narrator/Voice" ### UI - The Resource Pack and Data Pack selection screens now have a search box - More text inputs now support selecting text by mouse dragging - Double-clicking a word in an edit box now selects it - When adding a new server to the server list, the server name is no longer prefilled - When omitted, the default name "Minecraft Server" is used #### Mouse cursor - Some UI components will now change the shape of the mouse cursor - Examples: text inputs, numeric sliders, buttons, scroll bars - Additionally, clickable parts of text labels (like links) will now change the cursor to the "hand" shape - This feature can be disabled with the "Allow Cursor Changes" option in the Mouse Settings screen #### Debug Overlay - The debug overlay is accessible by pressing F3, as before - The debug overlay can now be accessed from everywhere in the game, not only when in a game world - It is now less cluttered, displaying less information by default - Added a new Debug Options screen, available by pressing F3 + F6, which can be used to configure what debug information should be displayed - For each element, you can configure whether it should be visible in the debug overlay or not, and can even set it to always be visible regardless of the debug overlay being active - Some debug features that were previously available, like chunk border rendering or entity hitbox rendering, can now be toggled through this Debug Options screen - Some debug features that were not previously available to the community, like Octree visualization, are now accessible through the Debug Options screen - The state of the Debug Options screen is saved between launches of the game - The Debug Options screen has the following preset profiles: - `Default` resets everything to the default state - `Performance` shows simple performance metrics, including the FPS meter always visible > **Developer's Note**: _Previously, gathering the information every frame to render the F3 screen had a significant performance cost. So opening the screen to check your FPS noticeably dropped the FPS. Now checking your FPS in the `Performance` profile should not affect game performance._ #### Chat - It is now possible to start chatting while standing inside a Nether Portal - The chat will now remain open and unchanged if the player was chatting before being transferred to another dimension ### Accessibility - Dye Colors now have updated icons - The goal with these is to enhance visual cohesion across the dye set while maintaining distinct shapes to support colorblind accessibility - A button leading to the Controls screen has been added to the Accessibility Settings screen - The "Auto-Jump" option, as well as the "Sneak" and "Sprint" toggles have been removed from the Accessibility Settings screen - The "Show Subtitles" option has been rephrased to "Closed Captions" to more accurately describe what it does - The "Hide Lightning Flashes" accessibility setting has been renamed to "Hide Sky Flashes" as it includes the End light flashes ## Technical Changes - Pack versions now have minor versions - The Data Pack version is now 88.0 - The Resource Pack version is now 69.0 - Some previously hidden debug features have been exposed to players ### Pack Formats - The pack versions for data packs and resource packs now have minor versions - A minor version increment of the game's pack version is backwards-compatible, meaning all packs made for previous iterations of the same major version will keep working - Packs can set compatibility requirements on minor versions in case they rely on resources introduced in a minor version #### Pack Metadata The pack.mcmeta format has been updated: - The `supported_formats` field has been removed - If your pack declares support for a pack version with the previous format (data pack < 82, resource pack < 65), it is still required - Otherwise, it is not allowed and must be removed - The `pack_format` field is now optional - If your pack declares support for a pack version with the previous format (data pack < 82, resource pack < 65), it is still required - Added required field `min_format` - specifies the minimum version supported - A full version is specified as a list of two integers, e.g. `[74, 1]` - Specifying a single integer is interpreted as that major version, e.g. `74` is the same thing as `[74, 0]` - Specifying a list of a single integer is interpreted the same as specifying that integer alone - Added required field `max_format` - specifies the maximum version supported - A full version is specified as a list of two integers, e.g. `[74, 1]` - Specifying a single integer is interpreted as any minor version, i.e. the minor version is `0x7fffffff` - Specifying a list of a single integer is interpreted the same as specifying that integer alone - For overlay entries: - The `formats` field has been removed - If your pack includes any overlay range that includes a pack version with the previous format (data pack < 82, resource pack < 65), it is still required for all overlay definitions - Otherwise, it is not allowed and must be removed - Added required fields `min_format` and `max_format` with the same formats as the fields above with the same name for the `pack` section ### Debug Features - Some debug features that were previously removed during compilation are now preserved and can be used by players - Individual values can be enabled with JVM properties: - First, a global debug flag must be enabled with `-DMC_DEBUG_ENABLED` or `-DMC_DEBUG_ENABLED=true` - Then, a specific feature can be enabled, for example `-DMC_DEBUG_BRAIN` or `-DMC_DEBUG_BRAIN=true` - To get the list of all available debug properties, add `-DMC_DEBUG_PRINT_PROPERTIES` - Warning: this is debug code, and the primary intention is to help modders - not for normal play. Handle with extreme care! - Features can crash your game or corrupt your worlds - Features are not guaranteed to work as intended - Features might be added, changed or removed without a notice ## Data Pack Versions 82.0 Through 88.0 - Added Mannequin entities - World Borders can now be set per dimension - Added a way to use GUI and item sprites in text - Player profiles in data components and block entities no longer resolve automatically - Added `fetchprofile` command for downloading player profiles - Renamed `chain` to `iron_chain` ### Mannequins Added a new type of technical entity called `minecraft:mannequin` which can only be spawned with summon commands. - A Mannequin is a Player Avatar without a connected Player - Mannequins show a description text (by default `entity.minecraft.mannequin.label`) where a Player's `below_score` score would show - Mannequins function as Living Entities - they can hold and wear equipment, have attributes & effects, take damage, etc. - Mannequins accept the `minecraft:profile` component from spawner items Data Fields: - `profile` - Which Player profile to show on the entity (same format as a `minecraft:profile` component), defaults to `{}` (i.e. static profile with both `id` and `name` missing) - `hidden_layers` - List of outer skin layers to hide - Valid entries: `cape`, `jacket`, `left_sleeve`, `right_sleeve`, `left_pants_leg`, `right_pants_leg`, `hat` - `pose` - The pose of the mannequin - Valid entries: `standing`, `crouching`, `swimming`, `fall_flying`, `sleeping` - `main_hand` - Which hand is the main hand of the Mannequin - one of `left` and `right` - `immovable` - Optional boolean specifying that the Mannequin cannot be moved (defaults to `false`) - `description` - Optional Text Component shown where a Player's `below_score` score would show - The default `entity.minecraft.mannequin.label` text is shown if omitted - `hide_description` - Optional boolean specifying that no description should be shown at all - A Mannequin with the description hidden displays as if a Player had no `below_score` display ![Mannequins of Alex and Sunny, swimming and standing up respectively, can be seen inside a Lush Cave.](https://launchercontent.mojang.com/v2/images/1.21.9mannequins.jpg) ### World Border - The World Border is now dimension-specific - This means that each dimension can have its own World Border size, position, etc. ### Text Rendering #### `object` Text Component - New text component with type `object` has been added - This component will display a non-character object as a part of text - Sprites are always rendered as a rectangle, 8x8 pixels in size - Bold and italics styles are ignored - Format: - `object`: type of object, string, see below for values - ``: additional fields depending on object type - Similarly to the `nbt` text component, the `object` field can be omitted - However, it's recommended to provide it for error checking ##### `atlas` Object Type - Renders a single sprite from a sprite atlas as a character - Format: - `atlas`: namespaced ID of a sprite atlas, default value: `minecraft:blocks` - `sprite`: namespaced ID of a sprite in the atlas, for example `item/porkchop` General note about atlas contents: - Sprite Atlases contain textures for items, blocks, mob effects, GUI elements, etc. - The contents are controlled by files in the `assets/minecraft/atlases/` directory in a resource pack - The current contents can be reviewed with the F3+S key combination ##### `player` Object Type - Renders a player head - If a partial profile is given, the skin is resolved in the same way as the `minecraft:profile` component on a player head - Format: - `player`: player profile - `name`: player name, optional string - `id`: player uuid, optional UUID - `properties`: profile properties, optional map - `hat`: controls rendering of a hat layer, boolean, default `true` #### `run_command` Click Event - Previously, if the `command` field contained a command that required a signed message (`/say`, `/me`, `/msg`, `/tell`, `/w`, `/teammsg`, `/tm`), it would be silently discarded - Instead, a screen will be shown that lets the user insert the command into the chat window or copy the command to their clipboard if the chat window can't be opened ### Commands - The `summon` command now fails when trying to summon monsters while the difficulty is set to Peaceful - The `spawnpoint` and `setworldspawn` commands now have control over the full player look direction - The `angle` argument has been removed - Added an optional `rotation` argument which requires both yaw and pitch to be specified - The `setworldspawn` command is no longer limited to the Overworld - This means players can respawn e.g. in the Nether when they have no Bed or Respawn Anchor - Server commands now run from the respawn dimension by default instead of always running in the Overworld #### Added `fetchprofile` - A new command that has been added to fetch the contents of a player profile from Minecraft servers - Since the operation might take some time, it works asynchronously while the game keeps running - After successful completion, a message will be printed that lets the user perform various actions: - Copy the contents of a fully resolved `minecraft:profile` component - Get a Player Head with the resolved profile - Summon a Mannequin with the resolved profile - Copy a text component to display the player head in text - Since the result is not known at the time of execution, this command always returns `1` Syntax: - `fetchprofile name ` - resolves profile by name (case-insensitive) - `fetchprofile id ` - resolves profile by id ### Data Components #### Modified `minecraft:profile` ##### New Resolution Behavior - Previously the contents of this component would permanently change when the profile was resolved, i.e. downloaded from Minecraft services - To avoid issues with this unexpected change, the resolved value is no longer stored and contents of the profile will always remain unchanged - That means this component now has two behaviors: - Static: when it has the `properties` field or when both `name` and `id` are present or when both are missing - In this state, the profile will always render as-is - If the `properties` field is missing, a default skin will be used (selected based on `id`, same as in offline mode) - That means the skin will be frozen at the moment of component creation - This option is preferred for decorative uses - Dynamic: when it has either `name` or `id` set (but not both) - When an item containing this profile is rendered on the client side, the profile will be resolved to most recent value - This means that this item will always render with the current skin of the targeted player - Note: if a player changes their skin while the game is running, the change will not be visible until the client restarts - The resolution might happen with a delay, during which the item will render with a default skin - The profile name will replace the item name only when it is present - Items with just `id` will show the default name - Items with dynamic profiles are distinguished from static ones with a label in their tooltip - Items stack based on exact contents, so even if a dynamic component is eventually resolved to the same profile as a static one, they won't stack together - Player heads in older maps that have not been loaded in newer versions yet will usually be converted to dynamic contents ##### Player Skin Overrides - Profiles can now also have additional fields that can replace various values used for rendering - If any of the fields are omitted, the value from the resolved profile is used, even if the profile resolves to the default skin - New fields - `texture` - Optional namespaced ID of the skin texture to use for rendering - The skin is specified relative to the `textures` folder and with a `.png` suffix - e.g. `entity/player/wide/steve` will use the default wide Steve skin - `cape` - Optional namespaced ID of the cape texture to use for rendering - When specified, uses the same format as the `texture` field - `elytra` - Optional namespaced ID of the elytra texture to use for rendering - When specified, uses the same format as the `texture` field - If this value is not present either as an override or in a player profile, Mannequins using this profile will use the cape texture, or if that is also not present, the default Elytra texture when wearing an Elytra - `model` - Optional model type, one of `wide` and `slim` #### `blocks_attacks` Item Component - If the damage reduced in an attack is `0`, for example by the `angle` threshold not matching, the item can no longer get disabled in the attack, nor cause knockback due to blocking ### Entity Data #### Modified `minecraft:player` - Changes to the `respawn` object - `angle` has been renamed to `yaw` and is now a required field - `pitch` has been added as a required field - `dimension` is now a required field ### Block Entity Data #### Modified `minecraft:skull` - `profile` field has been changed to match `minecraft:profile` component - That means that it also becomes immutable and is resolved only when necessary ### Loot Tables - Added `minecraft:entity_interact` loot table type which takes the following parameters: - `target_entity`, the entity being interacted with - `interacting_entity`, the optional entity that is interacting with the `target_entity` - `tool`, the tool used to interact with `target_entity` - Added `minecraft:block_interact` loot table type which takes the following parameters: - `block_state`, the block state of the block entity being interacted with - `block_entity`, the optional block entity being interacted with - `interacting_entity`, the optional entity that is interacting with the `block_state` - `tool`, the optional tool used to interact with `block_state` - Fields that specify a target entity in a loot table, such as `entity_properties.entity`, can additionally target the `target_entity` and `interacting_entity` parameter types - Added `charged_creeper/root` loot table for drops when an entity is killed by a Charged Creeper - This loot table dispatches on the mob that was killed, to the following loot tables: - `charged_creeper/piglin` - `charged_creeper/creeper` - `charged_creeper/skeleton` - `charged_creeper/wither_skeleton` - `charged_creeper/zombie` - Once any killed mob drops an item from this loot table, other mobs killed by the same Creeper will not drop from this loot table - Added `brush/armadillo` loot table for drops when an Armadillo is brushed - Added `gameplay/turtle_grow` loot table for drops when a Turtle grows into an adult - Added `harvest/beehive` loot table for drops when a Beehive or Bee Nest is harvested using Shears - Added `harvest/cave_vine` loot table for drops when a Cave Vine with Glowberries is harvested by interacting with it - Added `harvest/sweet_berry_bush` loot table for drops when a Sweet Berry Bush with Sweet Berries is harvested by interacting with it - Added `carve/pumpkin` loot table for drops when a Pumpkin is carved using Shears ### Loot Functions #### `minecraft:fill_player_head` - The `entity` field now accepts new entity context values: - `target_entity` - `interacting_entity` #### `minecraft:set_lore` - The `entity` field now accepts new context values: - `target_entity` - `interacting_entity` #### `minecraft:copy_custom_data` - The `source` field now accepts new context values: - `target_entity` - `interacting_entity` #### `minecraft:copy_name` - The `source` field now accepts new context values: - `direct_attacker` - `target_entity` - `interacting_entity` #### `minecraft:copy_components` - The `source` field now accepts new context values: - `this` - `attacker` - `direct_attacker` - `attacking_player` - `target_entity` - `interacting_entity` - `tool` ### Predicates #### `minecraft:entity_scores` - The `entity` field now accepts new entity context values: - `target_entity` - `interacting_entity` #### `minecraft:entity_properties` - The `entity` field now accepts new entity context values: - `target_entity` - `interacting_entity` ### Enchantments #### `explode` Effects New field: `block_particles` - specifies per-block particles. Each block particle is randomly chosen according to weights. A set limit of block particles is spawned each tick from all explosions that tick. Format: List of entries: - `weight`: Non-negative integer representing the random weight for this entry being chosen - `particle`: The particle to spawn - `scaling`: Optional scaling to apply between explosion center and block position, or `1.0` if not specified - `speed`: Optional scaling to apply to the speed of the particle, or `1.0` if not specified ### World Generation - The `initial_density_without_jaggedness` field in `noise_settings` definitions has been replaced with a `preliminary_surface_level` field - `initial_density_without_jaggedness` was a 3D density function that was used to determine an approximate surface level by scanning for the first point with a density greater than `0.390625` - `preliminary_surface_level` is a 2D density function that should produce the y-level of the approximate surface - The `minecraft:find_top_surface` density function can be used to replicate the previous scanning #### Density Functions ##### Added `minecraft:find_top_surface` - Approximates the topmost surface of a given density function - It scans from an upper bound to a lower bound to find the point at which the density changes from negative to positive - The upper bound should be as close to the actual surface as possible for best performance - The upper bound should never be lower than the actual surface Fields: - `density` - density function to approximate the surface of - `upper_bound` - 2D density function providing the highest possible y-value - `lower_bound` - integer, lowest possible y-value - `cell_height` - positive integer defining the grid resolution on which to scan ##### Added `minecraft:invert` - Resolves to `1/argument` Fields: - `argument` - density function #### Jigsaw Structures - The `max_distance_from_center` field may now specify a different restriction on the vertical axis from horizontal - This can be specified by an object with fields: - `horizontal` - required integer between `1` and `128` - `vertical` - optional integer between `1` and `4096` (default: `4096`) - e.g.: `"max_distance_from_center": { "horizontal": 20, "vertical": 500 }` - The previous format of a single inline value specifying both horizontal and vertical distance is still supported ### Tags #### Block Tags - Added `#copper_chests` - all Copper Chest blocks - Added `#copper` - all Copper blocks - Added `#incorrect_for_copper_tool` - all blocks which will not drop items with a copper tool - Added `#copper_golem_statues` - all Copper Golem Statue blocks - Added `#chains` - all Chain blocks - Added `#lanterns` - all Lantern blocks - Added `#bars` - all Bar blocks #### Item Tags - Added `#copper_chests` - all Copper Chest block items - Added `#copper` - all Copper block items - Added `#copper_tool_materials` - all copper tool materials - Added `#repairs_copper_armor` - all items which repair copper armor - Added `#copper_golem_statues` - all Copper Golem Statue block items - Added `#chains` - all Chain block items - Added `#lanterns` - all Lantern block items - Added `#bars` - all Bar block items - Added `#shearable_from_copper_golem` - all items that can be removed from the Copper Golem's saddle slot via Shears #### Entity Type Tags - Added `#cannot_be_pushed_onto_boats` - mobs that cannot be pushed onto boats which includes the Creaking, players and all aquatic mobs that aren't amphibious - Added `#accepts_iron_golem_gift` - mobs that will accept and receive an offered item from an Iron Golem - Added `#candidate_for_iron_golem_gift` - mobs that an Iron Golem will attempt to offer an item to, but may not necessarily accept it (see `#accepts_iron_golem_gift`) ### Particles - `dragon_breath` now optionally takes a `power` parameter (float, default `1.0`), which is multiplied onto its initial velocity, after all randomness - `instant_effect` and `effect` now optionally take `power` (float, default `1.0`) and `color` (rgb, default `0xFFFFFF`) parameters - `flash` now requires a `color` parameter (argb) ## Resource Pack Versions 64.0 Through 69.0 - Added new display transform "on\_shelf" - Used for displaying items on the Shelf ### Block Sprites - Added new block sprites: - `copper` - `copper_left` - `copper_right` - `exposed_copper` - `exposed_copper_left` - `exposed_copper_right` - `weathered_copper` - `weathered_copper_left` - `weathered_copper_right` - `oxidized_copper` - `oxidized_copper_left` - `oxidized_copper_right` - `acacia_shelf` - `bamboo_shelf` - `birch_shelf` - `cherry_shelf` - `crimson_shelf` - `dark_oak_shelf` - `jungle_shelf` - `mangrove_shelf` - `oak_shelf` - `pale_oak_shelf` - `spruce_shelf` - `warped_shelf` - `copper_bars` - `copper_chain` - `copper_lantern` - `copper_torch` - `exposed_copper_bars` - `exposed_copper_chain` - `exposed_copper_lantern` - `exposed_copper_torch` - `oxidized_copper_bars` - `oxidized_copper_chain` - `oxidized_copper_lantern` - `oxidized_copper_torch` - `weathered_copper_bars` - `weathered_copper_chain` - `weathered_copper_lantern` - `weathered_copper_torch` - Renamed the following block sprites: - `chain` to `iron_chain` ### Entity Sprites - Added new entity sprites: - `copper_golem` - `exposed_copper_golem` - `weathered_copper_golem` - `oxidized_copper_golem` - `copper_golem_eyes` - `exposed_copper_golem_eyes` - `weathered_copper_golem_eyes` - `oxidized_copper_golem_eyes` ### Item Sprites - Added new item sprites: - `copper_axe` - `copper_boots` - `copper_chestplate` - `copper_golem_spawn_egg` - `copper_helmet` - `copper_hoe` - `copper_leggings` - `copper_nugget` - `copper_pickaxe` - `copper_shovel` - `copper_sword` - `copper_chain` - `copper_lantern` - `exposed_copper_chain` - `exposed_copper_lantern` - `oxidized_copper_chain` - `oxidized_copper_lantern` - `weathered_copper_chain` - `weathered_copper_lantern` - Renamed the following item sprites: - `chain` to `iron_chain` ### Textures - Added a new texture: - `environment/end_flash.png` - Moved the result slot of `gui/container/villager.png` up by one pixel ### Sounds #### Sound Events - Added new sound events: - `block.copper_chest.open` - `block.copper_chest.close` - `block.copper_chest_weathered.open` - `block.copper_chest_weathered.close` - `block.copper_chest_oxidized.open` - `block.copper_chest_oxidized.close` - `entity.copper_golem.step` - `entity.copper_golem.hurt` - `entity.copper_golem.death` - `entity.copper_golem.spin` - `entity.copper_golem_weathered.step` - `entity.copper_golem_weathered.hurt` - `entity.copper_golem_weathered.death` - `entity.copper_golem_weathered.spin` - `entity.copper_golem_oxidized.step` - `entity.copper_golem_oxidized.hurt` - `entity.copper_golem_oxidized.death` - `entity.copper_golem_oxidized.spin` - `item.armor.equip_copper` - `entity.copper_golem.spawn` - `entity.copper_golem.no_item_get` - `entity.copper_golem.no_item_not_get` - `entity.copper_golem.item_drop` - `entity.copper_golem.item_no_drop` - `entity.copper_golem_become_statue` - `block.copper_golem_statue.break` - `block.copper_golem_statue.place` - `block.copper_golem_statue.hit` - `block.copper_golem_statue.fall` - `block.copper_golem_statue.step` - `block.shelf.activate` - `block.shelf.deactivate` - `block.shelf.multi_swap` - `block.shelf.place_item` - `block.shelf.single_swap` - `block.shelf.take_item` - `weather.end_flash"` ### Particles - Added new particle: - `copper_fire_flame` ### Shaders & Post-process Effects > **Developer's Note**: _Although it is possible in Resource Packs, overriding Core Shaders is considered as unsupported and not an intended Resource Pack feature. These shaders exist as part of the internal implementation of the game, and as such, may change at any time as the game's internals evolve. We understand that overriding Core Shaders is used for very cool Resource Pack features, many of which lack supported alternatives. We would like to provide better, supported alternatives in the future._ #### Shaders - The following unused shaders have been removed: - `core/position_color_lightmap.vsh` - `core/position_color_lightmap.fsh` - `core/position_color_tex_lightmap.vsh` - `core/position_color_tex_lightmap.fsh` - A new `PER_FACE_LIGHTING` flag has been added to the following shaders: - `core/entity.vsh` - `core/entity.fsh` - When set, cardinal lighting will be computed separately for front- and back-faces - As we now require OpenGL 3.3, we have bumped the version of all shaders from `150` to `330` #### Changes to Full Screen Passes - The following vertex shaders have been removed, and replaced by `core/screenquad.vsh`: - `core/blit_screen.vsh` - `post/blit.vsh` - `post/blur.vsh` - `post/invert.vsh` - `post/sobel.vsh` - `post/screenquad.vsh` - Vertex shaders for post-processing effects, as well as lightmap generation and full screen blits are no longer are passed the `Position` attribute, and instead must assign vertex coordinates by `gl_VertexID` - These passes furthermore are only executed with 3 vertices, instead of a full quad ## Fixed bugs in 1.21.9 - [MC-383](https://bugs.mojang.com/browse/MC-383) - In the world selection screen, world names/versions/timestamps can overflow the list to the right - [MC-2681](https://bugs.mojang.com/browse/MC-2681) - No loading progress bar whenever we create a new world or when the game is loading something - [MC-26334](https://bugs.mojang.com/browse/MC-26334) - Chat UI is forcibly cleared when killed - [MC-36783](https://bugs.mojang.com/browse/MC-36783) - Item frames/Glow item frames don't change their hitbox if they contain a map - [MC-46503](https://bugs.mojang.com/browse/MC-46503) - You can retain entities' shaders by running the "/kill" command while in spectator mode - [MC-46634](https://bugs.mojang.com/browse/MC-46634) - Thunder volume is not affected by weather volume settings - [MC-59413](https://bugs.mojang.com/browse/MC-59413) - Water and lava can drip from barriers - [MC-69216](https://bugs.mojang.com/browse/MC-69216) - Switching to spectator mode while fishing keeps rod cast - [MC-73881](https://bugs.mojang.com/browse/MC-73881) - Summoning monsters in peaceful difficulty spawns monster for 1 tick - [MC-89142](https://bugs.mojang.com/browse/MC-89142) - Changing jump key to "Enter" let player jump after completing chat line - [MC-94610](https://bugs.mojang.com/browse/MC-94610) - Missing loot table entries for mob heads from charged creepers - [MC-98200](https://bugs.mojang.com/browse/MC-98200) - All sound sliders except master are ignored by high-volume /playsound - [MC-98322](https://bugs.mojang.com/browse/MC-98322) - Flying after shifting between Creative/Spectator - [MC-99785](https://bugs.mojang.com/browse/MC-99785) - You can leash entities in spectator mode - [MC-119417](https://bugs.mojang.com/browse/MC-119417) - A spectator can occupy a bed if they enter it and then are switched to spectator mode - [MC-147784](https://bugs.mojang.com/browse/MC-147784) - Fletching table flashes crafting table's GUI for about a second upon right-clicking it in spectator mode - [MC-160528](https://bugs.mojang.com/browse/MC-160528) - End portals do not negate fall damage - [MC-163218](https://bugs.mojang.com/browse/MC-163218) - Players with the Sneak option set to "Toggle" can sneak while in GUIs - [MC-165991](https://bugs.mojang.com/browse/MC-165991) - TNT explosion no longer shows additional smoke particles since 1.15 Pre-release 1 - [MC-173730](https://bugs.mojang.com/browse/MC-173730) - Shift-clicking water buckets against a waterloggable block doesn't place the water beside the waterloggable block - [MC-174759](https://bugs.mojang.com/browse/MC-174759) - Dragon eggs can be teleported to a height below void - [MC-183776](https://bugs.mojang.com/browse/MC-183776) - After switching game modes using F3+F4, you need to press F3 twice to toggle the debug screen - [MC-183784](https://bugs.mojang.com/browse/MC-183784) - Visual bug to the Game Mode Switcher debug menu after resizing the window - [MC-187850](https://bugs.mojang.com/browse/MC-187850) - "run\_command" click\_event doesn't work in written books if chat is hidden - [MC-191669](https://bugs.mojang.com/browse/MC-191669) - Sprinting is disabled when switching your gamemode to spectator while sprinting into a block or general obstruction - [MC-192907](https://bugs.mojang.com/browse/MC-192907) - The F3 debug menu cannot be toggled while chat is open - [MC-196443](https://bugs.mojang.com/browse/MC-196443) - When reducedDebugInfo is true, hitting F3+B and F3+G would still tell the player in chat that they are being toggled, despite nothing happening - [MC-197247](https://bugs.mojang.com/browse/MC-197247) - Using F3+D to clear pending lines keeps the previous delay for a new message - [MC-203401](https://bugs.mojang.com/browse/MC-203401) - Double-tapping forward button to sprint cannot be disabled/reconfigured - [MC-217956](https://bugs.mojang.com/browse/MC-217956) - Number keys do not work on the game menu with the debug pie - [MC-220842](https://bugs.mojang.com/browse/MC-220842) - Opening game mode switcher while spectating a mob with shader effect toggles the effect - [MC-220913](https://bugs.mojang.com/browse/MC-220913) - Parity issue: Adjusting slider in the sound settings when not being in a world does not play a sound of that category - [MC-223142](https://bugs.mojang.com/browse/MC-223142) - Player can move while spectating a marker - [MC-225088](https://bugs.mojang.com/browse/MC-225088) - Overworld surface is darker than before on low brightness - [MC-232968](https://bugs.mojang.com/browse/MC-232968) - Spectators can prevent the closing animation of a chest/barrel when viewing it at the same time as a non-spectator - [MC-234479](https://bugs.mojang.com/browse/MC-234479) - You can invite the same player multiple times to your realm even if they've already received an invitation or have already joined it - [MC-234737](https://bugs.mojang.com/browse/MC-234737) - Typo in exception message: "EmtyPoolElement" - [MC-235780](https://bugs.mojang.com/browse/MC-235780) - The beacon GUI incorrectly displays the "Beacon" tooltip when the mouse cursor is held over the "Done" or "Cancel" buttons - [MC-236508](https://bugs.mojang.com/browse/MC-236508) - The title within the "Add Server" menu is displayed as "Edit Server Info" - [MC-237016](https://bugs.mojang.com/browse/MC-237016) - The chat delay function continues to print messages despite the game being paused - [MC-237590](https://bugs.mojang.com/browse/MC-237590) - The word "chunks" is improperly capitalized within the render and simulation distance sliders - [MC-237843](https://bugs.mojang.com/browse/MC-237843) - Players can be idle kicked whilst viewing the end credits - [MC-238146](https://bugs.mojang.com/browse/MC-238146) - When you switch to Spectator mode while sleeping, the night never skips - [MC-238273](https://bugs.mojang.com/browse/MC-238273) - "Locked by another running instance of Minecraft" lacks punctuation - [MC-243759](https://bugs.mojang.com/browse/MC-243759) - Explosions won't damage an entity if the distance to its eyes is 0 - [MC-249205](https://bugs.mojang.com/browse/MC-249205) - "minecraft.used:minecraft.potion" increases by a value of two when using water bottles to create mud in creative mode - [MC-250062](https://bugs.mojang.com/browse/MC-250062) - Several strings throughout the game contain comma splices - [MC-250193](https://bugs.mojang.com/browse/MC-250193) - Server log does not use the string representation of a player's GameProfile on a disconnect during encryption - [MC-251407](https://bugs.mojang.com/browse/MC-251407) - Darkness pulsing effect doesn't work in The End - [MC-254052](https://bugs.mojang.com/browse/MC-254052) - /locate doesn't work outside build limit - [MC-254668](https://bugs.mojang.com/browse/MC-254668) - Pressing Escape on the death screen's title screen warning respawns the player - [MC-257540](https://bugs.mojang.com/browse/MC-257540) - Sheep eat half as often as they did before 21w39a - [MC-257792](https://bugs.mojang.com/browse/MC-257792) - Output slot for trading menu is off-center - [MC-258191](https://bugs.mojang.com/browse/MC-258191) - Root system feature allows hanging root vertical span of 0, causing error - [MC-259347](https://bugs.mojang.com/browse/MC-259347) - Height limit warning message is shown when right-clicking the top of a block at the build height limit with a bucket - [MC-259571](https://bugs.mojang.com/browse/MC-259571) - Last player game mode not saved after player dies or the game is reloaded - [MC-259673](https://bugs.mojang.com/browse/MC-259673) - Tab selection works differently in world creation and statistics screens - [MC-259692](https://bugs.mojang.com/browse/MC-259692) - Sneaking and sprinting states are activated or toggled unexpectedly when releasing their input keys while an interface was just previously closed - [MC-259935](https://bugs.mojang.com/browse/MC-259935) - It can snow even when biome precipitation is set to NONE - [MC-260591](https://bugs.mojang.com/browse/MC-260591) - 'execute on origin' and 'execute on owner' fail to find the targeted entity when it is in a separate dimension - [MC-260822](https://bugs.mojang.com/browse/MC-260822) - The "Done" and "Cancel" buttons within the beacon GUI no longer display tooltips when the mouse cursor is held over them - [MC-260920](https://bugs.mojang.com/browse/MC-260920) - Statistics screen columns are not accessible through keyboard navigation - [MC-261387](https://bugs.mojang.com/browse/MC-261387) - Redundant block\_predicate\_filter check in mangrove tree placement - [MC-262000](https://bugs.mojang.com/browse/MC-262000) - Unused texture: misc/white.png - [MC-262370](https://bugs.mojang.com/browse/MC-262370) - Some multiplayer strings are untranslatable - [MC-263597](https://bugs.mojang.com/browse/MC-263597) - The ender dragon's respawning noise cannot be turned down by the Hostile Mobs volume slider - [MC-264962](https://bugs.mojang.com/browse/MC-264962) - Strings that contain two inputs for a given action have inconsistent spacing and apostrophes - [MC-265290](https://bugs.mojang.com/browse/MC-265290) - Elements within the command block interface are not selected in order when using the TAB key - [MC-265807](https://bugs.mojang.com/browse/MC-265807) - Mobs don't drown if their Air NBT is less than -19 - [MC-269838](https://bugs.mojang.com/browse/MC-269838) - Pumpkin seeds drop from sheared pumpkins is hardcoded - [MC-269839](https://bugs.mojang.com/browse/MC-269839) - Honeycomb drop from sheared bee nests and beehives is hardcoded - [MC-270172](https://bugs.mojang.com/browse/MC-270172) - Client and server desync for hooked players when changing gamemode to spectator - [MC-270190](https://bugs.mojang.com/browse/MC-270190) - Hovering over banner patterns in the loom UI does not display tooltips - [MC-270669](https://bugs.mojang.com/browse/MC-270669) - Incorrect argument order in translation key argument.block.property.novalue - [MC-270918](https://bugs.mojang.com/browse/MC-270918) - Loot tables for mob heads are missing copy\_components loot function for custom\_name - [MC-272584](https://bugs.mojang.com/browse/MC-272584) - Fireballs redirected by explosions caused by player owned entities no longer carry player ownership - [MC-273894](https://bugs.mojang.com/browse/MC-273894) - Some non-persistent mobs in spawn chunks continue to count towards mob cap when far away - [MC-273943](https://bugs.mojang.com/browse/MC-273943) - Sweet berries drop from harvested bushes is hardcoded - [MC-275244](https://bugs.mojang.com/browse/MC-275244) - Setting "width\_smoothness" in file configured\_carver to 0 causes the game to freeze or crash - [MC-275432](https://bugs.mojang.com/browse/MC-275432) - Subtitles are difficult to see within screens - [MC-276431](https://bugs.mojang.com/browse/MC-276431) - Dragon egg teleports above the build height limit and deletes itself - [MC-276568](https://bugs.mojang.com/browse/MC-276568) - Mipmapped versions of the armor trims atlas are generated - [MC-276629](https://bugs.mojang.com/browse/MC-276629) - Glow berries drop from cave vines appears to be hardcoded - [MC-276759](https://bugs.mojang.com/browse/MC-276759) - Scute drop from brushing armadillos is hardcoded - [MC-276826](https://bugs.mojang.com/browse/MC-276826) - Entity models render completely white in GUI screens while affected by glowing and invisibility at the same time - [MC-276931](https://bugs.mojang.com/browse/MC-276931) - Enchanted books have the wrong rarity - [MC-277447](https://bugs.mojang.com/browse/MC-277447) - Minecraft generates mipmapped textures for chests, but does not use them - [MC-277450](https://bugs.mojang.com/browse/MC-277450) - Minecraft generates mipmapped textures for shulker boxes, but does not use them - [MC-277470](https://bugs.mojang.com/browse/MC-277470) - Minecraft generates mipmapped textures for beds, but does not use them - [MC-277471](https://bugs.mojang.com/browse/MC-277471) - Minecraft generates mipmapped textures for signs, but does not use them - [MC-277473](https://bugs.mojang.com/browse/MC-277473) - Minecraft generates mipmapped textures for decorated pots, but does not use them - [MC-277481](https://bugs.mojang.com/browse/MC-277481) - Minecraft generates mipmapped textures for banners, but does not use them - [MC-277483](https://bugs.mojang.com/browse/MC-277483) - Minecraft generates mipmapped textures for shields, but does not use them - [MC-277661](https://bugs.mojang.com/browse/MC-277661) - Constantly rotating the player to their current rotation using /rotate produces jittery camera movement - [MC-277770](https://bugs.mojang.com/browse/MC-277770) - Processor type block\_age always modifies slabs property "type" to bottom - [MC-277975](https://bugs.mojang.com/browse/MC-277975) - The first line of the command execution warning in an item's tooltip is missing punctuation - [MC-278435](https://bugs.mojang.com/browse/MC-278435) - Mushroom Fields biome doesn't generate pumpkin patches despite being specified in vanilla datapack - [MC-278550](https://bugs.mojang.com/browse/MC-278550) - While flying in creative or spectator mode, the surface of water can prevent you from sprinting - [MC-278965](https://bugs.mojang.com/browse/MC-278965) - Cherry Grove is not part of the #stronghold\_biased\_to tag - [MC-279123](https://bugs.mojang.com/browse/MC-279123) - Some strings that reference Minecraft Realms use inconsistent or missing verb forms - [MC-279153](https://bugs.mojang.com/browse/MC-279153) - Some strings that mention the base values of attributes are missing articles - [MC-279173](https://bugs.mojang.com/browse/MC-279173) - The "chat.disabled.invalid\_command\_signature" string is missing an article before the word "Command" - [MC-279174](https://bugs.mojang.com/browse/MC-279174) - The "gamerule.spawnChunkRadius.description" string is missing an article before the word "Amount" - [MC-279175](https://bugs.mojang.com/browse/MC-279175) - Some multiplayer disconnection strings are missing articles and demonstratives - [MC-279176](https://bugs.mojang.com/browse/MC-279176) - The "gamerule.commandModificationBlockLimit.description" string is missing an article before the word "Number" - [MC-279212](https://bugs.mojang.com/browse/MC-279212) - Some narration strings are missing articles and possessive determiners - [MC-279548](https://bugs.mojang.com/browse/MC-279548) - TNT minecart does not remember ignition source when exploding from a fall - [MC-279793](https://bugs.mojang.com/browse/MC-279793) - Mounting horses, donkeys, mules, zombie horses, skeleton horses, and camels no longer forces you to face forward - [MC-289348](https://bugs.mojang.com/browse/MC-289348) - Ender pearls stop loading chunks in The End after relog, if there are no players in that dimension - [MC-295829](https://bugs.mojang.com/browse/MC-295829) - Test instance block GUI uses "Batch" instead of "Environment" - [MC-295841](https://bugs.mojang.com/browse/MC-295841) - Interactive collision check path is broken - [MC-296054](https://bugs.mojang.com/browse/MC-296054) - Fast non-projectile entity movements may fail to apply block effects from blocks around the starting position when moving in positive directions - [MC-296055](https://bugs.mojang.com/browse/MC-296055) - Slow non-projectile entity movements may fail to apply block effects from origin block - [MC-296057](https://bugs.mojang.com/browse/MC-296057) - Sideways non-projectile movements may fail to apply block effects from blocks around start of sideways motion - [MC-296129](https://bugs.mojang.com/browse/MC-296129) - The sunrise/sunset effect flickers on Intel graphics of Gen9 architecture - [MC-296372](https://bugs.mojang.com/browse/MC-296372) - Teleport duration is unreliable as of 1.21.5 - [MC-296789](https://bugs.mojang.com/browse/MC-296789) - The color of text within the test instance block interface is inconsistent with other similar interfaces - [MC-296897](https://bugs.mojang.com/browse/MC-296897) - Fast moving entities freeze the server which causes watchdog crash x2 - [MC-297126](https://bugs.mojang.com/browse/MC-297126) - "Failed to read field..." error spam when upgrading a 25w15a or 25w16a world - [MC-297496](https://bugs.mojang.com/browse/MC-297496) - Text inside the middle of the java realms information box completely disappears when selected - [MC-297593](https://bugs.mojang.com/browse/MC-297593) - Cauldrons now apply the effect of the substance they're filled with when contacted from the underside - [MC-297898](https://bugs.mojang.com/browse/MC-297898) - Entering a dialog temporarily closes the chat and clears anything the player was currently typing - [MC-298274](https://bugs.mojang.com/browse/MC-298274) - Certain invalid commands give "see below for error" with no additional information - [MC-298605](https://bugs.mojang.com/browse/MC-298605) - When creating a Water World superflat world, the player spawns at the bottom of the sea - [MC-298732](https://bugs.mojang.com/browse/MC-298732) - The cursor is no longer shown at the end of lines that aren't the final one - [MC-298805](https://bugs.mojang.com/browse/MC-298805) - Axes disable shields even when the shield does not block the attack - [MC-298883](https://bugs.mojang.com/browse/MC-298883) - The active world slot is not highlighted when selected via TAB navigation in Realms - [MC-299067](https://bugs.mojang.com/browse/MC-299067) - Arrows can lose ownership on disconnection in multiplayer - [MC-299105](https://bugs.mojang.com/browse/MC-299105) - Tears and Lava Chicken music disc 'desc' translations are unused - [MC-299115](https://bugs.mojang.com/browse/MC-299115) - Arrows lose their owner tag when deflected while the owner is offline - [MC-299314](https://bugs.mojang.com/browse/MC-299314) - Breaking jukeboxes in certain ways doesn't stop the music - [MC-299450](https://bugs.mojang.com/browse/MC-299450) - You can no longer double-click to select characters in the book and quill interface - [MC-299451](https://bugs.mojang.com/browse/MC-299451) - Pages in book and quills are no longer automatically focused when switching pages - [MC-299548](https://bugs.mojang.com/browse/MC-299548) - "run\_command" dialog actions don't work if chat is hidden - [MC-299566](https://bugs.mojang.com/browse/MC-299566) - The cursor in the book and quill interface is positioned too far to the left - [MC-299627](https://bugs.mojang.com/browse/MC-299627) - Entity interpolation for high speed projectiles is wildly inaccurate - [MC-299628](https://bugs.mojang.com/browse/MC-299628) - Mounted players/mobs trigger sculk sensors on world load - [MC-299770](https://bugs.mojang.com/browse/MC-299770) - Chunks loaded by ender pearls permanently unload upon player death even when enderPearlsVanishOnDeath is set to false - [MC-299782](https://bugs.mojang.com/browse/MC-299782) - Zombie villagers saved in jigsaw structures forget their biome variant and profession upon world generation - [MC-299823](https://bugs.mojang.com/browse/MC-299823) - Minecraft shaders cause C7050 warnings - [MC-299837](https://bugs.mojang.com/browse/MC-299837) - Running two or more /rotate commands in the same tick only applies the rotation of the last command - [MC-299872](https://bugs.mojang.com/browse/MC-299872) - The freezing overlay flashes when a freezing player touches fire - [MC-299873](https://bugs.mojang.com/browse/MC-299873) - Selection boxes of plain messages within dialogs can get cut off - [MC-299896](https://bugs.mojang.com/browse/MC-299896) - You can switch the worlds of expired realms to empty slots, which misleadingly prompts world creation despite no active realms subscription - [MC-299913](https://bugs.mojang.com/browse/MC-299913) - The "You don't seem to have a Realm..." focusable text widget now has a black background - [MC-300021](https://bugs.mojang.com/browse/MC-300021) - Some elements of the villager interface are now rendered above the cursor item - [MC-300034](https://bugs.mojang.com/browse/MC-300034) - Dolphins can ride boats - [MC-300092](https://bugs.mojang.com/browse/MC-300092) - F3 pie chart particle entries are missing names - [MC-300340](https://bugs.mojang.com/browse/MC-300340) - Continuously clicking "Continue" on the welcome page resets the button disappearance animation progress - [MC-300457](https://bugs.mojang.com/browse/MC-300457) - Dialog is unescapable when action or exit\_action is set to run\_command with a command that would produce a signed chat message - [MC-300856](https://bugs.mojang.com/browse/MC-300856) - I-beam cursor in book signing screen has wrong color - [MC-301447](https://bugs.mojang.com/browse/MC-301447) - Items with plain-String names created before 1.20.4 cause DFU JSON exception when loaded - [MC-301494](https://bugs.mojang.com/browse/MC-301494) - Falling particles no longer appear from floating sand or gravel - [MC-301510](https://bugs.mojang.com/browse/MC-301510) - GUI sprites nine slice performance regression - [MC-301619](https://bugs.mojang.com/browse/MC-301619) - Game mode translation key is used in the console message sent when a player tries to switch their game mode without permission - [MC-301770](https://bugs.mojang.com/browse/MC-301770) - The `below_name` plate is not displayed higher for players and mannequins named “deadmau5” - [MC-301883](https://bugs.mojang.com/browse/MC-301883) - Entities going through portals with their Motion set to more than 10 on an axis have their Motion tag reset ## Get the Release To install the Release, open up the [Minecraft Launcher](/content/minecraft-net/language-masters/download.html) and click play! Make sure your Launcher is set to the "Latest Release” option. Cross-platform server jar: - [Minecraft server jar](https://piston-data.mojang.com/v1/objects/11e54c2081420a4d49db3007e66c80a22579ff2a/server.jar) Report bugs here: - [Minecraft issue tracker](https://bugs.mojang.com/projects/MC/summary)! Want to give feedback? - For any feedback and suggestions, head over to the [Feedback site](https://feedback.minecraft.net/). If you're feeling chatty, join us over at the [official Minecraft Discord](https://discordapp.com/invite/minecraft). --- # Minecraft: Java Edition 1.21.8 Nothing beats graphical corruption and freeze issues like a blazing, steamy hotfix. Today we are releasing 1.21.8 fixing various issues experienced on certain graphics devices. ## Fixed bugs in 1.21.8 - [MC-295947](https://bugs.mojang.com/browse/MC-295947) The game screen occasionally freezes while the game keeps running on Intel graphics of Gen11 architecture - [MC-296107](https://bugs.mojang.com/browse/MC-296107) Entity and block entity textures become corrupted over time on Intel graphics of Gen11 architecture - [MC-296585](https://bugs.mojang.com/browse/MC-296585) Flickering and other graphical corruption appears after summoning one or multiple text\_display entities on some Intel devices - [MC-296908](https://bugs.mojang.com/browse/MC-296908) Texture atlases, most notably those of text, become corrupted over time on Intel graphics of Gen11 architecture - [MC-297784](https://bugs.mojang.com/browse/MC-297784) Entities and block entities are lit incorrectly after a while on Intel graphics of Gen11 architecture - [MC-298903](https://bugs.mojang.com/browse/MC-298903) Items in the inventory and text are rendered in a solid color after a while, and the items sometimes become invisible, on Intel graphics of Gen11 architecture - [MC-298908](https://bugs.mojang.com/browse/MC-298908) Items in the inventory are lit incorrectly after a while on Intel graphics of Gen11 architecture - [MC-299144](https://bugs.mojang.com/browse/MC-299144) The game crashes when loading a resource pack with an invalid shader on some AMD graphics --- # Minecraft: Java Edition 1.21.7 A hot-as-lava hotfix. It's Minecraft 1.21.7, bringing updates to your disco, plus a fresco and some crash and bug fixes. We've added a new 3x3 painting to honor everyone's best friend, as well as refreshed the loot dropped by an iconic mob. The Baby Zombie riding a Chicken (Chicken Jockey) will drop the “Lava Chicken” music disc when defeated. We will be back with the next snapshot in a few weeks. Happy Mining! ## New Features - Added a painting of a good boy by artist Sarah Boeving - Added music disc "Lava Chicken" by Hyper Potions - Drops when defeating a Baby Zombie riding a Chicken (Chicken Jockey) ## Technical Changes - The Data Pack version is now 81 - The Resource Pack version is now 64 ## Fixed bugs in 1.21.7 - [MC-280354](https://bugs.mojang.com/browse/MC-280354) Loading and unloading a resource pack that uses a x32000 atlas breaks the game - [MC-297748](https://bugs.mojang.com/browse/MC-297748) The moon is rendered incorrectly on some Qualcomm graphics - [MC-298448](https://bugs.mojang.com/browse/MC-298448) Filled maps are rendered incorrectly on some Qualcomm graphics - [MC-298681](https://bugs.mojang.com/browse/MC-298681) Text displays with the "shadow" tag enabled and the "see\_through" tag disabled exhibit z-plane fighting at a close distance - [MC-298710](https://bugs.mojang.com/browse/MC-298710) TTF glyphs are incorrectly rendered over some elements - [MC-298818](https://bugs.mojang.com/browse/MC-298818) Good boy is missing from Java Edition - [MC-298832](https://bugs.mojang.com/browse/MC-298832) The breaking particles of droppers and dispensers facing up or down appear incorrect on some Qualcomm graphics - [MC-298856](https://bugs.mojang.com/browse/MC-298856) Blindness and darkness fog effects no longer work underwater - [MC-298879](https://bugs.mojang.com/browse/MC-298879) The game crashes upon startup on some AMD graphics - [MC-298898](https://bugs.mojang.com/browse/MC-298898) TextureAtlas leaks textures after resource reload - [MC-298919](https://bugs.mojang.com/browse/MC-298919) Sometimes you pass through the happy ghast when you get off while going forward - [MC-298986](https://bugs.mojang.com/browse/MC-298986) Repeatedly reloading a 512x512 resource pack will eventually result in severe graphics corruption - [MC-299017](https://bugs.mojang.com/browse/MC-299017) Text on glowing signs is not visible on some graphics - [MC-299071](https://bugs.mojang.com/browse/MC-299071) Memory Leak in ItemStackRenderState leads to OutOfMemoryError - [MC-299110](https://bugs.mojang.com/browse/MC-299110) Force upgrading does not write new DataVersion to converted data - [MC-299126](https://bugs.mojang.com/browse/MC-299126) The server crashes when certain mobs ride a turtle --- # Minecraft: Java Edition 1.21.6 Experience the joy of soaring above the Overworld with our Chase the Skies drop! This drop not only brings an exciting flying mount to Minecraft but opens up the skies for exploring, building – and more. Raise your ghastling with care and it'll let you soar with friends above the clouds once fully grown. With 1.21.6 we are also taking steps towards adding Vibrant Visuals to Java. In this release, there are new fog improvements and clouds will extend all the way to the horizon. Go out and explore the Overworld, build high into the sky, leash a caravan of camels together, uncover new music, and find wandering friends with the Player Locator bar. ## New Features - Added Happy Ghast mob - Added Dried Ghast block - Added Harness items - Added the Locator Bar, a new HUD element that shows the direction of other Players in multiplayer - Added a new Music Disc with the track "Tears" by Amos Roddy - Added 5 new music tracks by Amos Roddy - Added new advancements - Added Old Spelling Indonesian (Indonesian pre-reform) and Cantabrian language support ### Happy Ghast The Happy Ghast is a new mountable flying mob. #### Dried Ghast Block - The Dried Ghast block is found in Nether Fossil structures and is the first stage of the Happy Ghast mob - Can be crafted with 1 Soul Sand block and 8 Ghast Tears - When waterlogged, it undergoes 3 hydration level changes over approximately 20 minutes until it spawns a Ghastling mob - The hydration level decreases when it is no longer waterlogged, using the same timescale - The hydration level is not preserved when mined - Makes sounds and shows particles depending on its hydration level - The Dried Ghast block emits a vibration frequency of 11 when its block state changes ![A Dried Ghast block underneath a Nether Fossil in a Soul Sand Valley. In the background two players are battling angry Ghasts.](https://launchercontent.mojang.com/v2/images/1.21.6hydrationscaled.jpg) #### Ghastling Mob - The Ghastling is a young version of the Happy Ghast mob - Spawns from a Dried Ghast block that has continuously been waterlogged for about 20 minutes - After spawning, the Ghastling will try and follow: - Players within a 16-block radius or - An adult, non-aquatic passive mob or some of the neutral mobs within a 16-block radius - If no player or suitable mob is close around, the Ghastling will idle around within 32 blocks from its home position where it spawned or was last interacted with - It will reset its home position if it is moved more than 16 blocks away from the border of its home position - Can be tempted and fed using Snowballs - Will grow up into a Happy Ghast after about 20 minutes, or faster if fed Snowballs ![In a Savanna village, a baby Happy Ghast is being lured with a Snowball by Efe. A stay cat is also quite curious of what Efe is holding in their hands.](https://launchercontent.mojang.com/v2/images/1.21.6ghastlingscaled.jpg) #### Happy Ghast Mob - Can be equipped with a Harness and then be mounted by up to four players - Tempted by Snowballs and Harness - The Happy Ghast can only be tempted with a Harness when it has no harness equipped - Slowly regenerates health, with regeneration speeding up during rain, snow or when flying at the same height as clouds - The first player that mounts the Happy Ghast will control it, sitting above it in the front seat - When controlled, the goggles of the Happy Ghast flip down to cover its eyes - Players mounting after the first player are placed in slots on each side of it, starting clockwise from the first player - Pressing the sneak key dismounts the player on top of the Happy Ghast - If the Happy Ghast detects players standing on top of it, it ceases all movement and rotates to the closest cardinal direction - This happens regardless of whether it has a Harness equipped or not - When mounted on the Happy Ghast, the third-person camera is further away from the player - When there are no players mounted or walking on the Happy Ghast, it starts its roaming behavior - If players dismount midair, the Happy Ghast will descend towards the ground before it starts roaming - The roaming behavior is similar to the Ghastling, except for the radius being 64 blocks - When wearing a Harness, the Happy Ghast roams closer to the home position, within a 32 block radius - When leashed, the Happy Ghast has a roaming distance of 10 blocks - The Happy Ghast will try to stay close to blocks when roaming - Cannot be bred - Cannot enter boats - Has no panic behavior when taking damage ![Ari and Efe building a castle. Ari is standing on a Happy Ghast, using it to place blocks under the balcony.](https://launchercontent.mojang.com/v2/images/1.21.6buildfromhappyghastscaled.jpg) #### Harness Item - The Harness is a new item that can be equipped on a Happy Ghast to allow players to ride it - The Harness comes in 16 different colors - Can be crafted out of 3 Leather, 2 Glass blocks and 1 Wool block - The Harness will have the same color as the Wool block used when crafting - Can be re-dyed in the crafting grid - Can only be equipped on a Happy Ghast - Allows up to 4 players to mount the Happy Ghast - Can be removed from the Happy Ghast using Shears when no players are mounted ### Locator Bar The Locator Bar is a new UI element that displays the direction of other players in the world. - If another player is in the world (and that player is not hiding) the Locator Bar will display in the same area as experience bar - When experience is gained the experience bar will appear - If there are no other players in the world the experience bar will display as normal - Facing other players within a 120 degree range will display those players as colored indicators on the Locator Bar - Other players that are above/below the screen will also display an up/down arrow together with their indicator - The indicator will change to different sized icons depending on how far away the other Player is - Colored indicators are randomized for each player - Operators can modify the colors of indicators with the `/waypoint` command - e.g.: `/waypoint modify @s color red` to set an indicator to red - Players on a team will override their default indicator color with their team color - Players can hide by crouching, wearing a mob head or a Carved Pumpkin, or using a Potion of Invisibility - Players in Spectator Mode are not visible on the Locator Bar - However, spectators are visible to each other - The Locator Bar can be toggled off by setting the `locatorBar` game rule to `false` ![Player using the locator bar to find their friends in a large cave with skeletons onlooking.](https://launchercontent.mojang.com/v2/images/1.21.6locatorbarscaled.jpg) ### Music and Sound - Added a new music disc: - "Tears" by Amos Roddy - Can be obtained by killing a Ghast with a Fireball deflected by a Player - Has a comparator output of 10 when played in a Jukebox - Added 5 new background music tracks by Amos Roddy: - "Below and Above" - "Broken Clocks" - "Fireflies" - "Lilypad" - "O's Piano" - Added a new sound for when a Lead snaps - Added new custom sounds for shearing Saddles, Horse Armor, and Carpets from Llamas - Added new sound volume category called "UI" for sounds played by UI elements, like button clicks - Music now plays even when the game is paused - Added an option to the Music & Sound settings that allows players to change how frequently music plays while in a game world - Added an option to the Music & Sound settings that enables a music toast to be shown whenever a song starts playing - With this option enabled, the song that is currently playing will always be seen in the top left corner of the in-game Pause Menu ![Player harmoniously fishing in the open ocean. A Music Toast shows them listening to "Amos Roddy - Lilypad".](https://launchercontent.mojang.com/v2/images/1.21.6musictoastscaled.jpg) ### Advancements - Added new "Stay Hydrated!" Husbandry Advancement when a Dried Ghast block is placed into Water - Added "Heart Transplanter" Adventure Advancement that is unlocked when a player places a Creaking Heart with the correct alignment between two Pale Oak Log blocks ## Changes - Changed leash mechanics and updated recipe for Lead - Saddles are now craftable and shearable - Updated Ghast texture - Improvements to fog - Updates to music and sound - Improvements to the Realms configuration screen and introduced a region preference setting - Piglins can now give Dried Ghast blocks when bartered with - Splash Potions effect strength is now based on the distance of the hitboxes - The target tolerance margin of projectiles now changes over time - Changed Elytra so that while gliding, using a Firework Rocket will only be used as a boost even if it could be placed on a block - Spectators will now teleport together with entities that move to other dimensions, but will stop spectating them - Increased the third-person camera distance when spectating or riding Ghasts or Ender Dragons - The fix to [MC-3697](https://bugs.mojang.com/browse/MC-3697) has been partially reverted - Decorative hanging entities such as paintings and item frames are now immune to explosions from submerged TNT while items and armor stands are once again vulnerable to them - Wolves, Sheep and Pigs now have their legs mirrored - The test framework will no longer try to restart running tests after a server restart - Clouds now exist all the way to the horizon, with an option to reduce them - Updated the pattern of clouds in the sky - Horses, Donkeys, and Mules can now be fed Carrots to heal, grow, and improve their temper - Updated the main screen panorama - Removed Herobrine ![A tamed Wolf is leading a small heard of Sheep with leads. They are being led into a small Cherry Blossom pen.](https://launchercontent.mojang.com/v2/images/1.21.6sheepleashedtowolfscaled.jpg) ### Leash Changes - The Slime Ball in the Lead recipe has been replaced with a String - Improved leash mechanics, with reworked leash physics, allowing for more stable leash connection, especially when leashed entities are not on ground - When dragged on the leash, leashed objects will now orient themselves towards the entity holding the leash - Using a Firework Rocket when flying with leashed entities will now break the leash connections - Leashes are now rendered twice as thick, matching Minecraft: Bedrock Edition - Leashes can now be used to leash two mobs together - Sneak-interact on any mob while holding leashed mobs will leash these mobs to the entity interacted with - Re-leashing an entity is prevented if the re-leashing would result in immediate leash snapping due to distance - Leashes can be snipped from an entity when interacting with them using Shears - This applies to its own leash connection as well as all entities attached to it - Dispensers can now snip leashes from entities in front of them when they are equipped with Shears - When leashing an already leashed mob, their previous leash snaps - You cannot steal leashed entities from other players - Interactions with a Leash Knot/Fences: - Fails for entities that are not in range of the Leash Knot/Fence - All entities leashed to the player will be leashed to the Leash Knot/Fence - Transfers all its leashed entities to the player if the player has no entities leashed - Sneak-interact only ever attaches leashes - Shearing or punching the Leash Knot will result in all current connections to be broken - A Leash Knot requires at least one connection to exist - Boats and large mobs that can be leashed but cannot fit in a Boat (Horses, Donkey, Mule, Camel and Sniffer) can be leashed in a special quad connection to the Happy Ghast - Happy Ghast will also show a custom layer when it's leashing something using a quad connection - Entities leashed in quad connection are now rendered without slack - Leash snapping distance has been changed from 10 to 12 blocks - Happy Ghast has a leash snapping distance of 16 blocks - The distance between two leashed entities is determined based on the center of their bounding boxes, rather than their feet ![Player crafting two Leads using the new changed recipe using only five Strings.](https://launchercontent.mojang.com/v2/images/1.21.6leashcraftscaled.jpg) ### Saddle Changes #### Crafting Saddles - Saddles can now be crafted with 3 Leather and 1 Iron Ingot - The recipe is unlocked when a player picks up their first Leather ![Player crafting a Saddle using the new recipe using three Leather and one Iron Ingot.](https://launchercontent.mojang.com/v2/images/1.21.6saddlecraftscaled.jpg) #### Removing Saddles and Equipment - Saddles, Horse Armor, Harnesses and Carpets can now be removed from the mobs by using Shears - This does not work in case the mob has a rider, or if the player is crouching - Saddles cannot be removed from Ravagers using Shears - Dispensers with Shears cannot remove Saddles, Horse Armor, Harnesses or Carpets equipped on mobs - Shearing Saddles, Horse Armor, and Carpets will emit a vibration frequency of 6, along with the Unequip frequency of 4 #### Loot Table Changes The following loot tables have had Saddles removed from them and replaced with 1-5 Leather: - Monster Room chests - Ancient City chests - Desert Pyramid chests - Jungle Pyramid chests - Stronghold altar chests ### Fog - Fog was tweaked for improved atmospheric perspective - It now becomes foggier when it rains - Fog is now applied to 3D HUD elements such as first-person player hands and items in hands ![Standing in a rainy Forest with a Jungle far in the distance. Clouds stretching as far as the eye can see.](https://launchercontent.mojang.com/v2/images/1.21.6rainfogscaled.jpg) ### Ambient Desert Block Sounds Changes - Ambient sand sounds no longer require sky access to play - Ambient sand sounds now have a slightly decreased chance to play - Terracotta blocks no longer trigger ambient sand sounds - Sand blocks no longer trigger ambient wind sounds - Terracotta blocks no longer trigger ambient wind sounds - Short Dry Grass and Tall Dry Grass can now trigger ambient wind sounds when above 2 Sand, Red Sand or Terracotta blocks - Dead Bush ambient sounds now have a slightly increased chance of playing ### Music and Sound - The following sound categories have been renamed: - Friendly Creatures -> Friendly Mobs - Hostile Creatures -> Hostile Mobs - Rules for when ambient desert blocks sounds play have been tweaked ### Realms - Changed the layout of the Realms configuration screen to use tabs - The Worlds tab allows changes to any of the world slots, creating new worlds and changing their settings - The Players tab allows management of the players that have access and their level of access to the Realm - The Subscription tab allows management of the Realms subscription - The Settings tab allows changing the settings of the Realm - Introduced a Region Preference setting that allows for more granular control over what region a Realm is hosted in - Changed wording for `Close`/`Open` Realm to `Temporarily close`/`Reopen` Realm - Added the Realms logo to the Realms loading screens - Added region information when connecting to a Realm ![A new user interface for configuring your Realm.](https://launchercontent.mojang.com/v2/images/1.21.6realmsscaled.jpg) ### Projectile Targeting - The target tolerance margin of projectiles now changes over time - Previously, all projectiles had a target tolerance margin of 0.3 blocks - Now, all projectiles start with no margin for the first two ticks of their flight - After that, the target margin will expand by 0.05 blocks per tick until it reaches the previous 0.3 blocks margin - This allows for better precision close to the shooting player or entity, while still allowing for some collision leeway when the projectile is further away ### Splash Potions - Splash Potions distance to affected entities now depends on the closest distance between the entity hitbox and the splash potion hitbox where it landed - This means that if an entity is hit directly by the splash potion, it will receive the full effect of the potion - If the entities are grouped together, they will receive the same effect strength ## Technical Changes - The Data Pack version is now 80 - The Resource Pack version is now 63 - All JSON files (in worlds, packs, configuration, etc.) are now parsed in strict mode - Pressing F3 + V now prints client-side version information - "Command Syntax" report now contains information about required permission level - `--quickPlaySingleplayer` command line argument can now be used without an identifier to launch into the last played world ## Data Pack Versions 72 Through 80 - Dimension Type definitions have a new optional field, `cloud_height` that indicates on what y-level the clouds start in the dimension - New `version` command has been added - New `datapack create` subcommand has been added - Added a way to display very simple dialogs to users - Added a Server-authoritative Waypoint broadcasting system for controlling the Locator Bar behavior for Players - Added `custom` - a new `click_event` action type for text components - New optional fields `can_be_sheared` and `shearing_sound` have been added to the `equippable` item component - Added `player_sheared_equipment` advancement trigger ### Commands #### Added `version` Prints the current version information on the server side. - Takes no arguments - Available in singleplayer or for server operators #### Added `datapack create` Creates a new empty directory data pack for the current world. - The supported pack version is always equal to one supported by the game - Available only to server owners - Syntax: `datapack create ` - `id` - new pack name, must be a valid directory name - `name` - text component to be placed in `description` in `pack.mcmeta` #### Modified `playsound` - Added new category `ui` - Sounds in this category will continue playing when paused, similarly to `music` #### Added `waypoint` This is a new command for querying and modifying waypoints. waypoint list waypoint modify color waypoint modify color hex waypoint modify color reset waypoint modify style waypoint modify style reset Arguments: - `entity-selector`: For selecting entities that are transmitting as waypoints (see `waypoint_transmit_range` attribute) - `color`: Overrides the Locator Bar icon color for this waypoint - `hex ` arguments are in web format (RRGGBB) - Red is either `hex F00` or `hex FF0000` - Cornflower blue is `hex 6495ED` - `style`: For changing the icon spriteset and selection distances - `set ` changes the style to a specific asset under `waypoint_style/` (see Waypoint Styles section below) - `reset` will restore the default icon behavior of the Locator Bar ### Waypoint Broadcasting The Locator Bar works through a server-controlled Waypoint system. Waypoints are received by Players, and connections between Waypoints and Players are managed by the multiplayer server. - By default, all Players transmit a Waypoint from themselves, and all Players receive all Waypoints - Individual Players can have their transmission and receive ranges controlled by the `waypoint_transmit_range` and `waypoint_receive_range` attributes ### Dialogs - Added a way to display simple modal dialogs to a user - Dialogs are stored in a `minecraft:dialog` registry, but can also be defined inline - Dialogs are an experimental feature - To avoid user confusion, dialog screens are marked with a warning sign next to the title - Clicking on this warning leads to a screen that explains to user that this screen is provided by custom content - It also gives the user an option to leave the current world to avoid them being locked in an infinite loop of dialogs - If a new dialog is received by the client while warning screen is visible, it will not replace it, but when user clicks the "Back" button, the new dialog will be restored instead - Dialogs can be displayed by server in `play` and `configuration` connection phases - However, only inline registries are allowed in `configuration`, since registries are not yet available in that phase - Additionally, `run_command` click event is not available in `configuration` phase - Dialogs by default will close after the Escape key is pressed - When this happens, dialog will run action specific to dialog type described as "exit action" below - This behavior is configurable - When the dialog screen is closed, the game goes back to previously displayed non-dialog screen or back to gameplay - That means that new dialogs always replace already opened ones, if any - Dialogs can be configured to be accessible from Pause menu - This replaces and expands the "Server Links" button added in previous versions - New key bind called "Quick Actions" has been added to allow accessing content-configured dialogs - Most dialogs follow a common layout, however exact contents depend on type: - Header with title and warning button - Body elements, scrollable if needed: - messages and items - inputs - actions buttons - Optional footer, contains main buttons and submit actions > **Developer's Note**: _Dialogs are not supposed to fully describe any in-game UI, but just to allow custom content to display simple messages and get input from users. This feature is intentionally limited to match that use case._ ![An example of a custom Dialog screen.](https://launchercontent.mojang.com/v2/images/1.21.6customdialogscaled.jpg) #### Dialog Description Format - Dialogs are stored in `minecraft:dialog` registry that can be provided by a datapack Fields: - `type` - one of dialog types from `minecraft:dialog_type` registry - `` - see below ##### Common Dialog Fields - Most dialog types share some fields. To avoid duplication, they are listed in this section Fields: - `title` - screen title, text component - Should be always visible on screen, no matter the specific type - `external_title` - name to be used for a button leading to this dialog (for example from Pause screen), optional text component - If not present, `title` will be used instead - `body` - optional list of body elements or a single element, see below - `inputs` - optional list of inputs, see below - `can_close_with_escape` - can dialog be dismissed with Escape key, default `true` - `pause` - should the dialog screen pause the game in single-player mode, default: `true` - `after_action` - additional operation performed on dialog after click or submit actions, default: `close` - `close` - closes dialog and returns to previous non-dialog screen (if any) - `none` - do nothing, i.e., keep the current screen open - only available if `pause` is `false` to avoid locking the game in single-player mode - `wait_for_response` - replace the current dialog with a "Waiting for Response" screen - this option is intended to prevent users from sending multiple actions on laggy connections - servers are expected to eventually replace this screen with a new dialog - to avoid accidental locking, a "Back" button will become active after 5 seconds - clicking this button will continue as if the dialog was closed (i.e., game returns to the previous non-dialog screen, if any) - "Waiting for Response" screen will unpause the game in single-player mode to avoid locking the game ##### Dialog Types ###### `minecraft:notice` - A simple screen with one action in footer - Exit action: same as `action` Fields: - Common dialog fields (see above) - `action` - main action (see below), defaults to a button with `gui.ok` label and no action or tooltip ###### `minecraft:confirmation` - A simple screen with two actions in footer - Exit action: same as `no` action Fields: - Common dialog fields (see above) - `yes` - action (see below) for positive outcome - `no` - action (see below) for negative outcome ###### `minecraft:multi_action` - A scrollable list of actions arranged in columns - Screen can have optional exit action that will appear in footer - Exit action: same as `exit_action`, if present Fields: - Common dialog fields (see above) - `actions` - non-empty list of actions (see below) - `exit_action` - optional action (see below) in footer - `columns` - positive integer describing number of columns, default: `2` ###### `minecraft:server_links` - A scrollable list of links received from server in `minecraft:server_links` packet, arranged in columns - Note: this is a replacement for the previous Server Links screen, but now with an additional body - Exit action: same as `exit_action`, if present Fields: - Common dialog fields (see above) - `exit_action` - optional action (see below) in footer - `columns` - positive integer describing number of columns, default: `2` - `button_width` - width of buttons in the list, integer from `1` to `1024` (inclusive) with default `150` ###### `minecraft:dialog_list` - A scrollable list of buttons leading directly to other dialogs, arranged in columns - Titles of those buttons will be taken from `external_title` fields of targeted dialogs - Exit action: same as `exit_action`, if present Fields: - Common dialog fields (see above) - `dialogs` - dialog, a list of dialogs or a dialog tag - `exit_action` - optional action (see below) in footer - `columns` - positive integer describing number of columns, default: `2` - `button_width` - width of buttons in the list, integer from `1` to `1024` (inclusive) with default `150` ##### Dialog Body Types - All dialogs have a list of body elements describing contents between title and actions or inputs - Hover and click events on text components within bodies function as expected - Click events are handled by dialog screen like any other action - that means it will also run `after_action` Fields: - `type` - one of dialog body types from `minecraft:dialog_body_type` registry - `` - see below ###### `minecraft:plain_message` - A multiline label Fields: - `contents` - text component - `width` - maximum width of message, integer from `1` to `1024` (inclusive) with default `200` ###### `minecraft:item` - Item with optional description - If a description is present, it will be rendered to the right of item - The Item will be rendered as if it was in inventory slot - The Item is not scaled even if `width` and `height` are set to values other than default Fields: - `item` - item stack with count - `description` - optional object with fields: - `contents` - text component - `width` - maximum width of contents, integer from `1` to `1024` with default `200` - Can also just be text component - `show_decorations` - if `true`, count and damage bar will be rendered over the item, default: `true` - `show_tooltip` - if `true`, item tooltip will show up when item is hovered, default: `true` - `width` - horizontal size of element, integer from `1` to `256` (inclusive) with default: `16` - `height` - vertical size of element, integer from `1` to `256` (inclusive) with default: `16` ##### Input Control Types - Dialog can contain a set of controls that accept user input - When submitted, the current value of the input will be used to build response to the server according to action selected by user (see below) - When a value is inserted into a macro, template substitution form is used - When a value is sent as a tag, tag form is used Fields: - `type` - one of input control types from `minecraft:input_control_type` registry - `key` - string identifier of value used when submitting data, must be a valid template argument (letters, digits and `_`) - `` - see below ###### `minecraft:text` - A simple text input - Output values: - As template substitution: contents with special characters escaped to fit in a SNBT literal (note: both `'` and `"` are escaped) - As tag: a string tag with contents without modification Fields: - `width` - width of the text input, integer from `1` to `1024` (inclusive) with default: `200` - `label` - a text component to be displayed to the left of control - `label_visible` - controls label visibility, default: `true` - `initial` - initial contents, default: `""` (empty) - `max_length` - maximum length of the text input, positive integer with default of 32 - `multiline` - if present, allows users to input multiple lines, optional object with fields: - `max_lines` - if present, limits maximum lines, optional positive integer - `height` - height of input, optional integer in range `1` to `512` - If this field is omitted, but `max_lines` is present, the height will be chosen to fit the maximum number of lines (but can't exceed `512`) - If this and `max_lines` are both omitted, it will default to a height that fits 4 lines ###### `minecraft:boolean` - A plain checkbox with a label - Output values: - As template substitution: `on_true` when checked, `on_false` when unchecked - As tag: `1b` when checked, `0b` when unchecked Fields: - `label` - a text component to be displayed to the right of control - `initial` - an initial value, default: `false` (i.e., unchecked) - `on_true` - a string value to send when control is checked, default: `true` - `on_false` - a string value to send when control is unchecked, default: `false` ###### `minecraft:single_option` - A button that cycles between a set of options when clicked - Output values: - As template substitution: contents of `id` field of currently selected option - As tag: a string tag with contents of `id` field of currently selected option Fields: - `label` - a text component to be displayed on the button - `label_visible` - if `true`, label will be incorporated into button text, default: `true` - `width` - width of the button, integer from `1` to `1024` (inclusive) with default: `200` - `options` - a list of objects with fields: - `id` - a string value to send on submit - `display` - a text component to display on button, optional (if not present, `id` is used) - `initial` - an optional boolean flag that selects initial option (only one option can have this be set to `true`) - Additionally, the list might also contain a plain string - in that case it's equivalent to a single entry with field `id` set to that string and other fields set to default ###### `minecraft:number_range` - A slider for picking a numeric value out of some range - Sends currently selected value - Output values: - As template substitution: text representation of current value - Whole numbers will be sent without decimal point - As tag: a float tag with current value Fields: - `label` - a text component to be used as a slider label - `label_format` - a translation key to be used for building label (first argument is contents of `label` field, second argument is current value), default: `options.generic_value` - `width` - width of input, integer from `1` to `1024` (inclusive) with default: `200` - `start` - start value (when slider is in leftmost position) (inclusive), float - `end` - end value (when slider is in rightmost position) (inclusive), float - `initial` - initial value of the slider, float, defaults to the middle of slider range - `step` - step size, optional positive float - If present, only values of `initial + * step` will be allowed - If absent, any value from range the is allowed #### Actions Dialogs have at least one action, presented to the user as a button. After every action dialog will always evaluate contents of `after_action` field (see above). Fields: - `label` - a button label, text component - `tooltip` - an optional text component to display when the button is hovered or focused - `width` - the width of the button, integer from `1` to `1024` (inclusive) with default `150` - `action` - an action to perform when the button is clicked, optional object with fields: - `type` - value from `minecraft:dialog_action_type` registry - `` - see below, depends on `type` ##### Static Dialog Action Types All existing `click_event` actions (except for `open_file`) are included as dialog action types. Uses same format as `click_event` on text components (but with `action` replaced with `type`) For example, when using `show_dialog`, the entry for action button will look like this: { "label": "some label", "action": { "type": "show_dialog", "dialog": "some:id" } } ##### `minecraft:dynamic/run_command` Action Type - This action will build a `run_command` event using a provided macro template - The macro will be expanded with string values from inputs - For example, if the macro template is `some_command $(some_input)`, the string value from input with `key` of `some_input` parameter will be used for the template expansion - Inputs not used in macro will be ignored, while macro parameters not matching any inputs will be replaced with an empty string Fields: - `template` - a string with a macro template to be interpreted as a command ###### `minecraft:dynamic/custom` Action Type - This method will build a `minecraft:custom` event using all input values - All input contents will be sent together inside a compound tag, with tag value of each input put under id from `key` field of that input - Additional static fields can be added to payload Fields: - `additions` - fields to be added to payload, optional compound tag - `id` - namespaced ID ##### Built-in Dialogs The built-in datapack contains some custom dialogs to provide customization of specific screens used by the client. ###### `minecraft:server_links` - Replacement for the previously existing "Server Links" screen - Meant to simplify migration for servers that previously used this feature ###### `minecraft:custom_options` - Shows contents of `minecraft:pause_screen_additions` tag (see below) - Allows the user to select a specific dialog if this tag contains multiple entries - Note: Since this tag is meant for interoperability, any content that replaces this dialog should be careful not to hide other dialog providers #### Dialog Command - New command has been added to show dialog to clients Syntax: - `dialog show ` - show dialog to player(s) - `` - player name, UUID or a player selector - `` - a namespaced ID from `minecraft:dialog` registry or inline dialog value as described above - Returns the number of players in `targets` argument - `dialog clear ` - clean dialog for player(s), if they have any visible - `` - player name, UUID or a player selector - Returns the number of players in `targets` argument #### Pause Screen Configuration - A data pack can request some of the available dialogs to be accessible from Pause screen - This feature replaces the "Server Links" button and is placed on Pause screen according to the same rules - Buttons leading to dialogs exposed in this way will use label described in `external_title` field - This feature is configured by `minecraft:pause_screen_additions` dialog tag: - If this tag is not specified or is empty but the server has sent `server_links` packet, the tag will be handled as if it contained `minecraft:server_links` dialog - Note: this matches previous Server Links feature behavior - If this dialog is removed, the tag remains empty - If this tag is still empty, the button will not be visible ("Send Feedback" and "Report Bugs" buttons are visible instead) - If this tag has a single element, the pause screen button will lead directly to that dialog - If this tag has multiple elements, the pause screen button will lead to a `minecraft:custom_options` dialog which (by default) lets user select one of the tag elements - If this dialog is removed, the button is will not be visible #### Quick Actions Key Bind - A new key bind has been added that allows users to access a set of dialogs - Default key: `G` - This feature is configured by `minecraft:quick_actions` dialog tag - If this tag is empty, the key bind will do nothing - If this tag has a single element, the key bind will open that dialog - If this tag has multiple elements, the key bind will lead to `minecraft:quick_actions` dialog which (by default) lets user select one of the tag elements - If this dialog is removed, the key bind will do nothing - This option is intended for use in custom content and by servers, so this tag is empty in the Vanilla pack ### Text Components #### Click Events - Users will now be prompted for confirmation before executing a command from the `run_command` click action in books and chat if the command can't be parsed or requires elevated permissions (i.e., higher than 0) ##### Added `minecraft:custom` - A new click action called `minecraft:custom` has been added - When user clicks a component with this click action, the client will send a dedicated packet `minecraft:custom_click_action` to a server - The intended use is as an alternative for `run_command` to be used by modded servers without worrying about having to add custom commands - This packet has no functionality on Vanilla servers - Fields: - `id` - namespaced ID - `payload` - optional tag field ##### Added `minecraft:show_dialog` - A new action called `show_dialog` has been added - When user clicks this component, a dialog will be opened for them - Fields: - `dialog` - a namespaced ID from `minecraft:dialog` registry or inline dialog value as described above ### Game Rules #### Added `locatorBar` - Default is `true`: enabling the Locator Bar - Changing to `false` will remove all existing Waypoints from all players ### Attributes #### Added `camera_distance` - Default value: `4.0` - Modifies the distance at which the camera is placed away from the player or spectated entity when in a third-person view - If the entity being ridden has a larger `camera_distance` attribute, that distance will be used - This distance is multiplied by the `scale` attribute to get a final target camera distance #### Added `waypoint_transmit_range` and `waypoint_receive_range` - Default: `0.0`, Minimum: `0.0`, Maximum: `60000000.0` - Players have a default transmission and reception range of 60,000,000 - Mobs with a transmission range above zero will send waypoint packets to nearby receivers that are within that range - Similarly, receivers only receive waypoints that are inside their reception range (and receive nothing if that range is zero) Examples: - `/attribute @s minecraft:waypoint_transmit_range base set 0` will prevent a player from transmitting (hiding them) - `/attribute @s minecraft:waypoint_transmit_range base set 80` will only let a player transmit up to 80 blocks (hiding them from players further than that) - `/attribute @s minecraft:waypoint_receive_range base set 0` will prevent a player from receiving (turns off their Locator Bar) - `/attribute @s minecraft:waypoint_receive_range base set 120` will only let a player see Locator Bar dots that are within 120 blocks (hiding all players further than that) #### Changed `flying_speed` - The `flying_speed` attribute now also applies to Ghasts and Happy Ghasts ### Data Components #### `equippable` Item Component - Added a new optional field: `can_be_sheared` (boolean) - If `true`, players can use Shears to remove this equippable item from a target mob by right-clicking, provided all other shearing conditions are satisfied - If not specified, it defaults to `false` - Added a new optional field: `shearing_sound` (sound event) - It's a sound event that plays when the equippable item is sheared - If not specified, it defaults to the `item.shears.snip` sound event #### `attribute_modifiers` Item Component - Added an optional `display` field to `attribute_modifiers` entries - There are 3 `display` types: - `default` - Current behavior of showing the calculated attribute modifier values on the tooltip - `hidden` - Does not show the attribute modifier entry - `override` - Replaces the shown attribute modifier text - Contains a single field `value` for the text contents to show for this attribute modifier entry #### `painting/variant` Item Component - No longer accepts inline variants ### Entity Data - Added the `home_pos` and `home_radius` fields to all mobs - Mobs with set home position will limit their pathfinding to stay within the indicated area - Some mobs, such as Bats, Slimes, Magma Cubes, Phantoms and Ender Dragons may ignore it - Interacting with leashes or riding may change the home position of the mob #### `area_effect_cloud` - The `Particle` field has been renamed to `custom_particle`, and now always functions as an exact override for the default colored `entity_effect` particle - The field will not be written if no override is specified - The color will no longer be inherited from the potion contents when specifying the `entity_effect` or `tinted_leaves` particle types #### `tnt` - The entity that primed the TNT is now stored in an optional `owner` field (UUID of Living entity) #### `vex` - The owner of a Vex is now stored in an optional `owner` field (UUID of mob) ### Advancements Added `minecraft:player_sheared_equipment` trigger - Can Trigger when a player shears off a shearable equipment from an Entity - Conditions: - `item` - Item that is sheared - `entity` - The entity that was sheared ### Tags #### Block Tags - Added `#triggers_ambient_desert_dry_vegetation_block_sounds` - blocks that can trigger ambient desert dry vegetation sounds to play from blocks above - Added `#happy_ghast_avoids` - blocks that Happy Ghasts avoid getting close to - `#plays_ambient_desert_block_sounds` has been renamed to `#triggers_ambient_desert_sand_block_sounds` - Added `triggers_ambient_dried_ghast_block_sounds` - blocks that can trigger ambient Dried Ghast sounds to play when a Dried Ghast block is placed on them #### Item Tags - Added `#happy_ghast_food` - items that can be used to feed Happy Ghasts - Added `#happy_ghast_tempt_items` - items that can be used to tempt Happy Ghasts #### Entity Tags - Added `#can_equip_harness` - entities that can equip the Harness items - Added `#followable_friendly_mobs` - non-baby entities that will be followed by Baby Happy Ghasts ## Resource Pack Versions 56 Through 63 - The game will now consistently respect the `blur` texture parameter in `.png.mcmeta` files - All core shader uniforms are now uniform blocks - The cloud texture (`clouds.png`) can no longer be colored - Cube rotations in block models are no longer limited to multiples of 22.5 degrees - Updated Unifont to 16.0.03 - Panorama textures must now all be the same size, and square - Added `oversized_in_gui` item model field - Added new player head special model type ### Waypoint Styles These define custom icons to be displayed on the Locator Bar and are within the `waypoint_style/` asset directory. - `near_distance` and `far_distance` are optional and default to the values `128` and `332` respectively - `far_distance` distance must be greater than `near_distance` - `sprites` is a list of at least one sprite IDs within the prefix of `hud/locator_bar_dot/` (the directory `textures/gui/sprites/hud/locator_bar_dot`) - An example "bowtie" waypoint style is provided and accessible via the command: - `/waypoint modify style set bowtie` - When the distance to the waypoint is less than `near_distance`, the first sprite in the list will be selected - When the distance to the waypoint is greater than `far_distance`, the last sprite in the list will be selected - Between this range, sprites will be selected based on the linear progress between the near and far distances ### Sounds - Changed location on the sounds for Glow Squid, Squid, Guardian, Horse, Rabbit and Pufferfish from `entity` folder to the `mob` folder - Added `entity/leashknot/break` for when a Lead snaps - The following sounds have been renamed: - `entity/leashknot/break1` -> `entity/leashknot/unleash1` - `entity/leashknot/break2` -> `entity/leashknot/unleash2` - `entity/leashknot/break3` -> `entity/leashknot/unleash3` - `entity/leashknot/place1` -> `entity/leashknot/leash1` - `entity/leashknot/place2` -> `entity/leashknot/leash2` - `entity/leashknot/place3` -> `entity/leashknot/leash3` - The following sounds have been added for shearing Saddles, Horse Armor, and Carpets - `mob/horse/armor_unequip` - `mob/horse/saddle_unequip` - `mob/llama/unequip` #### Sound Events - `block.sand.wind` has been renamed to `block.dry_grass.ambient` - `entity.leash_knot.break` had been replaced with `item.lead.break` and `item.lead.untied` - `entity.leash_knot.place` has been renamed to `item.lead.tied` - The following sound events have been added: - `block.dried_ghast.break` - `block.dried_ghast.step` - `block.dried_ghast.fall` - `block.dried_ghast.ambient` - `block.dried_ghast.ambient_water` - `block.dried_ghast.place` - `block.dried_ghast.place_in_water` - `block.dried_ghast.transition` - `entity.ghastling.ambient` - `entity.ghastling.death` - `entity.ghastling.hurt` - `entity.ghastling.spawn` - `entity.happy_ghast.ambient` - `entity.happy_ghast.death` - `entity.happy_ghast.hurt` - `entity.happy_ghast.riding` - `entity.happy_ghast.equip` - `entity.happy_ghast.unequip` - `entity.happy_ghast.harness_goggles_up` - `entity.happy_ghast.harness_goggles_down` - `item.horse_armor.unequip` - `item.llama_carpet.unequip` - `item.shears.snip` - `item.saddle.unequip` ### UI Sprites - The mob effect atlas has been removed, and sprites in the `textures/mob_effect/` folder are now included within the GUI atlas - This means mob effect sprites now support GUI sprite scaling properties - Added `icon/music_notes` and `toast/now_playing` sprites ### Font #### Unifont - Updated Unifont to 16.0.03 - Added previously omitted Unifont glyphs for Private Use Areas - Those glyphs are loaded as a separate sub-font `minecraft:include/unifont_pua` and are not included in any normally used font - Characters in those areas are managed by Under-CSUR (Under-ConScript Unicode Registry), which adds various scripts not present in official Unicode set, like Tengwar or Sitelen Pona #### `unihex` Font Provider - The `size_overrides` field is now optional (defaults to empty list) ### Equipment Assets - Added new `happy_ghast_body` layer type, rendering in the body slot of the Happy Ghast ### Item Models - Item model definitions now have a boolean field `oversized_in_gui` which is `false` by default - If `true`, the item model will be allowed to be bigger than its item slot - If `false`, the item model will be clipped to the item slot size when being rendered in gui - This ability of items being rendered outside their slots should not be considered officially supported, it was temporarily restored as an exception since many servers are relying on it - At some point in the future we hope to replace it with an officially supported way of achieving similar functionality - Introduced new item model `minecraft:player_head` to handle player profile texture loading and rendering - Removed support for `minecraft:profile` from `minecraft:head` #### `minecraft:player_head` Special Model Type - Renders a player head - Uses profile from `minecraft:profile` component to load a texture. Renders a default texture until the profile texture is fully loaded - No fields #### `minecraft:head` Special Model Type - No longer supports profile from `minecraft:profile` component to load a player texture - Renders a default player texture when `kind` is `player` and no texture override is supplied - Fields remain unchanged ### Block Models - `elements[].rotation.angle` value in block models is no longer limited to multiplies of `22.5` degrees and can now be any angle from `-45` to `+45` ### Shaders & Post-process Effects > **Developer's Note**: _Although it is possible in Resource Packs, overriding Core Shaders is considered as unsupported and not an intended Resource Pack feature. These shaders exist as part of the internal implementation of the game, and as such, may change at any time as the game's internals evolve. We understand that overriding Core Shaders is used for very cool Resource Pack features, many of which lack supported alternatives. We would like to provide better, supported alternatives in the future._ - All built-in uniforms are now uniform blocks instead of opaque loose uniforms - Custom uniforms provided to post-process shaders are now uniform blocks - Uniform definitions inside json files are now per-block #### Post-process Effect Definitions - Entries in the `targets` map have been expanded to support new properties - New optional boolean field: `persistent` (default: `false`) - If `true`, this render target will be persistent across frames - The contents of the target will be cleared when the screen is resized - New optional field: `clear_color` (default: `[0, 0, 0, 0]`) - Format: integer ARGB value, or float array in order `[R, G, B, A]` - When this target is created or cleared, it will be filled with this color - The `uniforms` values is now a list-per-block, instead of a global list - e.g. `uniforms: { "UniformBlockName": [ { "type": "vec2", "value": [...] } ] }` - The order of uniforms in a block **must** match the order in the shader - `name` as part of a uniform definition is no longer used - We encourage setting it to help keep the json file organized/readable, but the game won't use it - `value` as part of a uniform definition replaces the old `values`, and the type depends on the `type` field - This field is required - `"type": "int"` needs `"value": 123` (a single int) - `"type": "float"` needs `"value": 123.4` (a single float) - `"type": "vec2"` needs `"value": [1.2, 3.4]` (two floats) - `"type": "vec3"` needs `"value": [1.2, 3.4, 5.6]` (three floats) - `"type": "ivec3"` needs `"value": [1, 2, 3]` (three ints) - `"type": "vec4"` needs `"value": [1.2, 3.4, 5.6, 7.8]` (four floats) - `"type": "matrix4x4"` needs `"value": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0]` (four rows of four columns of floats) - We do not validate that the uniform block is valid for a given shader, giving incorrect information will cause undefined and funky behavior #### Post-process Effect Shaders - Instead of every uniform being an individual opaque type, they are now grouped in uniform blocks - They will be set according to the pass definition in the json file, and may be shared across both vertex and fragment shaders - The list of sizes (all `vec2 *Size` uniforms) are now replaced with a single `SamplerInfo` uniform block - This contains, _in order_, the size of the output texture followed by the size of every input texture - The order of textures in the definition file will dictate the order of samplers in this uniform - For most post chains this is just `OutSize` and `InSize` as before - All sizes are `vec2` ##### `post/bits.fsh` - Expects a `BitsConfig` of `float Resolution` and `float MosaicSize` ##### `post/blit.fsh` - Expects a `BlitConfig` of `vec4 ColorModulate` ##### `post/blur.vsh` and `post/box_blur.fsh` - Expects a `BlurConfig` of `vec2 BlurDir` and `float Radius` ##### `post/color_convolve.fsh` - Expects a `ColorConfig` of `vec3 RedMatrix`, `vec3 GreenMatrix` and `vec3 BlueMatrix` ##### `post/invert.fsh` - Expects a `InvertConfig` of `float InverseAmount` ##### `post/rotscale.vsh` - Expects a `RotScaleConfig` of `vec2 InScale`, `vec2 InOffset` and `float InRotation` ##### `post/spiderclip.fsh` - Expects a `SpiderConfig` of `vec4 Scissor` and `vec4 Vignette` #### Shader Fog Changes - The fog is now split into environmental and render-distance-based fog - Previously both those concepts were mixed in the same uniforms - Environmental fog is supposed to represent the "fogginess" of the environment the player is in - e.g. lava, water, and now also atmosphere - Render distance fog is supposed to obscure the border of visible terrain - Environmental fog uses spherical distance to determine its intensity, render distance fog uses cylindrical distance - The resulting fog value for any given vertex is the maximum of both #### `Globals` Uniform Block - Available through `#moj_import ` for convenience - Most shaders are able to receive this uniform block, even if they don't normally use it - Contains `ScreenSize`, `GlintAlpha`, `GameTime` and `MenuBlurRadius` (new) - `MenuBlurRadius` is the blur radius of the background when a menu is open #### `Fog` Uniform Block - Available through `#moj_import ` for convenience - Most shaders are able to receive this uniform block, even if they don't normally use it - Contains `FogColor`, `FogEnvironmentalStart` (new), `FogEnvironmentalEnd` (new), `FogRenderDistanceStart` (renamed from `FogStart`), `FogRenderDistanceEnd` (renamed from `FogEnd`), `FogSkyEnd` (new) and `FogCloudsEnd` (new) - `FogSkyEnd` is new and represents where the fog should end when drawing for the sky - `FogCloudsEnd` is new and represents where the fog should end when drawing the clouds - `FogRenderDistanceStart` is the render distance fog start - `FogRenderDistanceEnd` is the render distance fog end - `FogEnvironmentalStart` is new and represents the start of environment-based fog - `FogEnvironmentalEnd` is new and represents the end of environment-based fog - `FogShape` was removed. Render distance fog is now cylindrical and environmental fog is spherical #### `Projection` Uniform Block - Available through `#moj_import ` for convenience - Most shaders are able to receive this uniform block, even if they don't normally use it - Contains `ProjMat` with no changes #### `DynamicTransforms` Uniform Block - Available through `#moj_import ` for convenience - Is no longer available to shaders that do not normally use it - Contains `ModelViewMat`, `ColorModulator`, `ModelOffset`, `TextureMat`, `LineWidth` - These are very likely to change in the near future - The values of some of these are often hard coded and may not make sense for a given shader, i.e., `LineWidth` in any non-line based pipeline #### `Lighting` Uniform Block - Available through `#moj_import ` for convenience - Most shaders are able to receive this uniform block, even if they don't normally use it - The values may not make sense if the shader wouldn't normally expect it, however - Contains `Light0_Direction` and `Light1_Direction` #### `CloudInfo` Uniform Block - Only available to the cloud shaders (`rendertype_clouds.vsh`/`rendertype_clouds.fsh`) - Contains `CloudColor`, `CloudOffset` and `CellSize` (new) - `CellSize` contains the size of an individual cloud cell #### `LightmapInfo` Uniform Block - Only available to the lightmap shader (`lightmap.fsh`) - Contains `AmbientLightFactor`, `SkyFactor`, `BlockFactor`, `UseBrightLightmap`, `NightVisionFactor`, `DarknessScale`, `DarkenWorldFactor`, `BrightnessFactor`, `SkyLightColor` with no change in behavior ## Fixed bugs in 1.21.6 - [MC-36696](https://bugs.mojang.com/browse/MC-36696) Clicking on the statistics button on the menu screen advances the game by 1 tick - [MC-69821](https://bugs.mojang.com/browse/MC-69821) TNT "forgets" the player that ignited it when the world is reloaded - [MC-94800](https://bugs.mojang.com/browse/MC-94800) URL shown in open URL dialog is not shortened - [MC-97423](https://bugs.mojang.com/browse/MC-97423) Horse temporarily stuck in jump animation if dismounted - [MC-103511](https://bugs.mojang.com/browse/MC-103511) Sound/Song stops playing after adjusting the volume - [MC-104231](https://bugs.mojang.com/browse/MC-104231) Loading a custom structure doesn't load rails correctly - [MC-112730](https://bugs.mojang.com/browse/MC-112730) Beacon beam and structure block render twice per frame - [MC-118081](https://bugs.mojang.com/browse/MC-118081) Sounds don't pause when game is paused on some UI screens - [MC-118430](https://bugs.mojang.com/browse/MC-118430) Vex summoner is not stored in NBT despite being used for AI task - [MC-118432](https://bugs.mojang.com/browse/MC-118432) Vex summoner is not reset once it is dead - [MC-140819](https://bugs.mojang.com/browse/MC-140819) Lectern model extends past inventory slot - [MC-147260](https://bugs.mojang.com/browse/MC-147260) Map icons are not displayed in the cartography table - [MC-148278](https://bugs.mojang.com/browse/MC-148278) You can select multiple buttons at once in the book editing GUI by repeatedly pressing Tab - [MC-189246](https://bugs.mojang.com/browse/MC-189246) Unable to copy and paste on title page of a Book & Quill - [MC-191306](https://bugs.mojang.com/browse/MC-191306) Sounds played using /playsound are played in all dimensions - [MC-200092](https://bugs.mojang.com/browse/MC-200092) /setworldspawn seems to ignore the 'angle' parameter - [MC-200925](https://bugs.mojang.com/browse/MC-200925) Ghasts are not affected by potions thrown on their head - [MC-217887](https://bugs.mojang.com/browse/MC-217887) Unsigned books written in 1.9-pre1 or earlier don't upgrade properly - [MC-224704](https://bugs.mojang.com/browse/MC-224704) Block cracks are not affected by the fog from powder snow or lava - [MC-228451](https://bugs.mojang.com/browse/MC-228451) You cannot move the cursor around on the title page of a book and quill - [MC-229483](https://bugs.mojang.com/browse/MC-229483) Withers are not affected by instant harming and healing splash potions thrown above their heads - [MC-230902](https://bugs.mojang.com/browse/MC-230902) Black shapes sometimes appear in the end sky at low render distance - [MC-236464](https://bugs.mojang.com/browse/MC-236464) Beacon beams emitted from below the player are invisible after reloading chunks - [MC-237015](https://bugs.mojang.com/browse/MC-237015) The cursor in the book signing GUI doesn't turn fully invisible when blinking - [MC-238931](https://bugs.mojang.com/browse/MC-238931) Clouds stop rendering before they are hidden by fog - [MC-239701](https://bugs.mojang.com/browse/MC-239701) Rendering issue when breaking ice and flying with "Chunk Builder" set to Threaded - [MC-240121](https://bugs.mojang.com/browse/MC-240121) "1x1\_b5.nbt" piece does not generate in woodland mansions - [MC-248682](https://bugs.mojang.com/browse/MC-248682) Translucent blocks moved by pistons aren't affected by fog correctly - [MC-248688](https://bugs.mojang.com/browse/MC-248688) Falling translucent blocks aren't affected by fog correctly - [MC-256411](https://bugs.mojang.com/browse/MC-256411) Clouds not fully rendered depending on angle - [MC-257532](https://bugs.mojang.com/browse/MC-257532) Clouds don't fill the sky after 1.18 height change - [MC-258336](https://bugs.mojang.com/browse/MC-258336) Frost Walker causes frequent visual corruption near chunk borders on Threaded and Semi-Blocking Chunk Builder - [MC-262268](https://bugs.mojang.com/browse/MC-262268) Keyboard navigation does not work in the book and quill GUI - [MC-264431](https://bugs.mojang.com/browse/MC-264431) #minecraft:sand tag has two minecraft:suspicious\_sand - [MC-266318](https://bugs.mojang.com/browse/MC-266318) Trapdoors and doors have inconsistent subtitles for being opened and closed - [MC-269744](https://bugs.mojang.com/browse/MC-269744) Out of memory crash when using a preset with a large layer - [MC-270279](https://bugs.mojang.com/browse/MC-270279) Disabled item cooldown overlay renders incorrectly over stack size number - [MC-272825](https://bugs.mojang.com/browse/MC-272825) Custom filled maps from 23w31a and earlier do not upgrade properly in later versions - [MC-275374](https://bugs.mojang.com/browse/MC-275374) Drowneds with CanBreakDoors:1b don't break doors - [MC-276264](https://bugs.mojang.com/browse/MC-276264) Advancement screen shadow renders below item icons - [MC-276665](https://bugs.mojang.com/browse/MC-276665) Music is never turning on when it's toggled in the menu - [MC-277369](https://bugs.mojang.com/browse/MC-277369) The draft report icon isn't initially visible when saving a report as a draft - [MC-277370](https://bugs.mojang.com/browse/MC-277370) The draft report icon doesn't initially disappear when a report is discarded - [MC-277486](https://bugs.mojang.com/browse/MC-277486) Mob effect icons ignore "scaling" parameter in mcmeta files - [MC-277903](https://bugs.mojang.com/browse/MC-277903) Creative inventory tab icons can display item cooldown overlay - [MC-277991](https://bugs.mojang.com/browse/MC-277991) The 2 brightest pixel colors on pale oak boat items are still switched - [MC-277992](https://bugs.mojang.com/browse/MC-277992) 1 color in the pale chest boat item is incorrect - [MC-278231](https://bugs.mojang.com/browse/MC-278231) Space characters at the end of a line in book and quill are invisible even if given a texture - [MC-278459](https://bugs.mojang.com/browse/MC-278459) unifont.json contains trailing comma - [MC-278466](https://bugs.mojang.com/browse/MC-278466) Bundle experiment data pack related strings are not in deprecated.json - [MC-278873](https://bugs.mojang.com/browse/MC-278873) The data fixer regenerates chunks containing items obtained from flower pots using Ctrl + Pick Block before version 1.13, or it crashes the game if the item is in the player's inventory - [MC-279284](https://bugs.mojang.com/browse/MC-279284) Experience orbs from thrown bottles o' enchanting are very prone to getting stuck inside blocks - [MC-279417](https://bugs.mojang.com/browse/MC-279417) Luring mobs onto blocks at Y=-64 will instead make them pathfind to the highest elevation - [MC-279515](https://bugs.mojang.com/browse/MC-279515) The game stalls when running the "/test clearall" command with large radiuses - [MC-279875](https://bugs.mojang.com/browse/MC-279875) Cannot diagonally climb slab through suspended scaffolding - [MC-280047](https://bugs.mojang.com/browse/MC-280047) Temperate cows use their 1.14 texture with the Programmer Art resource pack enabled - [MC-280266](https://bugs.mojang.com/browse/MC-280266) Firefly bushes don't produce as many, or as constant, amounts of particles as on Bedrock Edition - [MC-280268](https://bugs.mojang.com/browse/MC-280268) Blazes and breezes use "large" spawn eggs despite mobs of a similar size using "medium" - [MC-280276](https://bugs.mojang.com/browse/MC-280276) Some item models can still clip into the block below when hovering on the ground - [MC-280281](https://bugs.mojang.com/browse/MC-280281) Fishing bobbers rapidly jitter when attached to entities that are moving - [MC-280297](https://bugs.mojang.com/browse/MC-280297) The volume level between grass and dirt is inconsistent - [MC-280471](https://bugs.mojang.com/browse/MC-280471) The Particle.color field in area effect clouds is read-only - [MC-280502](https://bugs.mojang.com/browse/MC-280502) Translation key snbt.parser.undescore\_not\_allowed has a typo - [MC-293619](https://bugs.mojang.com/browse/MC-293619) The chicken spawn egg texture in Programmer Art is missing pixels that match the inventory slot background color - [MC-293754](https://bugs.mojang.com/browse/MC-293754) Minecraft causes OpenGL errors occasionally - [MC-295395](https://bugs.mojang.com/browse/MC-295395) Entities interact differently with nether portals - [MC-295677](https://bugs.mojang.com/browse/MC-295677) Title screen fades in from black after closing the "Welcome to Minecraft" screen - [MC-295681](https://bugs.mojang.com/browse/MC-295681) Leaf litter can generate inside of woodland mansions - [MC-295690](https://bugs.mojang.com/browse/MC-295690) Players stay on fire for a while after barely touching fire - [MC-295850](https://bugs.mojang.com/browse/MC-295850) Done and Cancel buttons on the world creation Edit Game Rules screen do the same thing - [MC-295866](https://bugs.mojang.com/browse/MC-295866) The /setblock and /fill commands no longer update redstone power in some situations - [MC-295867](https://bugs.mojang.com/browse/MC-295867) Structures from previous versions fail with DataFixerUpper - [MC-295879](https://bugs.mojang.com/browse/MC-295879) Sprint-hitting boats and then getting in them causes the boat to fall through the block underneath - [MC-295895](https://bugs.mojang.com/browse/MC-295895) 1.21.5 breaks minecart behavior when travelling through nether portals - [MC-295914](https://bugs.mojang.com/browse/MC-295914) Loot table files accept invalid JSON - [MC-295944](https://bugs.mojang.com/browse/MC-295944) Reloading a professionless zombie villager causes it to gain random profession clothing - [MC-296035](https://bugs.mojang.com/browse/MC-296035) Two pixels from "mooshroom\_spawn\_egg" are the same as "cow\_spawn\_egg" - [MC-296099](https://bugs.mojang.com/browse/MC-296099) Nether portal collision is or isn't working depending on the cardinal direction - [MC-296121](https://bugs.mojang.com/browse/MC-296121) ClientboundLevelChunkPacketData buffer size is too big - [MC-296311](https://bugs.mojang.com/browse/MC-296311) TNT touching water will destroy blocks and damage entities but will ignore decorative entities - [MC-296337](https://bugs.mojang.com/browse/MC-296337) Minecarts cause memory usage increases and crashes - [MC-296348](https://bugs.mojang.com/browse/MC-296348) NoAI:1b mobs cannot be ridden in 1.21.5+ - [MC-296624](https://bugs.mojang.com/browse/MC-296624) Old Brown Mooshroom texture is missing from Programmer Art - [MC-296638](https://bugs.mojang.com/browse/MC-296638) Clocks, compasses, and lodestone compasses do not render enchantment glint in certain display contexts when using Fabulous! graphics - [MC-296701](https://bugs.mojang.com/browse/MC-296701) Transformed entities do not retain their custom\_data component - [MC-296709](https://bugs.mojang.com/browse/MC-296709) All non-default jukebox\_playable components are deleted from existing items when updating past 1.21.4 - [MC-296784](https://bugs.mojang.com/browse/MC-296784) The "Welcome to Minecraft" screen is missing its fade out - [MC-296866](https://bugs.mojang.com/browse/MC-296866) Predicates of particular namespaces failed to be accessed on /execute - [MC-297264](https://bugs.mojang.com/browse/MC-297264) Cat breeds are not seed based anymore - [MC-297347](https://bugs.mojang.com/browse/MC-297347) Tamed animals no longer sit when their owner changes dimension - [MC-297461](https://bugs.mojang.com/browse/MC-297461) Equipment and sleeping pos data cannot be loaded in 1.21.4, but can be loaded in 1.21.5 to bees spawned from bee nest and bee hive - [MC-297524](https://bugs.mojang.com/browse/MC-297524) Connection with realm gives weird HTML text - [MC-297537](https://bugs.mojang.com/browse/MC-297537) Extra "entity.wolf\_whine.whine" sound event exists in sounds.json - [MC-297591](https://bugs.mojang.com/browse/MC-297591) Ender pearls can unexpectedly come to a halt - [MC-297614](https://bugs.mojang.com/browse/MC-297614) Area effect clouds with duration greater than or equal to 2147483628 disappear after a tick - [MC-297868](https://bugs.mojang.com/browse/MC-297868) Items in the armor.body and saddle slots are not kept when dying while the game rule keepInventory is set to true - [MC-297893](https://bugs.mojang.com/browse/MC-297893) prevent\_equipment\_drop enchantment effect does not work with armor.body and saddle slots - [MC-297894](https://bugs.mojang.com/browse/MC-297894) /clear command does not clear armor.body and saddle slots --- # Minecraft: Java Edition 1.21.5 It's time to experience new wonders of the Overworld as we release the Spring to Life drop, the first Minecraft game drop of 2025. The Spring to Life drop brings more reasons to explore both near and far! Warm winds have swept across biomes, bringing new mob variants, ambient sounds, and lush plants for you to discover. Befriend fluffy pigs, marvel at glittering firefly bushes, listen out for whispers of sand, and delight in a blooming Overworld humming with new beginnings. In this release we are also making the game tests system accessible through data packs with the new test command. And as usual, we continue to rebuild our engine to improve the experience for players and content creators. We are sure all those spare parts left on our floor can't be that important, right? ## New Features - Added cold and warm variants for the Pig, Cow and Chicken - Sheep now spawn with wool color dependent on the biome in which they spawn - Added new sound variants for Wolves - Overhauled the visuals of each Spawn Egg to improve readability and accessibility - Added fallen tree generation - Added Firefly Bush block - Added Leaf Litter block - Added Wildflowers block - Added Bush block - Added Short Dry Grass and Tall Dry Grass blocks - Added Cactus Flower block which can grow on Cactus blocks - Added new falling leaf particles to all Leaves blocks that did not already have them - Added new ambient block sounds in the Desert and Badlands biomes - Added language support for Kyrgyz ### Farm Animal Variants ![The cow, the chicken, and the pig are joined by their new variations high up on a mountain.](https://launchercontent.mojang.com/v2/images/1.21.5animalvariations.jpg) - Warm and cold variants have been added for the following animals: - Pig - Cow - Chicken ![Warm pigs are amongst cactus flowers in a desert.](https://launchercontent.mojang.com/v2/images/1.21.5pigdesert.jpg) - The variant is determined by the biome they spawn in - Temperate variant - The variants we are all familiar with, spawns by default where the other variants do not - Cold variant - A variant that will be selected if spawned (naturally or by player) in these biomes: - Cold Ocean - Deep Cold Ocean - Deep Dark - Deep Frozen Ocean - End Barrens - End Highlands - End Midlands - Frozen Ocean - Frozen Peaks - Frozen River - Grove - Ice Spikes - Jagged Peaks - Old Growth Pine Taiga - Old Growth Spruce Taiga - Small End Islands - Snowy Beach - Snowy Plains - Snowy Slopes - Snowy Taiga - Stony Peaks - Taiga - The End - Windswept Forest - Windswept Gravelly Hills - Windswept Hills ![A cold chicken can be seen in the forefront, with a creeper peaking out from behind a tree.](https://launchercontent.mojang.com/v2/images/1.21.5coldchickencreeper.jpg) - Warm variant - A variant that will be selected if spawned (naturally or by player) in these biomes: - Badlands - Bamboo Jungle - Basalt Deltas - Crimson Forest - Deep Lukewarm Ocean - Desert - Eroded Badlands - Jungle - Lukewarm Ocean - Mangrove Swamp - Nether Wastes - Savanna - Savanna Plateau - Soul Sand Valley - Sparse Jungle - Warm Ocean - Warped Forest - Windswept Savanna - Wooded Badlands ![A warm chicken in a desert village. A cat can be seen sitting on top of a villager's house.](https://launchercontent.mojang.com/v2/images/1.21.5desertvillagechicken.jpg) - When bred by a player, a baby variant will not be chosen by the current biome, but instead randomly selected from one of the parents' variants - Two new Egg items have been added for the warm and cold Chicken variants - Blue Egg - The Egg that is laid by and can hatch cold Chicken variants - Brown Egg - The Egg that is laid by and can hatch warm Chicken variants #### Sheep Wool Color in Warm and Cold Biomes - Sheep now spawn with wool color dependent on the biome in which they spawn: - Temperate biomes: (these colors are unchanged from previous behavior) - Common Sheep color is white - Uncommon Sheep colors are black, gray, light gray and brown - There is a rare chance for a pink Sheep to spawn - Cold biomes: - Common Sheep color is black - Uncommon Sheep colors are gray, light gray, white and brown - There is a rare chance for a pink Sheep to spawn - Warm biomes: - Common Sheep color is brown - Uncommon Sheep colors are gray, light gray, white and black - There is a rare chance for a pink Sheep to spawn ### Wolf Sounds Variants ![A wolf walking on top of a fallen oak tree.](https://launchercontent.mojang.com/v2/images/1.21.5fallentreewolf.jpg) - Added 6 new Wolf sound variants with unique ambient, hurt, death, growl, whine, and pant sounds - The new sounds are part of variants that are called "Big", "Cute", "Puglin", "Angry", "Grumpy", and "Sad" - The original Wolf sounds now are used for the variant called "Classic" - Every Wolf will have a sound variant randomly assigned to it from these 7 variants - The sound variant is not related to the texture variant ### Spawn Egg Visuals Overhaul ![Sunny and Noor are inspecting a collection of spawn eggs. A cartographer villager can also been seen peaking in through the window.](https://launchercontent.mojang.com/v2/images/1.21.5spawneggs.jpg) - Each Spawn Egg now has their own unique visual which captures the personality and character of the mob it spawns - Each egg visual varies in shape to reflect the in-world size of the mob it spawns - For example, smaller mobs tend to have a smaller Spawn Egg ### Fallen Trees ![A fallen birch tree with a brown mushroom growing on top of it.](https://launchercontent.mojang.com/v2/images/1.21.5fallentree.jpg) - Fallen trees are a new decorative variant of trees - Fallen trees come in four different wood type variants: - Oak - Birch - Jungle - Spruce - Birch fallen trees come in a shorter and a longer version - Some fallen trees can be decorated with Mushrooms or Vines - Fallen trees can be found in all biomes where their standing tree variant grows, except the following: - Bamboo Jungle - Flower Forest (has fallen Birch trees but not fallen Oak trees) - Grove - Meadow - River ### Firefly Bush ![In the moonlit swamp, firefly bushes can be seen emitting particles. Meanwhile, a frog seems to be leaping towards the moon.](https://launchercontent.mojang.com/v2/images/1.21.5frogfireflybush.jpg) - The Firefly Bush is found adjacent to water in Swamps, Mangrove Swamps, Badlands, and near Rivers - When it is dark, glowing firefly particles appear around the Firefly Bush - Using Bone Meal on a Firefly Bush grows a Firefly Bush in a random adjacent space if possible - The Firefly Bush emits a light level of 2 - The Firefly Bush has a chance of playing ambient sounds when these conditions are met: - it is night - it is not blocked from above by any collidable block except leaves ### Leaf Litter - Leaf Litter is a new type of decorative block which can be found in the Forests, Dark Forests and Wooded Badlands - Note: Leaf Litter is only spawned as part of world generation, and does not regenerate during gameplay - Leaf Litter can have different amounts of leaves in one block space - Up to four Leaf Litter pieces can be placed in the same block space - Placing a Leaf Litter into an existing Leaf Litter block increases the amount of leaves - Leaf Litter can be placed in four orientations - Leaf Litter can be placed on any block with a full top face - Leaf Litter can be created by smelting any type of Leaves block - Leaf Litter can be used as fuel for smelting - Leaf Litter can be used in the Composter - Leaf Litter has unique block sounds - Leaf Litter is tinted based on which biome it is in - Leaf Litter is replaceable when building ### Wildflowers - Wildflowers are a new type of flower which grow in Birch Forests, Old Growth Birch Forests and Meadows - Wildflowers can have different amounts of flowers in one block space - Up to four Wildflowers can be placed in the same block space - Placing a Wildflower into an existing Wildflowers block increases the amount of flowers - Using Bone Meal on Wildflowers will produce more Wildflowers - Wildflowers can be placed in four orientations - Wildflowers can be crafted into Yellow Dye ### Bush - The Bush is a new type of decorative block that can be found in small patches in the following biomes: - Birch Forest - Forest - Frozen River - Old Growth Birch Forest - Plains - River - Windswept Forest - Windswept Gravelly Hills - Windswept Hills - The Bush can be used in the Composter - Using Bone Meal on a Bush grows a Bush in a random adjacent space if possible - A Bush only drops when broken with Shears or a Silk Touch tool - The Bush is replaceable when building ### Short and Tall Dry Grass - Added two new types of grass: Short Dry Grass and Tall Dry Grass - Both are 1 block high, which means Tall Dry Grass differs from regular Tall Grass which is 2 blocks high - Both generate in the Desert and Badlands biomes - Both can be placed on types of Sand, Terracotta, Dirt blocks, and Farmland like the Dead Bush - Both can be bonemealed - Using Bone Meal on Short Dry Grass grows it into a Tall Dry Grass - Using Bone Meal on Tall Dry Grass grows a Short Dry Grass in a random adjacent space if possible - Both can be used in the Composter - Sheep can eat both to regrow their wool - Both can be used as fuel for smelting - Both are replaceable when building ### Cactus Flower - Cactus Flower is a new type of flower that has a chance of generating on Cactuses in Deserts and Badlands - Cactus Flower can be placed on Cactus blocks, Farmland, or any block which has center support at the top of the block - Cactus Flowers have a chance of growing on Cactus blocks instead of the Cactus growing taller - If a Cactus is 1-2 blocks tall, the Cactus Flower has a 10% chance to grow - If a Cactus is 3 blocks or taller the Cactus Flower has a 25% chance to grow - Cactus Flowers will only grow if they have space on all four sides - Cactus Flowers can be used in the Composter - A Cactus Flower can be used to craft 1 Pink Dye ### Falling Leaf Particles - All Leaves blocks now have chance of spawning falling leaf particles - The following blocks are affected by this change: - Acacia Leaves - Azalea Leaves - Birch Leaves - Dark Oak Leaves - Flowering Azalea Leaves - Jungle Leaves - Mangrove Leaves - Oak Leaves - Spruce Leaves ### New Ambient Sounds for Desert and Badlands - Sand, Red Sand and Terracotta of any color have a chance of playing ambient sounds when surrounded by another block in the same group on at least 3 sides, at a distance of 8 blocks - `block.sand.idle` can be played in any biome - `block.sand.wind` only plays when in Desert or Badlands biomes - 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 ## Changes - The main menu panorama has been updated for the "Spring to Life" drop - 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 you are - The beam now renders up to 2048 blocks high, up from 1024 ![Three differently colored beacon beams are seen in the sky of a sunset scenery.](https://launchercontent.mojang.com/v2/images/1.21.5beacons.jpg) - Lodestones have a new crafting recipe and can now be found in Ruined Portals - The trades of the Cartographer and Wandering Trader have been updated - Bundles can now be found in some of the Chests in Villages - Updates to Camel, Chicken, Cow, Pig, and Sheep spawning - Zombified Piglins now need to be killed by a Player to drop the Player-specific loot such as experience - This makes them consistent with all other mobs in the game - Changes to world generation of the Pale Garden and Meadow biomes - Chunks loaded by a portal will now be re-loaded again automatically when the world is reopened - Improved how simulation distance affects block ticks - Tweaks to the Creaking and Creaking Heart - Textures and models for temperate Cow, Mooshrooms and Sheep have been updated - Minor tweaks to existing Blocks, Items and Entities - Various changes and tweaks to sounds - Minor improvements to world uploads in Realms - Reverted fix [MC-152728](https://bugs.mojang.com/browse/MC-152728) - "_The player continues sprinting when performing actions that slow them down_" > **Developer's Note**: _After consideration, we have decided to revert this fix. While we do want to revisit these mechanics in the future, it's clear that these recent fixes alone didn't quite hit the mark and caused too many negative side effects for parkour, speedbridging, and movement in general_ - If the game detects that the last startup did not complete normally, the fullscreen option will now be reset - Removed Herobrine ### Lodestone Changes - The Lodestone is now crafted from 1 Iron Ingot surrounded by 8 Chiseled Stone Bricks - Lodestones can now be found as loot at Ruined Portals in the Overworld or Nether - Advancement "Country Lode, Take me Home" has been moved from the "Nether" category to the "Adventure" category ### Cartographer and Wandering Trader Trade Rebalance #### Cartographer Trades - Cartographers now sell 7 new maps each pointing to a different village or other structures in a different biome - Cartographers from different village types will sell a different range of maps and colored banners - Some prices and quantities have also been adjusted #### Wandering Trader Trades - 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, so it is possible to get some Emeralds by helping them prepare for their next journey - even if you don't feel like buying anything - The Wandering Trader will offer to buy two items from this list: - Water Bottle - Water Bucket - Milk Bucket - Fermented Spider Eye - Baked Potato - Hay Bale - 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 ### Mob Spawning Changes - Camels now spawn in Deserts - Chickens, Cows, Pigs, and Sheep can now spawn in Badlands ### World Generation Changes - The Pale Garden biome now occupies more space that was previously taken by Dark Forest - Woodland Mansions can now generate in the Pale Garden biome - Short Grass now generates slightly sparser in Meadows ### Simulation Distance - Any block in simulation distance of a player, or loaded by another source of chunk loading such as Ender Pearls, may now receive random ticks instead of 8 chunks just around players - For example: if a chunk is loaded by an Ender Pearl or is in the spawn chunks, crops are able to grow, Ice can melt, Snow can fall, and a Cauldron can be filled by rain - Mob spawning, Lava spreading fire, and Lightning strikes still occur in the previous radius of 8 chunks around players - Fire will no longer burn or spread if no player is within 8 chunks ### Creaking and Creaking Heart - Creakings can now be named using Name Tags - Named Creakings will persist through the day - However, they will still be torn down if stuck with a player or if too far from their Heart - Named Creakings are still resistant to all damage, and can communicate with their Hearts via particles - Creaking Hearts correctly placed between Logs have a new dormant texture during the day - Dormant Creaking Hearts cannot spawn new Creakings or Resin - The transition between the awake and dormant states for Creaking Hearts, as well as the transition of Eye Blossoms is now based on the fixed day time - All these behaviors are no longer affected by weather or dimension brightness ### Mob Texture and Model Changes - The look of the temperate Cow has been slightly updated to have an extruded snout - The look of both Mooshroom variants have been slightly updated to have an extruded snout - Sheep's wool undercoat is now also colored when dyed - The Sheep wool texture has been tweaked to remove the stark line at the back ### Minor Tweaks to Blocks, Items and Entities - Sheep can now eat Fern blocks - Landing on Powdered Snow with Leather Boots equipped after falling further than 2.5 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 - Saddles equipped onto Pigs or Striders will now maintain properties such as custom name when dropped - Bubble columns produce less particles and sounds when entities are unaffected by them are inside them - Pale Oak Leaves and Pale Oak Saplings have an updated map color - Improved tooltips for the Crossbow and all container items #### Item Tooltips - Crossbows will now show all charged projectiles in their tooltip instead of just the first - All charged projectiles will also add their entire tooltip as a subsection, instead of only Fireworks - All container items with stored contents, such as a Chest picked with Ctrl+Pick Block, will now list the first 4 items in their tooltip just like Shulker Boxes ### Sound Changes - The volume of the narrator is now affected by the game's configured volume in the "Voice" category - Added new break, place, step, fall and hit sounds for Iron Blocks, Iron Bars, Iron Trapdoors, Iron Doors and Heavy Weighted Pressure Plates - The breaking sound for the "grass" sound type has been lowered - Blocks that are broken by a Piston now play their breaking sound - Ambient block sounds in Desert, Badlands and Pale Garden which are only used for ambience have been moved from the "Blocks" to the 'Ambient/Environment' category ### Realms World Uploads - Uploading a world to Realms will now enable Command Blocks by default - It is now possible to upload Hardcore singleplayer worlds to Realms ## Technical Changes - The Data Pack version is now 71 - The Resource Pack version is now 55 - A new entry point is present in the server jar: `net.minecraft.gametest.Main` - Automatically starts a server and runs all available game tests - A new command line argument is available for the client: `--renderDebugLabels` - Adds debug labels to relevant OpenGL objects, making debugging rendering easier for developers - Minor changes to chat network protocol ### Game Test Entry Point This new entry point automatically starts a server, runs all available game test, and then exits. Options: - `--help` - Shows usage information - `--packs ` - Set a folder of data packs to include in the world - Any zip file or folder containing a `pack.mcmeta` file is included - `--report ` - Exports results in a JUnit-like XML report at the given path - `--tests ` - Specify which tests to run with a selection - a wildcard expression matching namespace test instance IDs - If omitted, or used with an empty ID, all tests will be run - `--universe ` - The path in which the test server world will be created - Any existing folder will be replaced - Default: `gametestserver` - `--verify ` - Enables test verification - Runs the tests specified with `test` or `testNamespace` 100 times for each 90-degree rotation step - Default: `false` Example usage: `java -DbundlerMainClass="net.minecraft.gametest.Main" -jar server.jar --packs mytestpacks` ### Network Protocol - The clientbound `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 serverbound `chat` and `chat_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 desynchronized state - This can be passed as `0` to disable the check, for compatibility with protocol translation ## Data Pack Versions 62 through 71 - The Game Tests system is now accessible through data packs and for mods - Added new `allowFireTicksAwayFromPlayer` and `tntExplodes` Game Rules - All entities can now store custom data - Added a uniform way to define variant selection rules - Wolf Sound, Pig, Cat, Chicken, Cow, and Frog variants are now data-driven - Changes to commands - Structure Blocks in the "Load" mode have a new option: "Strict Placement" - If set to `false`, the blocks in the placed structure will not trigger block updates, block entity side effects, or shape updates - The game's handling of NBT has been updated to allow "heterogeneous" lists with elements of different types - The object notation used in commands for NBT, text components and inline predicates (a.k.a. SNBT) has been extended - Updated data format of Text Components - Updated many data formats within entities and block entities - Added new item components, and updates to existing components - The control of tooltip behavior has been reworked into a `tooltip_display` component - Entity variants are now set and queried with components - Updated Entity Predicates to support entity components - Updated Block Predicates to support block entity components - Updated `toggle_tooltips` loot function to support new `tooltip_display` component - The `potion` entity type has been split into `splash_potion` and `lingering_potion` - Added `saddle` equipment slot for entities, 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 - Changes to `crafting_transmute`, `smithing_transform`, and `smithing_trim` recipe types - Trim pattern and trim material items are no longer specified in the trim registries, but instead in the recipes and items respectively - Added `fallen_tree` feature type and `attached_to_logs` tree decorator type - The `background` field in Advancement definitions no longer contains a `textures/` prefix and `.png` suffix - The `effects` field in Biome definitions has a new subfield, `dry_foliage_color`, that defines the color used for tinting blocks using dry foliage tinting (Leaf Litter) - Changes to tags - Added `firefly` and `tinted_leaves` particles ### Game Tests ![Kai is seen testing curious behaviors with the new test blocks.](https://launchercontent.mojang.com/v2/images/1.21.5qctest.jpg) 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. #### Test Instances ![A game test is running, where a villagers is seen running through a maze to get to their bed.](https://launchercontent.mojang.com/v2/images/1.21.5villagertest.jpg) 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`: The 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`) representing 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` and `counterclockwise_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 - By 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` and `function` ##### Function Tests Function tests 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 See the "Using the Game Test Framework from Code" changelog section for more information. ##### Block Based Tests Block based tests use Test Blocks in the test structure to run the test and indicate success or failure. #### Test Environments 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 - `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` and `thunder` - `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 Blocks The Test Block is a block used for implementing a block-based tests. It has four modes: - `start`: Triggers a redstone pulse when the test starts - `log`: Logs a message to the log file when powered by redstone - `fail`: Fails the test when powered by redstone - `accept`: 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. #### The `test` Command The `test` command is a new command used to create and run tests. Syntax: test clearall [] test clearthat test clearthese test create [] [ ] test locate test resetclosest test reseetthese test resetthat test pos [] test run [] [] [] [] test runclosest [] [] test runfailed [] [] [] [] test runmultiple [] test runthat [] [] test runthese [] [] test stop test verify 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 - `width`: The width of the test structure - if omitted, `5` is used - `height`: The height of the test structure - if omitted, the width is used - `depth`: The depth of the test structure - if omitted, the width is used - `variable`: The variable name to include in the copied code snippet - `numberOfTimes`: The number of times to repeat each test - if omitted, `1` is ued - `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 - `testsPerRow`: Number of tests to place per row in a grid layout - if omitted, `8` is used ##### `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. ##### `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. Note that Game Tests are designed to run on standard superflat worlds. The area around each test is replaced with stone when it runs, and the running test is encased in barrier blocks. ##### `test stop` This stops all running tests. Note that gameplay events triggered by tests may still remain. ##### `test verify*` Verifies one or more tests by running multiple instances of the same test. #### Test Instance Blocks 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. #### Using the Game Test Framework from Code The Game Test Framework can also be used from code in a more versatile manner than block-based tests. For this to work, you need to mod the game to add your test functions to the `test_function` registry (`Registries.TEST_FUNCTION`). Hook into some startup method (pre-registry bootstrap) to add your loader - call `TestFunctionLoader.registerLoader()` with an implementation of `TestFunctionLoader`. Your implementation can then use the provided `register` consumer to register test functions with their namespaced IDs. This namespaced ID can then be referenced in a `function` type Test Instance. A test function is a `Consumer`, using that `GameTestHelper` instance to manipulate the world and make assertions about the state of the resulting world. The helper can be used to summon mobs, set blocks, query for blocks and entities and assert the state of the test. Most `GameTestHelper` methods take test-local coordinates, which you can also find using `/test pos`. Example code that might go along with a test structure with a locked hopper containing a Cod, pointed into a Furnace: public void furnaceSmeltsItem(final GameTestHelper helper) { helper.setBlock(0, 4, 0, Blocks.AIR); helper.succeedWhen(() -> helper.assertContainerContainsSingle(new BlockPos(0, 0, 0), Items.COOKED_COD)); } More complicated setups will often use `helper.startSequence()` to model sequences of events that must happen. As opposed to block-based tests, function tests failing will often produce more helpful error messages including the location of whatever failed and what was expected at that location. ### Game Rules #### `allowFireTicksAwayFromPlayer` - When `true`, fire and lava can spread fire outside the 8 chunk range of a player - Note: the fire and lava blocks must still be in simulation distance to spread - Default value: `false` #### `tntExplodes` - When `false`, TNT will not explode and cannot be ignited - Default value: `true` ### Uniform Variant Selection - Variants that have spawn rules now use a uniform approach for selection - Selection process: - Every variant has a field `spawn_conditions` that contains a list of entries - Every entry has a condition and an integer priority - Conditions for all variants for given entity type are evaluated for the position that entity is being spawned - Entries with a priority lower than the maximum priority of remaining entries are removed - The game randomly picks one entry out of the remaining ones - If no conditions are remaining, the variant remains unchanged from default for that entity - Entry format: - `priority` - integer - `condition` - optional structure - Fields: - `type` - see below for values - Additional fields are dependent on `type` - If this field is not present, the condition is always true #### 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 the current moon brightness is within a certain range - Fields: - `range` - floating point range (a single number or an object like `{"min": 1, "max": 2}`) ##### `minecraft:structures` - Checks if the entity is spawning in specific structures - Fields: - `structures` - single entry, list or a tag describing structures ### Data-driven Mob Variants #### Wolf Variants - The fields `angry_texture`, `tame_texture` and `wild_texture` have been grouped in an `assets` field, and renamed to `angry`, `tame`, and `wild` - Added field `spawn_conditions` described in uniform variant selection above #### Pig Variants - Pig variants can be data-driven by adding entries to `data//pig_variant/.json` - This feature is experimental - Fields in file: - `model` - one of: `normal`, `cold` - `asset_id` - namespaced id for this variant asset, resolves to `assets//textures/.png` - `spawn_conditions` - field described in uniform variant selection above #### Cat Variants - Cat variants can be data-driven by adding entries to `data//cat_variant/.json` - This feature is experimental - Fields in file: - `asset_id` - namespaced id for this variant asset, resolves to `assets//textures/.png` - `spawn_conditions` - field described in uniform variant selection above #### Frog Variants - Frog variants can be data-driven by adding entries to `data//frog_variant/.json` - This feature is experimental - Fields in file: - `asset_id` - namespaced id for this variant asset, resolves to `assets//textures/.png` - `spawn_conditions` - field described in uniform variant selection above #### Cow Variants - Cow variants can be data-driven by adding entries to `data//cow_variant/.json` - This feature is experimental - Fields in file: - `model` - one of: `normal`, `cold`, `warm` - `asset_id` - namespaced id for this variant asset, resolves to `assets//textures/.png` - `spawn_conditions` - field described in uniform variant selection above #### Chicken Variants - Chicken variants can be data-driven by adding entries to `data//chicken_variant/.json` - This feature is experimental - Fields in file: - `model` - one of: `normal`, `cold` - `asset_id` - namespaced id for this variant asset, resolves to `assets//textures/.png` - `spawn_conditions` - field described in uniform variant selection above #### Wolf Sound Variants - Wolf sound variants can be data-driven by adding entries to `data//wolf_sound_variant/.json` - The file contains the following fields which correspond to sound events to use for the specific behaviour: - `ambient_sound` - `death_sound` - `growl_sound` - `hurt_sound` - `pant_sound` - `whine_sound` ### Commands - SNBT literals now accept heterogeneous lists - `/data` can now create and modify heterogeneous lists transparently - The `/setblock`, `/fill`, `/clone`, and `/place` commands now support a "strict" placement mode - `/setblock` and `/fill` have updated handling of block entities - The `horse.saddle` item slot has been renamed to `saddle`, and now supports any entity that can equip a Saddle - 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 also now specified with SNBT instead of JSON - Text Component arguments in `/bossbar`, `/scoreboard` and `/team` commands are now resolved before use (in the context of entity the held in `@s`) #### Changes to `/setblock`, `/fill`, `/clone`, and `/place` - 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 that specified value - To clear block entity data explicitly, you must now specify the block entity data as `{}` - The operation is now successful if either the block state changed or the block entity data changed - `fill`, `clone`, `setblock` and `place template` accept a new option: `strict` - If specified, the command will place blocks as-is without triggering block updates or shape updates - The `replace` option in the `fill` command is no longer terminal, and can be followed with additional options - New syntax for commands to use the new `strict` option, and more flexible use of `replace`: - `fill keep` - `fill [replace ]? [strict|destroy|hollow|outline]?` - `clone [from ]? [to ]? [strict]? [[replace|masked|filtered ] [force|move|normal]?]?` - `setblock [destroy|keep|replace|strict]?` - `place template