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
, summon
paletted_permutations
screenshots/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_smithing
smithing
HideFlags
NBT field for hiding armor trim item tooltipsenchanted_glint_entity.png
and enchanted_glint_item.png
slider.png
filelight_dirt_background.png
for its background, unlike other screensThe 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 toNew 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 NetherNew 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 stringinfinite
is now a valid option for effect durationsNew 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 idNew 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.
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 materialNew 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
command has been optimizedtitle times
are now time durations and work with t
, s
and d
suffixesduration
parameter is now a time duration in ticks and works with t
, s
and d
suffixess
suffix to pre-existing commandsNew 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 target
ride <target> dismount
target
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.item
intentional_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 fillbiome
doVinesSpread
game rule, determining if vines will spread to nearby blockstrue
Added 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
- rotation
scale
- 3d vectortranslation
, left_rotation
, scale
, right_rotation
axis
- 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_interpolation
interpolation_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 disabled0
glow_color_override
- override glow border color. Defaults to -1
(use team color). Alpha component is ignoredDisplays a single item stack.
container.0
Fields:
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
, fixed
Displays a block state.
Fields:
block_state
- block state to display. Same format as item held by endermen (example {Name:"minecraft:dirt"}
)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
, right
Note: 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_entity
player_hurt_entity
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.