Tuesday? Pfft. It's snapshot day! Today's snapshot introduces two brand-new features coming to 26.3: perfect for anyone that loves to camp in comfort. The cushion, coming in 16 color variants, finally brings the ability to sit down around a campfire. To go along with it, the straw bed brings the comfort of sleep (without the worry of losing your spawn point) to any adventure!

In addition, this snapshot brings many technical improvements: from custom brewing recipes to new ways to create and apply post-processing effects!

Happy cozy crafting!

New Features

  • Added Cushion
  • Added Straw Bed
  • Added Gothic language support to the game

Cushion

  • The Cushion is an item that the player can place in the world and interact with to sit on
  • Can be crafted in 16 colored variants
  • Cushions are crafted using 3 Wool Slabs of the same color

Cushion Placement Rules

  • A Cushion can be placed on any flat surface
  • Cushions always align horizontally to the grid, but vertically sit on top of the supporting surface
  • Cushions cannot move
  • Cushions break if the supporting block is removed
  • Cushions do not have collision and can overlap with other objects (except other Cushions)

Straw Bed

  • The Straw Bed is a new type of Bed which can be used to sleep through the night without setting your spawnpoint
  • It can only be used once and will be destroyed after use
  • It cannot be used in the Nether or The End and will be destroyed if you try to sleep on it there
  • It is crafted using 3 Hay Bales and will give you 4 Straw Beds
  • There's a new statistic in the Statistics window for amount of times slept in a Straw Bed

Technical Changes

  • The Data Pack version is now 110.0
  • The Resource Pack version is now 91.0

Data Pack Version 110.0

Commands

Added posteffect

  • Allows adding or removing "post effects" to players
  • These are postprocessing shaders that are applied to the player's screen, after the game has finished normal rendering
  • Post effects exist on the client (in resource packs), not the server – the server cannot know if one will actually apply
  • Post effects themselves were already part of the resource pack format, but only a few hardcoded ones were available to use

Developer's NoteThis now makes custom shaders fully available to use from resource packs, but please be aware that shaders are still subject to be changed at-will, and the features involved (the command, post effects, or shaders) may be redesigned in the future.

Syntax:

  • /posteffect add <player> <posteffect> - adds the post effect to the player, if it doesn't already exist
  • /posteffect clear <player> - removes all post effects from the player, if any exist
  • /posteffect list <target> - lists all post effects applied to the player, if any exist
  • /posteffect remove <player> <posteffect> - removes the post effect from the player, if it exists

Changes to place

  • The feature sub-command now allows in-line definition of the Feature

Environment Attributes

Changed minecraft:gameplay/bed_rule

  • Field explodes has been renamed to destroy_on_use
  • Added destroy_on_leave - optional boolean, if true, the Bed will be destroyed when leaving it
    • If omitted, defaults to false

Added minecraft:gameplay/straw_bed_rule

  • Same format as minecraft:gameplay/bed_rule, but used for the Straw Bed

Data Components

Updated minecraft:block_transformer

  • Added optional boolean field update_from_neighbors. This controls if the transformed block should update based on neighboring blocks
    • Defaults to true

Added minecraft:compostable

  • Represents the ability to compost an item and how it adds layers to the composter
  • Format: object with fields
    • layers - namespaced ID pointing to an element of the minecraft:number_provider registry

Loot Tables

  • Multiple block loot tables now reference predicates for checking if a tool has Silk Touch and is Shears instead of inlining a copy of those checks

Predicates

Added vanilla predicates

New entries added to previously empty minecraft:predicate:

  • minecraft:tool/can_silk_touch
  • minecraft:tool/can_shear

Potion Predicates

The minecraft:potion_contents Data Component Predicate has been changed to allow matching on specific potion effects.

The previous predicate format used a list of potion types, the new format allows for more refined matching.

The following fields can be used in any combination, all are optional:

  • potions - A list of potion types or a potion tag to match
  • effects - A Collection Predicate of mob_effects predicates to match
    • The Collection Predicate format is as follows:
    • contains - A list of mob_effects predicates to match
    • count - A list of options for matching a specific number of mob effect predicates, which follow the same format as minecraft:effects entity sub-predicate`
      • test - The mob_effects predicate to match
      • count - The number of matches required, or with min and max will match a range of counts
    • size - Require the mob effects list to have a specific size, or with min and max will match a range of sizes

The mob_effects predicate format is a mapping of effect types to properties of that effect. All fields are optional, only provided fields will be used for matching:

    {
        "minecraft: <effect type>": {
          "duration": <integer bounds representing a duration in ticks>,
          "amplifier": <integer bounds>,
          "ambient: true/false,
          "visible": true/false
        }
    )

Here is an example of matching on several different effects and criteria:

      "effects": {
        "minecraft:jump_boost": {
          "duration": 3600,
          "amplifier": 5,
          "ambient: true,
          "visible": true
        },
        "minecraft:speed": {
          "duration": {
            "min": 360,
            "max": "3600
          },
          "amplifier: {
            "min": 2
          }
        },
        "minecraft:resistance": {}
      }

All criteria are optional.

Number Providers

  • Added a minecraft:number_provider registry

Added vanilla number providers

  • minecraft:compostable/low
    • returns 1 if the minecraft:block_state context parameter is an empty composter, otherwise has a 30% chance of returning 1
  • minecraft:compostable/low_medium
    • returns 1 if the minecraft:block_state context parameter is an empty composter, otherwise has a 50% chance of returning 1
  • minecraft:compostable/medium
    • returns 1 if the minecraft:block_state context parameter is an empty composter, otherwise has a 65% chance of returning 1
  • minecraft:compostable/medium_high
    • returns 1 if the minecraft:block_state context parameter is an empty composter, otherwise has a 85% chance of returning 1
  • minecraft:compostable/always_add_one
    • always returns 1

Added minecraft:number_dispatcher type

  • Returns the first case which fulfills its condition or the default if none do
  • Fields:
    • cases - a list of cases in the order that the dispatcher will try to execute them
      • Fields:
        • condition - a minecraft:predicate
        • number_provider - a minecraft:number_provider which is executed if the condition is fulfilled
    • default - an optional minecraft:number_provider
      • Defaults to a constant 0 if omitted

Added minecraft:conditional_value type

  • Returns the value from on_true if its condition or on_false if not
  • Fields:
    • conditions - a minecraft:predicate
    • on_true - a minecraft:number_provider which is executed if its condition is fulfilled
    • on_false - an optional minecraft:number_provider
      • Defaults to a constant 0 if omitted

Added minecraft:weighted_list

  • Returns a value from a distribution of weighted number providers
  • Fields:
    • distribution - a list of objects with the following fields
      • Fields:
        • data - a minecraft:number_provider
        • weight - a positive integer

Recipes

Potion Brewing Recipes

Potion brewing recipes are now data-driven. New recipes can be added via datapacks, and vanilla recipes may be modified. Brewing recipes use the minecraft:brewing type.

The main contents are:

  • input - A potion ingredient with a required item field and an optional potion_contents field using a minecraft:potion_contents Data Component Predicate
  • reagent - A potion ingredient with a required item field and an optional potion_contents field using a minecraft:potion_contents Data Component Predicate
  • output - item stack, the resulting item

Here is an example of a vanilla recipe:

{
  "type": "minecraft:brewing",
  "input": {
    "item": "minecraft:potion",
    "potion_contents": {
      "potion": "minecraft:water"
    }
  },
  "output": {
    "components": {
      "minecraft:potion_contents": {
        "potion": "minecraft:awkward"
      }
    },
    "id": "minecraft:potion"
  },
  "reagent": {
    "item": "minecraft:nether_wart"
  }
}

Any items may be used in any of the 3 slots, for example:

{
  "type": "minecraft:brewing",
  "input": { "item": "minecraft:bucket" },
  "output": { "id": "minecraft:sulfur_cube_bucket" },
  "reagent": { "item": "minecraft:potent_sulfur" }
}

World Generation

Features

  • Removed feature types:
    • minecraft:coral_mushroom
    • minecraft:kelp
    • minecraft:seagrass
    • minecraft:sea_pickle

Developer's NoteThese feature types are no longer needed, since the features they previously hardcoded are now implemented with other, more configurable functionality.

Changed minecraft:coral_claw and minecraft:coral_tree

  • Added field feature, a Placed Feature that is used to place at every desired block position

Placement Modifiers

Added minecraft:cuboid

Repeats a feature in a cuboid shape.

Added fields:

  • xz_size: Int provider between 1 and 16 representing the size of the cuboid along x and z axes
  • y_size: Int provider between 1 and 16 representing the size of the cuboid along the y axis
  • include_interior: Optional boolean (default true) for whether to place interior blocks of the cuboid
  • include_edges: Optional boolean (default true) for whether to place edge blocks of the cuboid
    • Setting this to false generates a somewhat "rounded" cuboid

Added minecraft:random_chance

Gates the feature being placed behind a random chance.

Format:

  • chance: Float value between 0 and 1 representing the chance that the feature gets placed

Block State Providers

Updated minecraft:copy_properties_provider

  • Renamed field source_block_state_provider to source

Added minecraft:random_block_provider

Returns the default block state for a randomly chosen block.

Format:

  • blocks: Block ID, list of Block IDs or hash-prefixed Block Tag, specifying the set of blocks to randomly pick from

Changed minecraft:rotated_block_provider

Now works on any block with axis or facing properties.

Format:

  • Changed field state: Now a Block State Provider
  • Added field direction: Optional field describing the direction to set
    • If omitted, a random direction is chosen

Rule Tests

These are the predicates used by ore Features (targets[].target), and rule Structure Processors (rules[].input_predicate and rules[].location_predicate).

Added minecraft:any_of

  • This checks a list of Rule Tests for whether any of them returns true for the same block
  • Format: object with fields:
    • rules - list of Rule Tests, the rules to test the block against

Added minecraft:not

  • This checks a Rule Test for whether it returns false for a given block
  • Format: object with fields:
    • rule - Rule Test, the rule to test the block against

Tags

Block Tags

  • Added #sculk_growth_inhibitors for blocks which keep Sculk from spreading when more than 2 are in the 8x2x8 area around it
  • Added #cats_can_sit_on - Blocks which Cats can randomly sit on
  • Added #cats_can_lie_on - Blocks which Cats can randomly lie on
  • Added #speeds_up_zombie_villager_curing - Blocks which can increase Zombie Villager curing time if placed nearby
  • Added #villagers_can_sleep_on_bed - Bed blocks which Villagers can sleep on
  • Added #villager_babies_can_jump_on_bed - Bed blocks which Villager kids can jump on
  • Added #height_specific_ore_replaceables - contains all blocks which Ore Features will turn into Stone Ores if found above y-level 0 and into Deepslate Ores if found below y-level 8

Item Tags

  • #dowses_campfires has been renamed to #douses_campfires

Structure Tags

  • Added #abandoned_camp for all variants of Abandoned Camps

Resource Pack Version 91.0

Block Sprites

  • Added new Block textures:
    • block/straw_bed.png
    • block/straw_bed_particle.png

Sounds

  • Added new sound events:
    • block.straw_bed.break
    • block.straw_bed.break_leave
    • block.straw_bed.step
    • block.straw_bed.place
    • block.straw_bed.hit
    • block.straw_bed.fall
    • block.poplar_leaves.break
    • block.poplar_leaves.fall
    • block.poplar_leaves.place
    • block.poplar_leaves.step
    • block.poplar_leaves.hit
    • block.red_shrub.break
    • block.red_shrub.place
    • entity.cushion.break
    • entity.cushion.place
    • entity.cushion.get_up
    • entity.cushion.sit

Item Models

  • Added optional shade_direction_override to block model elements
    • Accepted values are cardinal directions (downupnorthsouthwesteast)
    • When set, this overrides directional shading for the element regardless of face orientation
  • Removed shade from block model elements
    • Use shade_direction_override: "up" to get the previous shade: false behavior

Shaders & Post-process Effects

Always-on Post Effect Support

  • A resource pack can now define a minecraft:end_of_frame post effect
  • It will be applied before other post effects, including the ones enabled by the new posteffect command
  • This post effect is always on as long as the resource pack is loaded, and cannot be controlled by the posteffect command
  • As usual with resource pack resources, in case of multiple packs defining this effect, the one from the last resource pack in the list will apply

Fixed bugs in 26.3 Snapshot 3

  • MC-51859 - The line spacing of text within all hover tooltips is larger between the first and second lines
  • MC-112580 - Structure blocks' GUI does not pause the game in singleplayer
  • MC-112744 - The Team NBT tag only exists for living entities
  • MC-174958 - /gamerule succeeds when the value is not changed
  • MC-175180 - The Silent NBT tag still doesn't make some entities fully silent
  • MC-224528 - Two splash texts use curly single quotes (’) instead of apostrophes (')
  • MC-229831 - Enchanting tables' GUI has three pixels in the top-right corner that shouldn't be there
  • MC-239401 - items/light.png never appears in-game; is pointlessly referenced by other game assets
  • MC-254353 - A packet to remove the score is always broadcast when a score is reset
  • MC-254661 - /schedule clear requires a namespace in its function argument
  • MC-256073 - Miscolored pixel in tab_inventory.png
  • MC-256096 - Some entities on a team can harm teammates that walk into them when friendly fire is disabled
  • MC-256097 - Some entities on a team can harm their teammates when they explode when friendly fire is disabled
  • MC-259583 - Brewing with a single bottle of dragon's breath does not return a glass bottle afterward
  • MC-267902 - The failure message of /random when the specified range is too large states an incorrect maximum for the range
  • MC-271297 - /fillbiome doesn't fail when no changes are made
  • MC-273327 - The #convertable_to_mud block tag misspells "convertible" as "convertable"
  • MC-275532 - The abbreviation "fps" is inconsistently capitalized across strings
  • MC-279185 - The "selectWorld.load_folder_access" string is missing an article before the word "folder"
  • MC-279819 - The mining speed factor of Mining Fatigue is inconsistent at level 3
  • MC-293615 - Tooltip formatting of "Items x number" is inconsistent across different types of items
  • MC-301804 - Test blocks' GUI does not pause the game in singleplayer
  • MC-305707 - /time reports success when no changes are made
  • MC-307616 - Typo in a log message in ActiveProfiler: "aprox"
  • MC-307618 - Typo in a log message in SoundEngine: "disapeared"
  • MC-307648 - "non-heap" is misspelled as "non-head" in the system details section of crash reports
  • MC-307660 - Typo in a log message in GameRenderer: "coudln't"
  • MC-307709 - The texture of upward facing sulfur spikes' merged tip has a single wrong pixel at the very top
  • MC-308460 - Some of the stems in wildflowers and pink petals render brighter
  • MC-308851 - The chat_restriction.disabled_by_profile.action string is improperly capitalized
  • MC-309021 - Poplar leaves' closed captions display as raw translation keys
  • MC-309024 - death.attack.sulfurCubeHot.item displays as a raw translation key
  • MC-309033 - The campsite_flower_forest_1 abandoned camp structure has stripes of orange wool under it
  • MC-309034 - The tent_windswept_forest_8 abandoned camp structure contains a dropped stack of bone meal
  • MC-309054 - The item texture of poplar hanging signs is inconsistent with other hanging signs
  • MC-309058 - The tent_flower_forest_4 abandoned camp structure contains a dropped birch log
  • MC-309090 - Certain entities on shelf mushrooms make a sound every tick
  • MC-309122 - Abandoned camps can generate in areas of wooded badlands with no trees nor grass
  • MC-309155 - Shelf mushrooms and red shrubs do not have unique sounds, unlike in Bedrock Edition
  • MC-309208 - The poplar wood set is inconsistently placed in the Creative mode inventory
  • MC-309261 - Incorrect calculation in the poplar trunk placer
  • MC-309308 - Several abandoned camp structures contain persistent leaves
  • MC-309324 - Ores don't generate in blobs of andesite, diorite, or granite below Y=0
  • MC-309350 - Shelf mushrooms generated with fallen trees replace water
  • MC-309392 - The lighting on entities and block entities is not rendered correctly and appears too dark or too bright on certain sides
  • MC-309395 - The texture of the top halves of poplar doors is missing a pixel on the second hinge
  • MC-309397 - The game renderer corrupts when toggling off fullscreen or resizing the window with the Vulkan rendering backend
  • MC-309399 - The game output console logs "Ignoring chat session from due to missing Services public key” when loading into a world
  • MC-309400 - The glowing effect on entities stays in place when cleared
  • MC-309403 - Having an item with the block_transformer component with a rule_based_state_provider locks the player out of that world
  • MC-309408 - The item tag that controls which items can douse campfires is misspelled as #dowses_campfires
  • MC-309412 - Block items ignore the block_transformer component
  • MC-309420 - The random_neighbor_spread feature has a field misspelled as "xy_offset"
  • MC-309432 - Worlds render entirely magenta on macOS with the Vulkan rendering backend
  • MC-309433 - Drowned can consume or use certain items
  • MC-309435 - Drowned no longer chase after players correctly
  • MC-309441 - Projectiles lose their can_break ability after reloading the world
  • MC-309445 - The game renderer can corrupt when toggling fullscreen or opening an inventory with the OpenGL rendering backend
  • MC-309467 - Player reporting is unavailable
  • MC-309471 - Cannot see other players' skins
  • MC-309518 - Can't scrape oxidation or wax off of copper doors