Wednesday, March 20, 2024 at 3:49 PM

Minecraft Snapshot 24w12a

Here's snapshot 24w12a with new advancements and several tweaks.

Happy Mining!

Experimental Features

Trial Chambers

Trial Chambers now generate slightly more rarely and a bit more spaced out from each other

Trial Chambers Explorer Map

  • Struggle no more to locate a Trial Chamber - level up your nearest Cartographer to Journeyman for the opportunity to trade for an Explorer Map pointing to a nearby Trial Chamber

Heavy Core

  • Can now be waterlogged
  • Survives lava flows
  • Most efficient tool is now the pickaxe
  • Adjusted destroy time and explosion resistance

Advancements

  • Added the following advancements:
    • Minecraft: Trial(s) Edition - Step foot in a Trial Chamber
    • Under Lock & Key - Unlock a Vault using a Trial Key
    • [Challenge - 40 exp] Blowback - Kill a Breeze with a deflected Wind Charge
    • Who Needs Rockets? - Use a Wind Charge to launch yourself upward at least 8 blocks
    • Crafters Crafting Crafters - Be near a Crafter when it crafts a Crafter
    • Lighten Up - Scrape a Copper Bulb with an Axe to make it brighter
    • Over-Overkill - Deal 50 hearts of damage in a single hit using the Mace

Technical Changes

  • The Data Pack version is now 36
  • The Resource Pack version is now 30
    • Particle entity_effect takes color argument when spawned from command
    • /particle entity_effect <r> <g> <b> <a>
    • 4 float values ranging from 0.0 to 1.0 representing RGBA

Data Pack Version 36

  • Added a crafter_recipe_crafted trigger which is triggered when a Crafter ejects a successfully crafted item into the world.
    • <player> an entity predicate matching the player who is nearby
    • <recipe_id> is the ID of the recipe being crafted
    • <ingredients> is a list of item predicates matching the ingredients that form the recipe being crafted
  • Added a fall_after_explosion trigger which is triggered when a player begins falling after being knocked upwards by an explosion or wind burst
    • <player> an entity predicate matching the player who is falling
    • <start_position> a location predicate matching the position the player was at when they were hit by the explosion or burst
    • <distance> a distance predicate matching how far the player must be from start_position to cause the trigger to activate
    • <cause> an entity predicate matching the entity which caused the explosion or burst to happen
  • Added storage loot number provider to access values from command storage
  • New Entity Type Tag: sensitive_to_smite - for Entity Types that take extra damage from the Smite Enchantment
  • Expanded item predicate syntax used in execute if|unless items and clear commands
  • Removed redundant custom data section ({...}) from item arguments (it's fully replaced by [custom_data={...}])
    • To make this transition easier, custom_data item sub-predicate has been changed to allow unquoted SNBT
  • Added wolf entity sub-predicate for matching wolf variants
  • wolf, cat, frog and painting entity sub-predicates now accept tags and plain lists instead of just single elements
  • Changed texture asset paths in wolf_variant to better match other formats
  • Command arguments that previously accepted namespaced ids of loot tables, modifiers and predicates can now also accept inline definitions
  • Added new item stack components
  • Added new loot functions

wolf_variant definitions

  • Field texture has been renamed to wild_texture
  • wild_texture, tame_texture and angry_texture no longer require values to be prefixed with textures/ and suffixed with .png

Commands

Inline loot values

Arguments in following commands that previously accepted namespaced ids of loot tables, modifiers and predicates can now also accept inline definitions:

  • loot
  • item
  • execute if predicate Values have same structure as matching JSON files, though they are encoded as SNBT. Example: execute if predicate {condition:weather_check, raining:true}

Loot tables

storage number provider

  • This number provider is able to access numeric values from command storage directly
  • If selected storage does not exist or tag selected by path is not numeric or does not exist, provider returns 0
  • Fields:
    • storage - namespaced id of command storage
    • path - NBT path to field

set_lore function

  • The replace field has been removed
  • Now has mode like set_fireworks and set_written_book_pages

set_written_book_pages function

  • pages is now a JSON Object rather than a string containing JSON

toggle_tooltips loot function

  • This function can be used to modify item component tooltip visiblity
  • It works by setting fields like show_in_tooltip without changing other values
  • Format:
    • toggles - a map of supported item component type to boolean value
  • Supported components: trim, dyed_color, enchantments, stored_enchantments, unbreakable, can_break, can_place_on, attribute_modifiers
  • Example:
    • {function:"toggle_tooltips","toggles":{"enchantments":false}} will hide enchantments tooltip

Functions

  • Nested lists are no longer supported in function lists

Item predicate argument

The item predicate syntax (used in execute if|unless items and clear commands) has been significantly expanded.

  • The general syntax is: <type> [comma-separated list of <test>]
  • <type> can be one of:
    • item id
    • item tag id prefixed with #
    • * to match any item
  • <test> can have one of 3 forms:
    • <component_id>=<value> - match exact value of component (same as in previous format)
      • <value> is a representation of component value in SNBT format (same as in item give argument)
    • <component_id> - check if component exists
    • <predicate_id>~<value> - check item sub-predicate
      • <value> is a representation of item sub-predicate in SNBT format (but otherwise same as one used for advancement and loot table JSON files)
      • Example: *[damage~{durability:{min:3}}] will match any stack with at least 3 uses left
  • The special name minecraft:count can be used for matching the stack size
    • count=<positive int> will pass only when the stack size equals the given value
    • count~<int range> will pass when the stack size is in the specified range
      • Example: *[count~{max:2}] will match any stack with count <= 2
    • count will always pass
  • Any <test> entry can be negated by prefixing with !
    • Example: *[!count=1] will match any stack that has count other than 1
  • <test> elements can be also joined with | to check multiple alternatives
    • Example: *[!damage|damage=0] will look for items without damage component or with 0 damage
  • The syntax for custom data partial matching ({}) has been removed in favor of using custom_data predicates
    • So stick{a:2} becomes stick[custom_data~{a:2}]

Predicates

Item sub-predicates

  • Predicate minecraft:custom_data now accepts both SNBT data written as a string (existing format) and unflattened tags
    • That means that *[custom_data~{a:1}] and *[custom_data~"{a:1}"] are equivalent
    • Flattened string format has been kept since NBT type information can't be expressed in JSON

Entity sub-predicates

wolf

New wolf sub-predicate has been added to match wolf variants Fields:

  • variant - wolf variant to match (single entry, list of entries or tag)

cat, frog, painting

  • Field variant now accepts single entries, list of entries or tags

New Item Stack Components

minecraft:food

  • When present, this item will behave as if a food (can be eaten)
  • Format: object with fields
    • nutrition: non-negative integer, number of food points to restore when eaten
    • saturation_modifier: float, amount of saturation to restore when eaten
    • is_meat: boolean (default: false)
      • If true, can be fed to Wolves
    • can_always_eat: boolean (default: false)
      • If true, this food can be eaten even if not hungry
    • eat_seconds: float (default: 1.6)
      • The number of seconds that it takes to eat this food item
    • effects: list of effects to apply when eaten (default: [])
      • effect: effect instance (same format as custom_effects in minecraft:potion_contents component)
      • probability: float between 0 and 1, chance for the effect to be applied (default: 1)
    • e.g: food={nutrition:4,saturation_modifier:0.1}
  • On food items, has an implicit default value for that food type

minecraft:max_stack_size

  • Controls the maximum stacking size of this item
  • Format: integer between 1 and 99
    • e.g. max_stack_size=4
  • Has an implicit default value according to the item type (usually 64)

minecraft:max_damage

  • Controls the maximum amount of damage than an item can take
  • If not present, the item cannot be damaged
  • Format: positive integer
    • e.g. max_damage=123
  • Has an implicit default value for damageable items

minecraft:fire_resistant

  • If present, this item will not burn in fire
  • Format: empty object
    • e.g. fire_resistant={}
  • Has an implicit default value for fire-resistant items such as Netherite

minecraft:rarity

  • Controls the color of the item name
  • Format: enumerated value, one of:
    • common (default): white name, or aqua when enchanted
    • uncommon: yellow name, or aqua when enchanted
    • rare: aqua name, or light purple when enchanted
    • epic: light purple name
    • e.g. rarity=rare
  • Special items such as Golden Apples have an implicit default value

minecraft:tool

  • Controls the behavior of the item as a tool
  • Format: object with fields
    • rules: list of rule entries
      • blocks: single block, list of blocks, or #-prefixed block tag to match
      • speed (optional): float, overrides the mining speed if present and matched
      • correct_for_drops (optional): boolean, overrides whether this tool is considered 'correct' if present and matched
        • true will cause the block to mine at its most efficient speed, and drop items if the targeted block requires that
    • default_mining_speed: float, mining speed to use if no rules match and override mining speed (default: 1.0)
    • damage_per_block: non-negative int, amount of durability to remove each time a block is mined with this tool
    • e.g. tool={rules:[{blocks:"#mineable/pickaxe",speed:4.0,correct_for_drops:true}]}
  • Vanilla tool items will have an implicit default value based on their tier and tool type

hide_tooltip

  • If present, it will completely hide whole item tooltip (that includes item name)
  • Tooltip will be still visible and searchable in creative mode
  • Format: empty object

New Tags

  • Added incorrect_for_wooden_tool, incorrect_for_gold_tool, incorrect_for_stone_tool, incorrect_for_iron_tool, incorrect_for_diamond_tool, incorrect_for_netherite_tool block tags
    • These tags combine the existing needs_diamond_tool, needs_iron_tool, and needs_stone_tool tags for each specific tool tier
  • Added meat collection item tag
    • This is not used by the game directly, but may be included by other tags
  • Added piglin_food, fox_food, cow_food, goat_food, sheep_food, wolf_food, cat_food, horse_food, horse_tempt_items, camel_food, armadillo_food, bee_food, chicken_food, frog_food, hoglin_food, llama_food, llama_tempt_items, ocelot_food, panda_food, pig_food, rabbit_food, strider_food, strider_tempt_items, turtle_food, parrot_food, parrot_poisonous_food item tags to control which items can be fed to or tempt the corresponding mobs
  • axolotl_tempt_items has been renamed to axolotl_food

Resource Pack Version 30

  • Map decoration icons have been split from the former map_icons.png to use an atlas loaded from the textures/map/decorations/ directory
  • The process of upgrading your pack can be assisted by using this automated Slicer tool
  • Added trial_chambers map decoration icon

Fixed bugs in 24w12a

  • MC-266467 Wind charges stutter when flying through the air
  • MC-267747 Click and hover events don't work when viewing chat while F1 is enabled
  • MC-267933 Silk Touch and Fortune enchanted books cannot be found in Creative inventory
  • MC-267943 Anvil exclusive enchantments can be obtained from enchanting tables
  • MC-268068 Pieces of text in the "Reset World" realm menu can intersect when using some resolutions
  • MC-268171 Some GUI textures can no longer be transparent in Minecraft
  • MC-268311 Bane of arthropods enchantment uses #arthropods tag instead of #sensitive_to_bane_of_arthropods
  • MC-268312 Impaling enchantment uses #aquatic tag instead of #sensitive_to_impaling
  • MC-268343 Breeze charge has laggy unnatural flightpaths when punched
  • MC-268510 Items with "Unbreakable:1b" NBT can no longer have the unbreaking enchant applied
  • MC-268556 Wind charges go through non-full blocks instead of colliding
  • MC-269083 Effect background texture in inventory renders translucent pixels as opaque
  • MC-269085 Experience bar and jump bar render translucent pixels as opaque
  • MC-269169 Wolf variant not present in advancement criteria
  • MC-269268 components don't work on the smithing table
  • MC-269280 The right side of incompatible resource or data packs isn't rendered correctly when the scroll bar is present
  • MC-269299 The red text within the "Experiments" menu cannot be narrated or selected
  • MC-269336 Crash with set_enchantments item modifier above level 255
  • MC-269354 The subtitle for the "minecraft:item.mace.smash_air" sound event displays as a raw translation string
  • MC-269355 Heavy Core has no required tool
  • MC-269356 Heavy Core cannot be oriented despite its blockstates suggesting otherwise
  • MC-269361 Weird Wind Charge behavior when deflecting
  • MC-269373 /datapack disable doesn't work
  • MC-269393 Game crashes when wind charge hits entity
  • MC-269401 The minecraft:set_written_book_pages item modifier is inconsistent with minecraft:set_name and minecraft:set_lore
  • MC-269409 Unable to execute /particle entity_effect
  • MC-269419 Heavy Core cannot be waterlogged
  • MC-269422 Carpet on powder snow no longer negates fall damage
  • MC-269452 Crash when using item modifier with replace_section mode and very large size field
  • MC-269457 Crash with set_lore item modifier setting more than 256 lores
  • MC-269513 Maces can break cobwebs