What, is there something special happening today? Hold on, let me grab my calendar book from my chiseled bookshelf.
Oh, it's time for Trails & Tales! How could I forget? Time to equip your new brush and ride your camel off to new adventures!
New Features
All features and changes from the "Update 1.20" experimental pack are now part of the game
Added Archaeology
Added Sniffer mob, Torchflowers and Pitcher Plants
Added Camel mob
Added Smithing Template items and redesigned the Smithing Table
Added a new armor trimming system to visually customize your armor
Changed how Netherite equipment is crafted
Added the Cherry Grove biome and Cherry Wood Set
Added the Bamboo Wood Set
Added the Chiseled Bookshelf block
Added Hanging Signs
Improved customization options for Signs
Added the Calibrated Sculk Sensor block
Vibration resonance functionality has been added to Blocks of Amethyst
Added playable mob sounds with Mob Heads on Note Blocks
Added Piglin Mob Head
New music tracks added to Cherry Groves, Desert, Jungle, Badlands, and Flower Forest biomes
New Trails & Tales Advancements
Added support for Windows Aarch64/ARM64
Archaeology
Added craftable Brush item
Added Suspicious Sand and Suspicious Gravel
Suspicious Sand can be found in Desert Temples, Desert Wells and Warm Ocean Ruins
Suspicious Gravel can be found in Cold Ocean Ruins and Trail Ruins
These fragile blocks are hard to spot and easy to destroy, so be careful!
Brushing Suspicious Sand or Suspicious Gravel with a Brush will extract objects that were buried long ago
Added the Trail Ruins, a buried structure from a lost culture
Four types of Armor Trim Templates can be found here
Trail Ruins can be found in Taigas, Snowy Taigas, all Old Growth forest biomes and Jungles
A new music disc can be found by brushing suspicious blocks in this structure
When put in a Jukebox, "Relic" by Aaron Cherof is played
Added Pottery Sherds
Pottery Sherds have pictures on them
A total of 20 sherd have been distributed between the 5 Archaeology sites: Desert Wells, Desert Temples, Cold Ocean Ruins, Warm Ocean Ruins, and Trail Ruins
They cannot be crafted, and are only found by brushing Suspicious Sand or Suspicious Gravel
Decorated Pots
Crafting four Pottery Sherds together will create a Decorated Pot with a picture on each side
Brick items can be used instead of Pottery Sherds in the Decorated Pot recipe
The sides that were made from Brick items will not have pictures
Smash a Decorated Pot with any block-breaking tool to break it apart and get the Pottery Sherds back
Hitting the pot with bare hands, silk touch tools, or any other item will drop an intact pot instead
Crafted Decorated Pots with at least one pattern have a hover tooltip displaying the Sherd & Brick ingredients
Sniffer
The Sniffer is the mob vote winner of Minecraft Live 2022
Sniffers are passive, friendly mobs
Sniffers sniff the air and occasionally dig for seeds, which produces a Torchflower Seed or a Pitcher Pod item
Sniffers can only dig grass and dirt-like blocks
Sniffers can be tempted by, and bred with Torchflowers Seeds
Sniffer Egg
Can be found by brushing the Suspicious Sand of Warm Ocean Ruins
When two Sniffers breed they do not immediately spawn a Snifflet; instead, a Sniffer Egg is dropped
When placed in the world, the Sniffer Egg will hatch after some time
When placed on Moss, the Egg will hatch in approximately 10 minutes
On all other blocks, it will hatch in approximately 20 minutes
Torchflowers
The Sniffer can occasionally sniff up a Torchflowers seed, and it can be used to breed two Sniffers
The Torchflower seed can be planted on Farmland and grows into a Torchflower
The full-grown flower can be harvested and replanted
The Torchflower can be crafted into Orange Dye
Pitcher Plant
The Sniffer can occasionally sniff up a Pitcher Pod item
The Pitcher Pod, when planted on Farmland, grows into a Pitcher Crop
The Pitcher Crop has five growth stages
Once fully grown, the Pitcher Crop can be harvested, yielding a two-block-tall Pitcher Plant
The Pitcher Plant can be crafted into Cyan Dye
Camel
Camels can be equipped with a Saddle and ridden by two players
Camels spawn naturally when Desert Villages generate
Camels can be tempted by holding Cactus
Feed Cactus to Camels to breed them
Camels are tall
Most hostile mobs will not be able to reach you when you are on a Camel
They can walk over Fences and Walls
Camels randomly sit down
While sitting, it is difficult to convince them to move
Camels can either walk slowly or sprint quickly
They can also dash forward but will lose stamina for a while when doing so
Smithing
Smithing Tables have been redesigned into a workstation for physical equipment upgrades and modifications
Alongside slots for combining a piece of equipment and materials, there is now a required slot for an item type called Smithing Template
Smithing Templates define what type of upgrade you will be making to a piece of equipment
It specifies both what type of items you can upgrade, and which ingredients are valid to customize the upgrade
There are currently two categories of Smithing Templates: Armor Trim and Netherite Upgrade
Smithing Templates are consumed when used to upgrade an item in the Smithing Table
You can craft a copy of a Smithing Template in the Crafting Table with 7 diamonds + 1 block of material that the template is made out of + 1 smithing template, which will output 2 of the same Smithing Template
Netherite Equipment
Netherite equipment crafting now also requires a Netherite Upgrade Smithing Template
Netherite Upgrade Smithing Templates can be found randomly in all Bastion Remnant chests
Every Treasure Room Bastion Remnant will contain 2 Smithing Templates
This change was made for a variety of reasons:
Increase the time players utilize Diamond equipment before Netherite
Make Netherite equipment more significant achievement in the game's progression
Adapt Netherite more naturally into the new Smithing Table crafting system
Armor Trims
You can now visually customize your armor with a variety of unique trims at the Smithing Table
Armor trims are purely visual with no gameplay benefits
Armor trims can be applied to Helmets, Chestplates, Leggings and Boots
All trim patterns are visually the same on an armor's item icon, but the color will still change based on the trim material
To check which trim pattern a piece of armor has, you can hover over it in the inventory
Armor Trim Smithing Templates can be found all throughout the world, and each of the following structures contain their own unique Smithing Templates:
Trail Ruins: Wayfinder, Raiser, Shaper, and Host Armor Trims
Pillager Outpost: Sentry Armor Trim
Desert Pyramid: Dune Armor Trim
Shipwreck: Coast Armor Trim
Jungle Temple: Wild Armor Trim
Ocean Monument: Tide Armor Trim
Ancient City: Ward and Silence Armor Trims
Woodland Mansion: Vex Armor Trim
Nether Fortress: Rib Armor Trim
Bastion Remnant: Snout Armor Trim
Stronghold: Eye Armor Trim
End City: Spire Armor Trim
Smithing Templates are found in chests in their respective structure
Trail Ruins have no chests, Smithing Templates are instead found by brushing Suspicious Gravel
The Ocean Monument has no chests, Elder Guardians sometimes instead drop a Smithing Template upon death
Some Armor Trim Smithing Templates are rarer than others, so be on the lookout for them to impress your friends!
An armor trim has two properties: a pattern and a material
The pattern is defined by the Smithing Template used to apply the trim, and represents the visual pattern of the trim
The material is defined by which ingredient you used to apply the trim, and controls the color of the trim
The viable ingredients you can use to define the color of your armor trim are the following:
Added a new Cherry Grove biome, with pretty cherry blossom trees
The biome can be found in the mountains, in similar places as Meadows
Added a new Cherry wood set, with all the corresponding wooden things you can craft from it
Pink particles fall from beneath Cherry Leaves
Added a new Pink Petals block with lots of pink flowers on the ground
Each Pink Petal block can contain up to 4 petals
Using Bone Meal on it increases the number of petals
Placing a Pink Petal into an already placed block increases the number of petals
Drops the number of petals in the block when mined
Bamboo Wood Set
Added a new Bamboo wood set, with all the corresponding wooden things you can craft from it
Block of Bamboo can be crafted from 9 Bamboo and can be stripped like other wood logs
Bamboo Planks crafted from Block of Bamboo yield only 2 planks compared to 4 for wood logs
Added a new "Mosaic" plank variant that is unique to Bamboo called the Bamboo Mosaic
It can be crafted with 1x2 Bamboo Slabs in a vertical strip
You can craft Stair and Slab variants of Bamboo Mosaic
Bamboo Mosaic blocks cannot be used as a crafting ingredient where other wooden blocks are used, but they can be used as fuel
Added a unique Bamboo Raft and Bamboo Chest Raft which can be crafted like normal boats, but with Bamboo Planks
They function the same as ordinary boats, but have a unique look to them
Chiseled Bookshelf
A new, chiseled variation of the Bookshelf
Crafted with 6 planks and 3 wooden slabs
Can store Books, Book and Quills, Written Books, Enchanted Books, and Knowledge Books
Holds up to 6 books
These can be added or removed from any slot by targeting the specific slot
The Comparator signal strength corresponds to the number of the last book that was inserted or removed
The numbering of book slots starts from 1 at the top-left, and increments from left-to-right
Works with Hoppers
Hanging Signs
Hanging Signs are a more expensive version of normal Signs
Crafted with 2 chains and 6 stripped logs of your preferred wood type
Crafting results in 6 Hanging Signs
Can be hung up in the following ways:
Underneath a block that can provide support in the center, like a full block or a fence
Attached to the solid side of a block
Attached to the side or underneath another Hanging Sign
Unlike normal Signs, they cannot be placed directly on the ground without support from the side or above
However, Hanging Signs that have a horizontal bar will not pop when the supporting block is removed
Signs
The following changes have been made for both Signs and Hanging Signs.
Sign text can now be edited after being placed in the world
This can be done by interacting with the Sign
Signs with non-text chat components can not be edited
Both sides of the Sign can now have separate text and colors, allowing for further customization options
By default, a Sign will prompt you to input the front side's text when placed
To apply text to the back-side, you must walk to the other side and interact with that face to edit it
Signs can now also be waxed with Honeycomb, preventing any further edits to its text
Opening the sign edit screen in singleplayer no longer pauses the game
Calibrated Sculk Sensors
A new variant of Sculk Sensors that allows you to filter vibrations based on their frequency level
They are not found naturally and can only be crafted with 1 Sculk Sensor and 3 Amethyst Shards in the Crafting Table
One side of the Calibrated Sculk Sensor can receive a redstone signal as input
The strength of that redstone signal is the only vibration frequency the Sculk Sensor will listen to
They have a combined active and cooldown phase that lasts 20 game ticks
They output their redstone signal for the first 10 game ticks
They can detect vibrations up to 16 blocks away
Vibration Resonance
Blocks of Amethyst have a new behavior when placed adjacent to Sculk Sensors
If that Sculk Sensor receives a vibration, the Block of Amethyst will re-emit its frequency as a separate vibration at its location
This behavior is called Vibration Resonance, and allows players to move vibration frequencies across long distances without having to recreate the vibration naturally
Playable Mob Sounds
When placing a Mob Head on a Note Block, that Note Block will now play one of the ambient sounds of that mob when played by a player or powered by Redstone
Mob Heads can be placed on top of Note Blocks without sneaking
Piglin Mob Head
Piglins will now drop their heads when killed by a charged Creeper
Placing the Piglin head on a Note Block will play one of the Piglin's ambient sounds
The Piglin head will flap its ears when powered by Redstone, or when worn by a player while walking
New Music
Added the following new music tracks by Aaron Cherof to Cherry Groves, Desert, Jungle, Badlands, and Flower Forest biomes:
A Familiar Room
Bromeliad
Crescent Dunes
Echo in the Wind
Added a new music disc with the track "Relic" by Aaron Cherof, found in Trail Ruins
Windows Aarch64/ARM64 support
Minecraft Java Edition is now fully supported on Windows devices using an Aarch64/ARM64 architecture, such as the Windows Surface Pro X
Advancements
New Husbandry Advancements
Smells Interesting : Obtain a Sniffer Egg
Little Sniffs : Feed a Snifflet (requires Smells interesting)
Planting the Past : Plant any Sniffer seed (requires Little sniffs)
New Adventure Advancements
Respecting the Remnants : Brush a Suspicious block to obtain a Pottery Sherd
Careful Restoration : Make a Decorated Pot out of 4 Pottery Sherds (requires Respecting the Remnants)
Crafting a New Look : Craft a trimmed armor at a Smithing Table
Smithing with Style : Apply these Trim Smithing Templates at least once: Spire, Snout, Rib, Ward, Silence, Vex, Tide, Wayfinder (requires Crafting a New Look)
The Power of Books : Read the power signal of a Chiseled Bookshelf using a Comparator
Changes
Changes to Sculk Sensor block behaviors
Vibration frequencies of many actions in the game have been tweaked
Colored Wool, Carpets and Beds can now be dyed to any other color
Replaceable blocks no longer block the connection between enchanting tables and bookshelves
Wither effect particle and Potion of Slow Falling color have been adjusted to make them more distinguishable
Updated step sounds
Updated Advancements
The main menu background is now a Trails & Tales panorama
Updated the Minecraft Java Edition logo
Updated the Minecraft Realms logo
The game's application icon has been updated
This will be a Grass Block in release versions, and a Dirt Block in snapshot versions
GUI can be scaled on the Video Settings screen by holding Ctrl and scrolling the mouse wheel
Updated the credits
Added the ability to scroll upwards by pressing the up arrow key
The game will now display a message box on startup if user enabled text-to-speech functionality, but it is not available
Removed Herobrine
Sculk Changes
If a vibration is scheduled to be received by a Sculk Sensor or Sculk Shrieker, they will stay queued until all adjacent chunks are loaded and ticking
Prevents vibration resonance setups from breaking when unloading their chunks from a distance
Waterlogging a Sculk Shrieker will now silence their shriek sounds
Sculk Sensors' default redstone output has been modified to be more reliable for distance calculations
Sculk Sensors and Calibrated Sculk Sensors now strongly power the block they are placed on
Both types of Sculk Sensors now stay in their Cooldown phase for 10 ticks, with other phase timings being adjusted to compensate
Sculk Sensor Phases
Sculk Sensors and Calibrated Sculk Sensors have three phases: Inactive, Active and Cooldown
The default phase is Inactive
This phase lasts indefinitely until the block receives a vibration
During this phase, the block is able to listen to nearby vibrations until one has been scheduled
When a scheduled vibration is received, the block switches to the Active phase
This phase lasts 30 game ticks for Sculk Sensors, and 10 game ticks for Calibrated Sculk Sensors
During this phase, the block stops listening to nearby vibrations, wiggles its tendrils and emits a redstone signal and light
After the Active phase has finished, the block switches to a Cooldown phase
This phase lasts for 10 game ticks
During this phase, the block keeps wiggling its tendrils, but no longer emits a redstone signal nor light
Finally, once this phase is finished, the block will switch back to the Inactive phase
Previously, some of these phases had different timing values:
Active: 40 game ticks for Sculk Sensors and 20 game ticks for Calibrated Sculk Sensors
Cooldown: 1 game tick for both types of Sculk Sensors
These phase timings were tweaked so that it is less common for activated contraptions to recursively activate the Sculk Sensor that powered them
Vibration Frequencies
In preparation for the Calibrated Sculk Sensor, vibration frequencies have been greatly simplified to prevent unwanted interference. The following are category descriptions for each frequency and the expected events that they correspond to:
Movement in any medium (land, water and air)
Landing on any surface (land or water)
Item interactions
Gliding with an elytra or unique mob actions (Ravager roar, Wolf shaking, etc)
Blocks changing (cauldron water level rising, adding food to campfire, etc.)
Blocks being destroyed
Blocks being placed
Mobs and players teleporting or spawning
Mobs and players dying or an explosion
Step Sounds
Walking on a block will now always play a step sound
It was previously not the case if you were walking along the edge of a block with air or fluid besides it
Walking on the ocean floor will produce a step sound for the block you are walking on at a lower volume and pitch
When walking on Carpets, Snow, Nether Sprouts, Warped Roots, and Crimson Roots, a combination of step sounds will be played
The top-most block you are walking on is played as normal
The block underneath is played at a lower volume and pitch
Advancements
Breeding Camels and Sniffers now count for "The Parrots and the Bats" and are now required for "Two by Two"
Hanging Signs now count for "Glow and Behold"
Visiting a Cherry Grove is now required for "Adventuring Time"
Technical Changes
Improved performance of the light engine
The data pack version is now 15, accounting for sign data format, item display orientation and advancement changes
Removed update_1_20 feature flag and built-in datapack - features are no longer experimental
Added a return command
Tweaked display entity interpolation
Added a capped rule structure processor that limits the number of replaced blocks for a structure piece to a configured maximum
Configuring block entity fields in a rule processor rule is now delegated to a referenced block_entity_modifier instead of the previously fixed output_nbt configuration
Random sequences for loot tables are now deterministic
Added a reference loot table function
Loot table condition/predicate changes:
Renamed alternative to any_of
Added all_of
Advancement trigger changes:
Added recipe_crafted
Changed format of placed_block, item_used_on_block and allay_drop_item_on_block triggers
Ingredients in array form are now also allowed in smithing_trim and smithing_transform recipes on fields template, base and addition
Those fields also allow empty arrays, which signalize that slot needs to be left empty
Added new damage types: outside_border and generic_kill
Game events have changed vibration frequency and some have been removed
The resource pack version is now 15, accounting for the font and credits update
Updated the sprite layout of minecraft.png
Removed the overriding minecraft.png from the Programmer Art resource pack
Updated the sprite layout of invite_icon.png
legacy_unicode glyph provider has been removed
Bitmaps used by uniform font have been removed
uniform font has been updated to use Unifont 15.0.06
That changes shape of multiple characters, while also adding support for new ones
Combining characters no longer include circle overlayed over them (so M◌̆ now renders as M ̆)
Added second level of organization of entries in credits.json on top of titles, called disciplines
Font textures are included in debug texture dump (F3 + S)
Added new font glyph providers: unihex and reference, removed legacy_unicode
Added support for Quick Play
Removed the server & port commandline arguments as their functionality has been replaced by Quick Play
Updates to telemetry
Changed encoding of server.properties to UTF-8
Added validation for symbolic links in world saves
Light Engine
The light engine is responsible for calculating the brightness of each block in the world.
Light is calculated during world generation as well as updated when a block is changed in the world.
Behavior of the light engine has not been changed.
The performance of calculating light has been improved
Reduces one source of lag spikes when crossing chunk borders
Improves FPS in situations when a lot of light updates occur
Improves how quickly chunks can be generated
Commands
return
The return command can be used to control execution flow inside functions and change their return value. Effects:
Remaining separate top-level commands in the currently executing function (if any) are skipped
The result value of the function command that triggered the function is changed from the number of commands executed to value
The result value of the return command is also value
Syntax:
return <value>
Parameters:
value: An integer return value
data
string data sources now accept negative boundaries, which are interpreted as index counted from the end of the string
Display Entity
Interpolation Changes
Previous values are always discarded if interpolation_duration is 0
Made sure that render properties are applied at the same time (so block_state is applied at the same time as transformation, i.e. at the next tick after receiving an update)
Display entities are not rendered until their initial data is received. That means display entities might not be shown on the first tick.
Note: due to how the game handles updates, changes to entities made after summoning might be delivered to clients within a later tick
Rendering Changes
item_display items have been rotated 180 degrees around the Y axis to better match the transformation that is applied when rendering items on an Armor Stand head and in Item Frames
For reference, the order of transformations applied to model (starting from innermost) is item_transform, rotate Y 180, transformation field, entity orientation (billboard option + Rotation field + Pos field)
Structure post-processors
Capped post-processor
A capped post-processor has been added which can limit how many blocks a delegated post-processor randomly transform in a structure
This can be used to configure a structure piece to have an exact amount of specific blocks, instead of using random distribution
The capped post-processor has following required parameters:
delegate A post-processor which performs the actual block transformation
limit Maximum amount of blocks that the delegated post-processor can transform
The blocks inside a structure are all randomly passed to the delegated post-processor until it has transformed the limited amount
Either constant or random number generator sampled during post-processing
Rule post-processor block entity configuration
Previously a rule could specify an optional fixed output_nbt which would be added to the processed output block entity
This field has now been changed to reference a block_entity_modifier
Existing block_entity_modifier's are:
passthrough Retains existing fields on the block entity
This is the default if no block_entity_modifier is specified
append_static Similar to previous output_nbt this provides fixed fields to add to the block entity
A minor change is that this modifier appends configured fields to the processed block instead of replacing existing fields
clear Removes any existing fields on the block entity
append_loot Appends a loot table and seed to the block entity through required parameter:
loot_table Referenced loot table to add to block entity as LootTable field
Field LootTableSeed is also added to the block entity using random seeded by block position
Loot Tables
Random Sequences
The game now uses named random sequences to deterministically produce loot for loot tables. Each random sequence produces a unique sequence based on the world seed and sequence ID, which means a loot table will produce the same results when ran with the same parameters in the same world.
The ID of the random sequence to use for a loot table is specified in a new optional field called random_sequence. If no sequence name is given, loot is drawn using a non-deterministic random source.
reference
New function reference allows functions to call sub-functions (similar to reference condition).
Fields:
name - location of function to call
any_of/all_of
Loot condition alternative has been renamed to any_of
Added new loot condition all_of that passes only when all sub-conditions pass
Has the same syntax as any_of
Advancements
New Triggers
recipe_crafted
Triggered when crafting a recipe
Conditions:
recipe_id - the resource location of the recipe crafted
ingredients - an array of predicates for the item stacks used in the recipe
A single item stack can only be used to fulfill one predicate
Each predicate needs to be fulfilled to trigger the advancement. This allows for separation between recipes that have same identifier but use different ingredients.
This field is optional. When not provided, or left empty, only the recipe_id will dictate the success of the trigger
Changed Triggers
All fields in placed_block, item_used_on_block and allay_drop_item_on_block have been collapsed into a single location field
The new location is similar to the player field - it is a list of loot conditions/predicates
All conditions in this list must match for a trigger to run
Conditions are evaluated in a new loot context called advancement_location. It has access to:
Player as this entity
Position of the placed block
Block state of the placed/interacted block
Held/used item as "tool"
Migration guide:
Contents of old location field should be migrated to location_check condition
Contents of item field should be migrated to match_tool condition
Contents of block + state fields should be migrated to block_state_property condition
Every line is made of two hexadecimal numbers separated by :
The first value describes a codepoint - it must have 4, 5 or 6 hex digits
The second value describes the glyph as a stream of bits, line by line
When rendering, empty columns on left and right side of glyphs are removed
Custom glyph widths can be set with size_overrides
This provider requires two fields:
hex_file - path to ZIP archive containing one or more *.hex files (files in archive with different extensions are ignored)
size_overrides - list of codepoint ranges that should have width different from auto-detected (based on empty space in glyph). Fields:
from, to - start and end of codepoint range (inclusive)
left, right - integers describing the position of the left-most and right-most columns of the glyph in range
Any bits in columns outside of this range will be discarded
New reference Glyph Provider
New glyph provider that can be used to include providers from other fonts
Providers are guaranteed to be loaded only once, no matter how many times they are included
Provider has one field id, that describes another font to be included in the currently loaded one
Inclusion is performed after all fonts are loaded, so it will include all providers for a given font defined in all datapacks
Removed legacy_unicode Glyph Provider
The legacy_unicode glyph provider has been removed
This functionality has been replaced by the unihex provider
Quick Play
Added support for four new command line arguments that allow the game to be launched directly into a world
quickPlayPath takes a specified path for logging (relative to the run directory)
If a path is provided the following will be logged upon joining a world:
type: is either singleplayer, multiplayer, or realms
identifier: represents the world you want to join
For singleplayer, the folder name of the world
For multiplayer, the IP address of the server
For realms, the Realms ID
port: represents the server port and is only logged for multiplayer
name: The name of the world
gamemode: The gamemode of the world
lastPlayedTime: The time you joined the world
Example:
--quickPlayPath "quickPlay/log.json" will resolve into .minecraft/quickPlay/log.json
quickPlaySingleplayer, quickPlayMultiplayer and quickPlayRealms all take their respective identifier
If one of these arguments is provided, the game will try to launch directly into the given world
Examples:
--quickPlaySingleplayer "New World"
--quickPlayMultiplayer "localhost:25565"
--quickPlayRealms "1234"
Telemetry
All Events
Added new property: launcher_name
This is set based on the minecraft.launcher.brand system property
This will help us troubleshoot game launch related bugs more effectively, as we will be able to see whether the issue originated in the Minecraft launcher or a third-party program
Updated Required Events
world_loaded
Added new property: realms_map_content
When loading into a Realms Map Content world (Minigame), the world_loaded event will receive the name of that map
This is to help us understand how Java Realms players interact with Java Realms adventure or minimap content
New Optional Events
advancement_made
This event is triggered when a player completes an advancement, and allows us to see the advancement ID and the time when the advancement was completed
This helps us as a studio understand player progress and limits, which informs our game design
game_load_times
This event is triggered when the game client is loaded
Includes the time it took for the client to load
This is so that we can work on improving and reducing the time it takes to load the game client
server.properties
File is now read in UTF-8 initially, with previous encoding (ISO 8859-1/Latin 1) as a fallback
File is now written with UTF-8 encoding
Symbolic Link Validation
To improve safety, the game will now detect symbolic links used inside world directory. For a detailed explanation, check our help article.
If the target of a symbolic link is not on the user-configured allow-list, the game will not proceed with loading the world
Note: the world directory itself can still be linked
The list of allowed symbolic link targets is stored in file allowed_symlinks.txt in the client or server top directory
The file consists of entries (one per line) with following formats allowed:
Lines starting with # are comments and are ignored
[type]pattern, where type can be glob, regex or prefix
prefix matches start of path with given pattern (so for /test paths /test, /test/ and /test/foo.txt would match)
regex matches regular expression against whole path
glob uses OS-specific path matching mechanism (for example *.txt would usually match files with txt extension)