Technical
- The data pack format is now 10
- The resource pack format is now 9
- Added the ability for data and resource packs to selectively hide files from packs below them
- Added kill_mob_near_sculk_catalyst advancement trigger
- Added thrown_item_picked_up_by_player advancement trigger
- Added allay_drop_item_on_block advancement trigger
- Added avoid_vibration advancement trigger
- Removed field location from triggers location, slept_in_bed, hero_of_the_village and voluntary_exile - it was handled exactly the same as player.location
- Some mutually exclusive tests in entity predicate (player, fishing_hook, lightning_bolt and catType) have been collapsed to the type_specific field
- Removed the placefeature command
- Added the place command
- The locate command is now moved to locate structure, locatebiome is moved to locate biome
- Added locate poi <type: point_of_interest_type>
- Added the loot table function set_instrument
- The bundled Java runtime has been updated to 17.0.3
- The M1 ARM64 architecture is now supported
- LWJGL library has been updated to version 3.3.1
- Banner patterns available in the Loom can now be controlled with tags (banner_pattern/no_item_required for no pattern item and banner_pattern/pattern_item/* for specific banner pattern items)
- Added new font glyph provider for spaces
- Added new game events
- Renamed some game events
- CatType fields on enitites with type minecraft:cat have been replaced with variant, with numeric values being replaced with string ids (so, for example, 5 becomes minecraft:calico)
- The type of the field Id in the mob effect structure (for example, in the ActiveEffects list on entities) has been changed from byte to int
- Added minecraft:darkness mob effect
- Added sonic_explosion particle
- World presets/types and flat world presets in the “Create World” screen can now be controlled by datapacks
- Servers can now enable Chat Preview, which displays a server-controlled preview above the chat edit box
- Servers can now define different chat style formats for clients
- Added server property max-chained-neighbor-updates to limit the amount of consecutive neighbor updates before skipping additional ones
- Negative values remove the limit
- Servers will now also send an additional icon and MOTD packet after a player has connected
- This allows servers with enable-status=false to set an icon and MOTD for players that successfully connect
Advancements
New triggers
allay_drop_item_on_block
- Triggered when an Allay drops an item on a block
- Conditions:
player - a predicate for the player who gave the Allay the item to collect
location - a predicate for the block that the item was dropped on
item - a predicate for the item that was dropped
avoid_vibration
- Triggered when a vibration event is ignored because the source player is holding the sneak key
- Conditions:
player - a player for which this trigger runs
kill_mob_near_sculk_catalyst
- Triggered when a player kills an entity next to a Sculk Catalyst
- Conditions:
player - a predicate for the player killing the entity
entity - a predicate for the entity that was killed
killing_blow - a predicate for how the entity was killed
thrown_item_picked_up_by_player
- Triggered when a player picks up an item that was thrown by an entity
- Conditions:
player - a predicate for the player picking up the item
entity - a predicate for the entity that threw the item
item - a predicate for the item
Blending
- Blending now supports 3D biome blending, which blends the underground biomes as well as the overground biomes
- Removed
blending_data.old_noise, now existence of blending_data in chunk data determines if a chunk is considered old
- Added
blending_data.min_section and blending_data.max_section that determines which section data that will be used for blending
Chat Preview
- Servers can enable Chat Preview by setting
previews-chat=true in server.properties
- Custom servers can enable or disable chat preview for certain clients by sending a new network packet
- When enabled, a server-controlled preview appears above the chat edit box, showing how the message will look when sent
- A preview is also shown for chat-related commands, such as
/say and /msg
- This can be used by servers to preview messages with styling applied, such as emojis or chat coloring
- Chat Preview sends chat messages to the server as they are typed, even before they’re sent
- The server then sends back the styled preview in real time
- This allows servers to apply dynamic message stylings while still allowing chat to be securely signed
- A warning screen is shown on the client when joining a server with Chat Preview, and it can be globally disabled in Chat Settings
Chat Types
- Different chat style formats can now be controlled by the server through the
chat_type registry
- These are synchronized to clients when they join the server
- The translation key or translation format can be defined, like
chat.type.text or %s says: "%s"
- Chat can be similarly optionally narrated with a custom translation key or format
- The entire message can have formatting applied, such as italics or a specific color (but currently not click or hover events)
Commands
place
New command that replaces placefeature and can place features, jigsaws, structures, and templates at a given location. Syntax:
place feature <feature> [pos]
place jigsaw <pool> <start> <depth> [pos]
place structure <structure> [pos]
place template <template> [pos] [rotation] [mirror] [integrity] [seed]
Parameters:
place feature works like placefeature used to work
place jigsaw works like using the generate button in the UI of a Jigsaw Block
place template works like using the load button in the UI of a Structure Block
place structure generates a full structure, matching how structures generate during world generation
feature: The namespaced id of a configured feature to try to place
structure: The namespaced id of a structure to try to generate
template: The namespaced id of a template (“structure block file”) to load and place
pool: The namespaced id of a template pool to start generating
start: The namespaced id name of a jigsaw to use as the starting anchor
depth: The maximum number of jigsaw connections to traverse during placement
pos: The position to use as the origin for the generation (if omitted, ~ ~ ~ is used)
rotation: The rotation to apply (if omitted, none is used)
mirror: The mirroring to apply (if omitted, none is used)
integrity: The structure integrity value between 0 and 1
seed: The seed to use for the randomized degradation when integrity is less than 1
Debug
- Added a heap memory allocation metric to the F3 debug screen
- Added estimated GPU utilization percentage to performance profiling metrics and the F3 debug screen
- This is only available for graphics devices that support GPU timer queries
- Removed the debug hotkey that cycles the render distance
Game Events
Added Events
teleport with a vibration frequency of 5
note_block_play with a vibration frequency of 6
instrument_play with a vibration frequency of 15
Combined Events
The following events have been collapsed into block_activate and block_deactivate:
block_press
block_unpress
block_switch
block_unswitch
Other Changes
Other miscellaneous changes to game events:
ring_bell has been removed and replaced with block_change
- Both
shulker_open and shulker_close have been removed in favour of using container_open and container_close
fishing_rod_cast and fishing_rod_reel_in have been renamed to item_interact_start and item_interact_finish
item_interact_start is not detectable as a vibration to allow more specific actions be detected, like drink or eat, but item_interact_finish is
entity_interact should be dispatched more often when interacting with various mobs
- Added the
dampens_vibrations block tag that that includes all Wool and Wool Carpet blocks, to indicate blocks that will not trigger when placed, broken, or stepped on
- Renamed item tag
occludes_vibration_signals to dampens_vibrations item tag as well
Renamed Events
Some game events have been renamed, with some of those changes to make them more gramatically consistent:
drinking_finish -> drink
entity_killed -> entity_die
entity_damaged -> entity_damage
elytra_free_fall -> elytra_glide
mob_interact -> entity_interact
ravager_roar -> entity_roar
wolf_shaking -> entity_shake
Game Rules
- Added
doWardenSpawning game rule
Loot Tables
New functions
set_instrument
Sets the item tags needed for instrument items to a randomly selected instrument from a tag
Parameters:
options - a tag reference specifying the instrument options to randomly pick from
Multiplayer Secure Chat Signing
- Chat messages between players are now cryptographically signed
- The message arguments to
/say, /msg, /teammsg, and /me commands are all also signed
- Players are given a Mojang provided key-pair on startup
- Servers can require players to have a Mojang-signed public key by setting
enforce-secure-profile=true in server.properties
- Enforcing secure profiles will prevent players without a Mojang-signed public key from connecting
- By default this is set to
false, allowing players to connect without a Mojang-signed public key
- Static chat styling can now be controlled by the server through the
chat_type registry, or with server resource packs as before
- Dynamic chat styling can also be controlled by the server, although this is only signed when Chat Preview is enabled
- Clients can prefer to always show the original, signed message by enabling “Only Show Secure Chat” in Chat Settings
- Chat from players still using Mojang Accounts is not signed
- Their messages will not show for players with “Only Show Secure Chat” enabled
- They may be unable to join server with the
enforce-secure-profile option enabled
Pack filters
- Data and resource packs can have
filter section in pack.mcmeta
- This section has mandatory field
block, which is a list of patterns (regular expressions) for namespaces and paths
- If any of the files in packs are added before one with
filter, the section will match any pattern inside block, and it will then be filtered out (i.e. treated as if it wasn’t present in the first place)
filter section does not apply to a pack containing it - only to packs loaded before it
- Both
namespace and path can be omitted
- Missing field matches every value
- For example, adding a pack with this section in
pack.mcmeta after the vanilla pack will hide all the recipes and advancements defined by the vanilla pack
Example
"filter": {
"block": [
{
"namespace": "minecraft",
"path": "recipes/.*"
},
{
"namespace": "minecraft",
"path": "advancements/.*"
}
]
}
Paintings
- Paintings that are placeable in survival can now be controlled with the
painting_variant/placeable tag
- Added unused paintings from Bedrock edition (
earth, wind, fire, water)
- These paintings are not placeable by default, but can be added through a datapack
Point of Interest types
- Removed
unemployed and nitwit point_of_interest_types
- Added tag
point_of_interest_type/acquirable_job_site for all job sites seeked by villagers with none profession
- Added tag
point_of_interest_type/village for PoI that are part of village
- Added tag
point_of_interest_type/bee_home for all PoI targeted by bees
Predicates
- The
feature field in location predicates is now called structure
Entity predicate
player, fishing_hook, lightning_bolt and catType fields have been replaced with type_specific
type_specific has field type (one of player, fishing_hook, lightning_bolt or cat) and same fields as removed fields
catType has been wrapped to match new format and now uses new cat variant names instead of texture names:
- New
type_specific options:
frog has variant field matching Frog variant (minecraft:warm, minecraft:temperate or minecraft:cold)
slime applies for Slimes and Magma Cubes, has size field matching Slime size (smallest is 1)
catType Example
Before:
"catType": "minecraft:textures/entity/cat/british_shorthair.png"
After:
"type_specific": {
"type_specific": {
"type": "cat",
"variant": "minecraft:british"
}
type_specific Example
Before:
"lightning_bolt": {
"blocks_set_on_fire": 0
}
After:
"type_specific": {
"type": "lightning",
"blocks_set_on_fire": 0
}
Space glyph provider
- The new glyph provider type
space is added to allow creation of space-like glyphs
- The new provider has a single argument called
advances which is a map of codepoint to glyph advance (width)
- The rendering of space glyph is no longer hardcoded (needs to be declared manually in font)
World presets
- New registry types
worldgen/world_preset and worldgen/flat_level_generator_preset have been added to configure data-driven presets (like “Amplified” or “Single Biome”)
- Two tags for world presets have been added (
normal and alternative) to control which values show on the “World Type” button in the “Create World” screen
- One tag has been added (
visible) for flat world presets to control the order that elements are displayed in the “Configure Flat World” screen
- World presets can also be used as a value of
level-type in server.properties
Fixed Bugs in 1.19
Get the Release
To install the release, open up the Minecraft Launcher and click play!
Cross-platform server jar:
Report bugs here:
Want to give feedback?
Share this story