Java Edition: Caves & Cliffs: Part 2

It's finally here.  Part 2 of Caves & Cliffs is finally out for everyone and this journey is complete.  Everything finally fits together and I can't wait to explore everything as it was intended!  What is your favorite part of this update?  What have you been waiting for the most?

Features

  • Added an “Allow Server Listings” option to opt-out of having your name displayed in server listings
  • Added an Online options screen where you can now find the Realms Notifications option
  • Added new Overworld biomes
  • Added noise caves and aquifers
  • Added world autosave indicator for single-player worlds
  • Axolotls now have their own, separate, mob cap
  • Axolotls now only spawn in Lush Caves when in water that is above Clay Blocks
  • Badlands Mineshafts now generate higher up
  • Buried Treasure Chests may contain a Potion of Water Breathing
  • Changed default brightness to 50
  • Cod, Salmon, Pufferfish, Tropical Fish, Squid, and Dolphins now only spawn in water from height 50 to height 64
  • Frozen Peaks biome
  • Glow Squids now only spawn in water blocks under height 30
  • If it is raining, sleeping will stop the rain and reset the weather cycle (in 1.17 sleeping would always reset the weather cycle)
  • Illagers (Vindicator, Pillager, Evoker) no longer attack baby villagers
  • New music has been added to the game
  • New ore distribution and large ore veins
  • Overworld build and generation limits have been expanded
  • Raised the cloud level from 128 to 192
  • Redesigned how effects look in the inventory screen, to allow them to show even with the recipe book open
  • Removed world types “Caves” and “Floating islands” from the world creation screen
  • Sprinting is no longer reduced to walking when gently brushing your sleeve against a wall
  • Tropical Fish now also spawn in Lush Caves at any height
  • Villages are slightly more spread out
  • World spawn selection algorithm has been reworked, now spawns player according to climate parameters

Advancements

  • Added “Caves & Cliffs” for falling from top to bottom of the Overworld
  • Added “Feels like home” for riding strider on lava for 50 blocks in the Overworld
  • Added “Star Trader” for trading with a villager at the build height limit
  • Added “Sound of Music” for playing music with a jukebox in a Meadow biome

Blocks

  • Enchanting Tables now emit a low amount of light
  • Using Shears on the tip of a Cave Vine, Twisting Vine, Weeping Wine, and Kelp will stop them from further growing
  • Copper Ore now drops 2-5 (from 2-3) Raw Copper items
  • In the Stonecutter, a Block of Copper can be converted to 4 Cut Copper
  • Restricted Big Dripleaf placement to Clay, Grass, Dirt, Farmland, Moss, Rooted Dirt, Podzol, and Mycelium

Effects

  • Your list of effects are now shown to the right of your inventory, instead of the left side
  • When the inventory effects list is visible, it will be hidden from the game view to reduce screen clutter
  • There’s now two modes of seeing the effect list: Compact and Classic
    • Classic is the pre-existing list of effects, one after another
    • Compact is a single icon for each effect, suitable for small screen estate
  • The game will automatically switch between the two modes to suit the available screen estate (including having the recipe book open)

Large Ore Veins

  • Ore Veins are large, rare, snake-like underground ore formations
  • Copper Ore Veins form between heights 0 and 50 and are mixed with Granite
  • Iron Ore Veins form between heights -60 and -8 and are mixed with Tuff

Mob Spawning

  • Monsters now only spawn in places where the light from blocks is 0 (skylight still prevents spawning like before)

Music

  • Added new music by Lena Raine and Kumi Tanioka to the Overworld (when playing in Survival Mode) and the main menu
  • Added a new music disc from Lena Raine titled ‘Otherside’. This can be found rarely in Stronghold Corridor Chests or much more rarely in Dungeon Chests.

New Overworld Biomes

Dripstone Caves

  • Contains plenty of Pointed Dripstone and Dripstone Block on the floors and ceilings, as well as within small pools of water
  • In some places, you’ll find larger stalagmites, stalactites, and columns built from Dripstone Blocks
  • Contains extra Copper Ore
  • Drowned can spawn in aquifers inside Dripstone Caves

Frozen Peaks

  • Smooth mountain peaks with ice and snow
  • Spawns Goats and Yeti. Wait, no, actually it’s just Goats.

Grove

  • Snowy terrain with big Spruce Trees and Powder Snow traps. You might want to wear leather boots!
  • Tends to generate on high-altitude terrain beneath mountain peaks or hilltops
  • Spawns Wolves, Rabbits, and Foxes

Jagged Peaks

  • Dramatic jagged mountain peaks with Snow and Stone blocks
  • Spawns Goats

Lush Caves

  • Moss covers the floors and ceilings
  • Spore Blossoms grow from the ceiling and drip particles
  • Contains Clay pools with Dripleaf plants growing out of them
  • Contains Azalea Bushes and Flowering Azalea Bushes
  • The Azalea Tree loves to have its roots in Lush Caves, so if you find an Azalea Tree (either overground or in a cave) you know there is a Lush Cave beneath you
  • Cave Vines with Glow Berries grow from the ceiling and light up the caves

Meadow

  • Large grassy and flowery biome that tends to generate high up on plateaus or next to large mountain ranges
  • Sometimes contains a lone, tall Oak or Birch Tree with a Bee Nest
  • Think Sound of Music!
  • Spawns Donkeys, Rabbits, and Sheep

Snowy Slopes

  • Very snowy terrain that can hide Powder Snow traps. I hope you kept those leather boots!
  • Tends to generate on high-altitude terrain beneath mountain peaks or hilltops
  • Spawns Rabbits and Goats

New Ore Distribution

  • Changed ore generation to match the new world height, and to add more strategy to mining. There is no longer a single height level that is best for all ores – you need to make tradeoffs!
  • Iron Ore generates below height 72, with a strong bias towards height 16. Iron Ore also generates above 80, with more Iron Ore as you go higher.
  • Copper Ore generates between height 0 and 96, with a strong bias towards height 48. Copper Ore generates in larger amounts in Dripstone Caves Biome.
  • Lapis Lazuli Ore generates below height 64, with a strong bias towards height 0. However, Lapis Lazuli Ore below height -32 or above height 32 cannot generate exposed to air. It will either be buried or inside water.
  • Coal Ore generates above height 0, with a strong bias towards height 96 and above. Coal Ore has reduced air exposure, so you will find more Coal Ore buried or underwater than exposed to air.
  • Gold Ore generates below height 32, with a strong bias towards height -16. Extra Gold Ore generates below height -48. Extra Gold Ore can be found in Badlands biomes above height 32.
  • Redstone Ore generates below height 16. Redstone Ore generation gradually increases as you go below height -32 and further down.
  • Diamond Ore generates below height 16, with more Diamond Ore the lower you go. Diamond Ore has reduced air exposure, so you will find more Diamond Ore buried or underwater than exposed to air.
  • Emerald Ore generates above height -16 in mountainous biomes, with more Emerald Ore the higher you go. Emerald Ore below height 0 is very rare!

Noise Caves and Aquifers

  • Noise caves are a new way of generating caves, providing more natural variety. They can get huge sometimes! Noise caves come in three flavors:
    • Cheese caves: Like the holes in swiss cheese. These often form caverns of various sizes.
    • Spaghetti caves: Long squiggly tunnels, sometimes wide like tagliatelle
    • Noodle caves: Thinner, squigglier, and a more claustrophobic variant of spaghetti caves
  • No, they aren’t loud. The “noise” part of noise caves is a technical term and has nothing to do with sound.
  • The old cave carvers and canyons still generate, combining with the noise caves to form interesting cave systems
  • As with carvers, noise caves form cave entrances where they intersect the surface
  • An aquifer is an area with the local water level, independent of sea level
  • Aquifers are used during world generation to generate bodies of water inside noise caves
  • This sometimes results in large underground lakes
  • They can also form inside mountains and on the surface
  • Aquifers below y0 will sometimes be lava aquifers instead of water aquifers
  • Magma Blocks sometimes generates at the bottom of underground bodies of water
  • Underwater cave carvers and underwater canyons have been removed since aquifers are used to generate water in caves instead

Sprinting

  • Previously, any collision with a block would reduce sprinting to walking. Now, for very minor angles of collision with a block, players retain their sprint. For larger angles of collision, the old behavior is retained.

Upgrading of Old Worlds

  • The transition between new and old terrain is less “cliffy”
    • Will surface height blend? Yes.
    • Will biomes blend? Yes.
    • Will caves blend? Your mileage may vary.
  • In old chunks, if there is any Bedrock at y=0, the sections below non-air blocks will be filled with the new generation
  • The old Bedrock between y=0 and y=4 in old chunks gets replaced with Deepslate
  • A new Bedrock layer is placed at y=-64

World Generation

  • Generation range and build limits have been expanded by 64 blocks up and 64 blocks down, to a total range of 384 blocks
  • Underground features, structures, and caves generate down to y-64
  • Exception: Diorite, Granite, Andesite, and Dirt will not generate below y0
  • Tweaked size and positioning of Diorite, Andesite, and Granite generation
  • Dripstone clusters can no longer be found in normal caves, only in Dripstone Caves biomes
  • Starting from y8 and below, Deepslate gradually replaces all Stone
  • Deepslate blobs no longer generate above y0
  • The terrain shape and elevation varies dramatically, independently from biomes
    • For example, forests and deserts could form up on a hill without needing a special biome just for that
  • Less Diorite, Granite, and Andesite generates above y 60
  • Strips of Gravel can generate on stony shores
  • Swamp trees can grow in water 2 blocks deep (instead of just 1 block deep)
  • Removed water lake features, aquifers provide local water levels
  • A bunch of biome variants with similar features but different shapes have been merged into one since the shape is controlled independently now
  • Renamed some biomes
  • Geodes now only generate up to height 30

Technical

  • Added an accessibility option to stop the sky from flashing during thunderstorms
  • Added fall_from_height and ride_entity_distance advancement triggers
  • Changed nether_travel to match other similar triggers
  • Added an option to specify the audio device used by the game
  • Replaced light and barrier particles with block_marker
  • Replaced the client bound chunk update network packet with another one that additionally contains light update data
    • The separate light update packet still exists and is sent when a light update happens without a chunk update
  • New video setting called “Chunk Builder”
  • Changed the prioritization order of the chunk rendering pipeline
    • Unrendered chunk holes in the world should not appear anymore while flying fast with a high render distance
  • View distance now causes chunks to load cylindrically around players instead of in a square
  • Added “Toggle Sprint” and “Toggle Sneak” to the Controls settings
  • Moved Keybinds out to their own settings screen, accessible from Controls
  • Information about the world generation noise is now displayed on the debug screen
  • Added illageralt, rune-like font from Minecraft Dungeons (currently only usable via commands)
  • Added startup option --jfrProfile and command jfr to start profiling with Java Flight Recorder as well as a few custom events
  • Loot table functions set_contents and set_loot_table now require a type field with a valid block entity type
  • Added new loot table function set_potion
  • The maximum amount of background threads are increased
  • Worlds last saved before Minecraft 1.2 (pre “Anvil”) can no longer be opened directly
  • Data pack format has been increased to 8
  • Resource pack format has been increased to 8
  • --report option in the data generator now creates reference files for the entirety of the worldgen, instead of just the biomes
  • Removed length limits for the scoreboard, score holder, and team names
  • Standalone server.jar now bundles contains individual libraries instead of being a flat archive
  • Size limit for server resource packs has been increased to 250 MB
  • Servers can now set property hide-online-players to true to not send a player list on status requests
  • A new setting called “Simulation Distance”
  • Mob spawners can now override light checks for spawning
  • Added telemetry for world loading

Advancements

Changed Triggers

Nether_Travel

  • entered condition is renamed to start_position
  • exited has been removed since it was identical to player.location

New Triggers

Fall_From_Height

  • Triggered when a player lands after falling
  • Conditions:
    • player - a player for which this trigger runs
    • start_position - a location predicate for the last position before the falling started
    • distance - a predicate for the distance between start_position and the player

Ride_Entity_in_Lava

  • Triggered for every tick when a player rides in lava
  • Conditions
    • player - a player for which this trigger runs
    • start_position - a position where the riding started (first tick on lava)
    • distance - a predicate for the distance between start_position and the player

Chunk Builder Setting

  • This setting determines if chunk sections are updated immediately during a single frame, or asynchronously using threads
  • “Fully Blocking” corresponds to the previous way chunks were updated, which prevents potential visual gaps when blocks are destroyed
  • “Threaded” will significantly reduce stutters when blocks are placed or destroyed (especially with light sources), however brief visual gaps may rarely occur
  • “Semi Blocking” is the middle-option, and will only immediately update chunks that are deemed important, otherwise updates occur asynchronously using threads

JAVA 17

Minecraft now uses Java version 17. If you are using a default setup, the Launcher will download and install the correct version. If you are using a custom Java setup, or a third-party launcher, you will need to ensure that your Java installation is version 17 or above.

JFR Profiling

Custom Events

All events are enabled when starting the profiling using either jfr start command or --jfrProfile startup flag.
If profiling is started through any other means for monitoring purposes, only the ServerTickTimeLoadWorld, and NetworkSummary are included by default.

  • minecraft.ServerTickTime: periodic event (1-second intervals) exposing average server tick times
  • minecraft.NetworkSummary: periodic event (10-second intervals) reporting total packet sizes and counts per connection
  • minecraft.PacketReceived | minecraft.PacketSent: network traffic
  • minecraft.ChunkGeneration: time taken to generate individual chunk stages
  • minecraft.LoadWorld: initial world loading duration

Overview

Java Flight Recorder (https://openjdk.java.net/jeps/328) is the internal JVM profiling tool bundled with the Java Runtime to analyze performance and runtime characteristics.
It’s a useful tool for exposing internal JVM performance metrics as well as custom metrics that can be monitored or analyzed using any stock Java profiler or monitoring agents.

Profiling Lifecycle

A profiling run can be started using any of the following alternatives:
The run will then be stopped either by:

  • --jfrProfile startup flag when starting a Minecraft server or client
  • jfr start in-game command
  • Regular Java CLI tools such as jcmd
  • shutting down the JVM
  • jfr stop in-game command
  • jcmd CLI tool

Reports

A summary JSON report is written both to the log file and in the debug folder accompanied by a .jfr recording ready to be analyzed in i.e JMC https://github.com/openjdk/jmc or any other profiler tool supporting the format.

Loot Tables

Changed Functions

Set_ContentsSet_Loot_Table

Added new mandatory field type. This type will be written into BlockEntityTag.id, to make sure that this tag can be correctly migrated between versions.

New Functions

Set_Potion

  • Sets the Potion tag on any item

Parameters:

  • id - potion id

Maximum Amount of Background Threads Increased

  • Various background tasks including worldgen are executed on a background thread pool
  • The default thread pool size equals the number of available CPU threads, minus one
  • The upper thread pool limit has been raised from 7 to 255, which should help higher-end machines with improved world-gen performance
  • The upper limit can be overridden via the max.bg.threads Java system property, for example when running multiple servers on a single machine

Mob Spawning

  • Monster spawning limits are now per-player, rather than global for each dimension

Old World Conversions

  • Worlds last saved before Minecraft 1.2 (pre “Anvil”) now require conversion in a previous version of the game to be able to be opened
  • We recommend that you upgrade your old version, 1.2 (pre “Anvil”) or older, to version 1.6.4 - worlds opened for the first time in later versions will have incorrect biome information

Particles

Block_Marker

  • Renders with a texture declared in the particle slot for a model assigned to the configured block state
  • Is summoned with the same syntax as the block particle (i.e. block_marker wheat[age=2])

Resource Pack Format

  • minecraft/textures/gui/container/inventory.png now contains an extra sprite for a thin-layout version of the effect list in the inventory

Server Bundling

  • server.jar now bundles individual libraries instead of merging all the files into a single archive
  • This change is meant to solve certain problems related to Java modules
  • On startup, server.jar will unpack libraries into a directory configured by bundlerRepoDir (default: working directory)
  • To run a different main class other than the server, use the bundlerMainClass property (for example java -DbundlerMainClass=net.minecraft.data.Main -jar server.jar --reports) or unpack the jar manually and use the contents of META-INF/classpath-joined for command line
  • If bundlerMainClass is empty, the program will just validate and extract files, and will then exit
  • Server classes are now signed

Simulation Distance Setting

  • A new slider which is available under video settings
  • Entities, blocks, and fluids will not be updated outside of simulation distance
  • Allows higher render distance with less CPU load
  • There’s also a new simulation-distance property in the dedicated server properties

Spawner Data Changes

Example:

SpawnData: {
    entity: {
        id: "minecraft:cow"
    },
    custom_spawn_rules: {
          sky_light_limit: {min_inclusive: 10, max_inclusive: 15}
    },
}
SpawnPotentials: [
  {
    data: {
      custom_spawn_rules: {
          block_light_limit: {min_inclusive: 0, max_inclusive: 15}
      },
      entity: {id: "minecraft:pig"},
    },
    weight: 2
  },
  {
    data: {
      custom_spawn_rules: {
          block_light_limit: {min_inclusive: 5, max_inclusive: 10},
          sky_light_limit: {min_inclusive: 10, max_inclusive: 15}
      },
      entity: {id: "minecraft:panda"}
    },
    weight: 1
  }
]
  • Spawners now support the custom_spawn_rules NBT in the SpawnData field and the SpawnPotentials list
  • custom_spawn_rules currently may contain fields block_light_limit and sky_light_limit - both are integer ranges with fields min_inclusive and max_inclusive
  • To make SpawnPotentials format similar to other weighted lists, structure was changed to {weight: <int>, data: <previous contents without 'Weight', 'Entity' renamed to 'entity'>}
  • To accommodate that change, previous contents of SpawnData were moved to SpawnData.entity (making format of that field same as elements of SpawnPotentials.data)

Telemetry

In this release, we are re-introducing diagnostic tracking, which was part of Minecraft: Java Edition until 2018. We are bringing it back to better understand our players and to improve their experience. Specifically, this information will help us prioritize various aspects of development and identify pain points. All data is treated according to GDPR and CCPA best practices and is used to develop a better-performing and generally more enjoyable Minecraft: Java Edition.

  • At this point, the only implemented event is world load

World Load Event

  • Sent when loading singleplayer world or connecting to multiplayer server
  • Contains the following information:
    • launcher identifier
    • user identitifer (XUID)
    • client session-id (changes on restart)
    • world session-id (changes per world load, to be reused for later events)
    • game version
    • operating system name and version
    • Java runtime version
    • if client or server is modded (same information as on crash logs)
    • server type (single player, Realms, or other)
    • game mode

World Data: Chunk Format

  • Removed chunk’s Level and moved everything it contained up
  • Chunk’s Level.Entities have moved to entities
  • Chunk’s Level.TileEntities has moved to block_entities
  • Chunk’s Level.TileTicks and Level.ToBeTicked have moved to block_ticks
  • Chunk’s Level.LiquidTicks and Level.LiquidsToBeTicked have moved to fluid_ticks
  • Chunk’s Level.Sections have moved to sections
  • Chunk’s Level.Structures have moved to structures
  • Chunk’s Level.Structures.Starts have moved to structures.starts
  • Chunk’s Level.Sections[].BlockStates and Level.Sections[].Palette have moved to a container structure in sections[].block_states
  • Chunk’s Level.Biomes are now paletted and live in a similar container structure in sections[].biomes
  • Chunk’s Level.CarvingMasks[] is now long[] instead of byte[]
  • Added yPos the minimum section y position in the chunk
  • Added below_zero_retrogen containing data to support below zero generation
  • Added blending_data containing data to support blending new world generation with existing chunks

World Generation

  • Bedrock layers now generate dependent on the world seed
  • New random number generator for overworld generation

Fixed Bugs in 1.18

30

Comments

  • To post a comment, please .
Posts Quoted:
Reply
Clear All Quotes