
We're now releasing 1.19.4 for Minecraft: Java Edition. This release comes with improvements to horse breeding and jukeboxes, new visuals for potions, new accessibility features and many new technical capabilities like the damage and ride commands and display and interaction entities.
The update_1_20 experiment has also been updated with a first look at the Sniffer, Archaeology, Armor Trims and Cherry Grove features.
The speed, jump height and health of a baby is now a variation of the average of the parents' attributes, rather than being biased towards the average possible value.
This change makes horse breeding a viable way of getting great horses, if a player starts with good parents and puts in enough time and Golden Carrots.
damage command for applying damage to entitiesride command to mount and dismount entitiesclone command now supports cloning to and from different dimensionsstring source is now available for the data modify commandexecute sub-commands: if dimension, if loaded, on, positioned over, summonpaletted_permutationsscreenshots/debug/fallback fields to translate text componentstranslate formats are no longer silently ignoredentity_dismount with a vibration frequency of 6entity_mount with a vibration frequency of 7item_interact_finish now has a vibration frequency of 2 instead of 14heldItemTooltips option from options.txt--pidFile argument to dedicated server command line for printing process id to fileshow_notification field to recipestrue if isn't specifiedsmithing_transform has been added for the updated Netherite Upgrade recipesmithing_trim has been added for the new Armor Trim recipecrafting_decorated_pot has been added for the new Decorated Pot recipetrim_pattern and trim_material have been added for the armor trim systemlegacy_smithingsmithingHideFlags NBT field for hiding armor trim item tooltipsenchanted_glint_entity.png and enchanted_glint_item.pngslider.png filelight_dirt_background.png for its background, unlike other screensclone#The clone command now supports specifying the source and target dimensions.
New syntax:
clone [from <sourceDimension>] <begin> <end> [to <targetDimension>] <destination> ...
Parameters:
sourceDimension: id of dimension to clone fromtargetDimension: id of dimension to clone todamage#New command to apply damage to entities.
Syntax:
damage <target> <amount> [<damageType>] [at <location>]damage <target> <amount> [<damageType>] [by <entity>] [from <cause>]Parameters:
target: The entity to damageamount: Amount of damage to inflictdamageType: The type of damage to inflictentity: The entity inflicting the damagecause: The cause of the damage, in the case of indirect damageentity is the Arrow projectile while cause might be a Skeletonlocation: The location the damage originated at (when no entity caused the damage)location might represent the location of a Bed exploding in the Netherdata#New source available:
string <entity|block|storage> [path] [start] [end] - reads a value as text, resulting in a string valueNew arguments:
start: Index of first character to include at the start of the stringend: Index of the first character to exclude at the end of the stringeffect#infinite is now a valid option for effect durationsexecute#execute if|unless#New conditions available for the execute if|unless sub-command:
execute if|unless loaded <pos> - checks if the position given is fully loaded (in regard to both blocks and entities)execute if|unless dimension <dimension> - checks if the execution is in a matching dimensionParameters:
pos: Block position to checkdimension: A dimension idexecute on#New execute sub-command for selecting entities based on relation to the current executing entity:
execute on <relation>Relations:
vehicle - the entity that the executing entity is ridingpassengers - all entities directly riding the executing entity (no sub-passengers)controller - the entity that is controlling the executing entity (for example: first passenger in a boat)owner - the owner of the executing entity, if it is a tameable animal (like cats, wolves or parrots)leasher - the entity leading the executing entity with a leash (might be a leash knot in case of being attached to a fence)target - the attack target for the executing entityattacker - the last entity that damaged the executing entity in the previous 5 secondsorigin:If the relation is not applicable to the executing entity or there are no entities matching it, the selector returns zero elements.
execute positioned over#New execute sub-command for finding positions on top of a heightmap. Changes the height of the execution position to be on top of the given heightmap.
Syntax:
execute positioned over <heightmap>A heightmap records the highest position in a column of blocks according to some criteria. Available options:
world_surface: Any non-air blockmotion_blocking: Any motion blocking material (e.g. ignores flowers and grass)motion_blocking_no_leaves: Any non-leaf motion blocking materialocean_floor: Any non-fluid motion blocking materialexecute summon#New execute sub-command for summoning a new entity and binding the context (@s) to it. Meant to simplify entity setup and reduce the need for raw NBT editing.
Syntax:
execute summon <entity id>fillbiome#fillbiome command has been optimizedtitle#title times are now time durations and work with t, s and d suffixesweather#duration parameter is now a time duration in ticks and works with t, s and d suffixess suffix to pre-existing commandsride#New command to allow entities to start or stop riding other entities.
Syntax:
ride <target> mount <vehicle>vehicle is a playertarget is already riding a vehicletarget and vehicle are the same entityvehicle is already a passenger (direct or indirect) of targetride <target> dismounttarget from any vehicle it is ridingtarget is not riding anythingDamage Types are a new registry that can be extended through data packs. A Damage Type determines how damage is handled by the game. This includes which attributes the damage has as well as which death message is used when an entity dies due to that type of damage.
Example:
{
"exhaustion": 0.1,
"message_id": "arrow",
"scaling": "when_caused_by_living_non_player"
}
Fields:
message_id: The message id used for deaths caused by this damage typeexhaustion: The amount of hunger exhaustion caused by this damage typescaling: Whether this damage type scales with difficulty levels. Possible values:never: Damage is always the samealways: Damage always scales with difficultywhen_caused_by_living_non_player: Damage scales with difficulty if it was caused by a living entity who is not a playereffects: Optional field controlling how damage manifests when inflicted on players. Possible values:hurt (default): the default hurt soundthorns: Thorns hurt sounddrowning: Drowning soundburning: A single tick of burning soundpoking: Berry bush poke soundfreezing: Freeze tick sounddeath_message_type: Optional field that controls if special death message variants are used. Possible values:default (default): No special death message logic is appliedfall_variants: Show a variant of fall damage death instead of a regular death message, e.g. death.fell.assist.itemintentional_game_design: Show the intentional game design message instead of a regular death messageDamage type tags control many aspects of how damage from different sources are interpreted.
The following fields have been removed from damage type predicates: is_projectile, is_explosion, bypasses_armor,
bypasses_invulnerability, bypasses_magic, is_fire, is_magic, is_lightning.
A new tags array has been added, with the predicate matching if all entries match. Each entry has two fields:
id: The ID of a damage type tagexpected: Whether the damage is expected to have or not have the tag for the predicate to matchcommandModificationBlockLimit, controlling the maximum number of blocks changed in one execution of clone, fill and fillbiomedoVinesSpread game rule, determining if vines will spread to nearby blockstrueAdded an optional fallback field to translate text components.
fallback is missing, the old behavior (i.e. using the key itself as the translation) is preservedThree new entities have been added for flexible display of items, blocks and text
marker, don't tick and have no collisions or physicsTag contents for display entities include some new data types with a complex structure. Any form can be used for modifying data, but only one form is used for saving.
Arbitrary affine transform.
translation - 3d vectorleft_rotation, right_rotation - rotationscale - 3d vectortranslation, left_rotation, scale, right_rotationaxis - unit 3d vectorangle - in radiansSome properties of display entities can be interpolated. That means that clients will see gradual changes over time instead of instantaneous jumps.
Display entities keep track of current and previous values of interpolated values:
interpolation_duration ticksstart_interpolation field (this field is not normally present in NBT)0 ticks means that interpolation will start in next client tick after receiving the updatestart_interpolation + interpolation_duration ticks after receiving the updatestart_interpolation, but it will still behave as if it was started at the moment of the last update to start_interpolationinterpolation_duration ticks have passed since last start_interpolation update, the entity will immediately jump to new valuesAll display entity types have the following fields:
transformation - the transformation applied to model (after normal entity orientation). Defaults to identity. Interpolatedbillboard - option to control if entity should pivot to face player when rendered:fixed - no rotation (default)vertical - entity can pivot around its vertical axishorizontal - entity can pivot around its horizontal axiscenter - entity can pivot around its center pointbrightness - if present, overrides light values used for rendering. Omitted by default (which means rendering uses values from entity position). Object has two fields:sky - value of skylight, 0..15block - value of block light, 0..15view_range - maximum view range of this entity. Actual distance depends on client-side render distance and entity distance scalling. Default value 1.0 (roughly the same as fireball)shadow_radius - size of shadow. Defaults to 0 (no shadow). Interpolatedshadow_strength - strength of the shadow. Controls the opacity of the shadow as a function of distance to block below. Defaults to 1. Interpolatedwidth, height - describe size of culling bounding boxy to y+height and horizontally width/2 in all directions from entity position0, culling is disabled0glow_color_override - override glow border color. Defaults to -1 (use team color). Alpha component is ignoreditem_display#Displays a single item stack.
container.0Fields:
item - item stack to display. Same format as in inventory (example: {id: "minecraft:dirt", Count: 1})item_display - describes item model transform applied to item (as defined in display section in model JSON)none (default), thirdperson_lefthand, thirdperson_righthand, firstperson_lefthand, firstperson_righthand, head, gui, ground, fixedblock_display#Displays a block state.
Fields:
block_state - block state to display. Same format as item held by endermen (example {Name:"minecraft:dirt"})text_display#Displays a text component.
Fields:
text - text to display. Components are resolved with the context of the display entityline_width - line width used to split lines (note: new lines can be also added with \n characters). Defaults to 200text_opacity - opacity (alpha component) of rendered text. Defaults to 255. Interpolatedbackground - color of background. Includes alpha channel. Defaults to 0x40000000. Interpolateddefault_background - if true, rendering uses default text background color (same as in chat). Defaults to falseshadow - whether the text should be displayed with a shadow. Defaults to falsesee_through - whether the text should be visible through blocks. Defaults to falsealignment - how the text should be alignedcenter (default), left, rightNote: text display backgrounds uses new shader types rendertype_text_background and rendertype_text_background_see_through.
A new type of entity that records attacks ("left clicks") and interactions ("right clicks"). Interactions are invisible and of a custom size.
Fields:
width: Width of the entity's bounding box (default 1)height: Height of the entity's bounding box (default 1)attack: Records the last attack action on the entityinteraction: Records the last interaction action on the entityresponse: Boolean specifying if interacting should trigger a response (arm swing, sound effects, etc - default false)When an action is stored, it always has two fields:
player: The UUID (in standard integer array format) of the player performing the actiontimestamp: The timestamp of the game tick when the event happened (stored as a long)player_interacted_with_entityplayer_hurt_entityexecute on with Interactions#The Interaction entity targets the player who last interacted with it. That makes the following possible:
execute on attacker: execute as the last player who attacked the entityexecute on target: execute as the last player who interacted with the entityincreased_fire_burnout biome tagonly_allows_snow_and_gold_rabbits biome tag has been renamed to spawns_gold_rabbits to match its behaviorspawns_white_rabbits biome tagspawns_snow_foxes biome tagsnow_golem_melts biome tagdismounts_underwater entity tag will now force the rider to dismount when underwaterpaletted_permutations is a new type of atlas configuration source used to dynamically generate new textures in memory based on a set of color palettespaletted_permutations source has a set of required parameters:textures A list of namespaced locations of base texturespalette_key A namespaced location of a color palette key filepermutations A map of permutations from suffix to a namespaced location of a color palette file_ character separating the suffix and the base texture namepalette_key defined for this sourcepalette_key to the RGB values of each pixel in the color palettepalette_key are copied over to the resulting texture as-ispaletted_permutations source, you can then reference those namespaced output textures in other resources in your resource packFor example, if you have the following paletted_permutations source:
{
"type": "paletted_permutations",
"textures": [
"minecraft:item/leather_helmet",
"minecraft:item/leather_chestplate",
"minecraft:item/leather_leggings",
"minecraft:item/leather_boots"
],
"palette_key": "minecraft:colormap/color_palettes/leather_armor_color_key",
"permutations": {
"red": "minecraft:colormap/color_palettes/red",
"green": "minecraft:colormap/color_palettes/green",
"blue": "minecraft:colormap/color_palettes/blue"
}
}
You can then reference the resulting textures in other resources like this:
{
"textures": {
"layer0": "minecraft:item/leather_helmet_red",
"layer1": "minecraft:item/leather_chestplate_green",
"layer2": "minecraft:item/leather_boots_blue"
}
}
trim_pattern and trim_material registry respectivelyname fieldasset_id which is a namespaced id used to infer texture locations and localizationtemplate_item which is the id of the smithing template item used to apply the trim patterndescription which is a text component used for displaying the pattern name of an armor trim when hovering an armor itemstackasset_name which is a string used as a suffix for armor trim texture locationsingredient which is the id of the ingredient item used to apply the trim materialitem_model_index which is a float which defines the item model override each armor item model should target to change their visuals for this materialoverride_armor_materials which is an optional map of armor material to overridden color palettedescription which is a text component used for displaying the material name of an armor trim when hovering an armor item stackdescription as wellThe following changes only apply when one or more Experiments is turned on, either by activating the corresponding experimental data pack or by turning it on in the Experiments screen while creating the world.
Around 150 bugs were fixed in this release. View the list on the issue tracker.