Tis

Minecraft 1.19 Experimental Snapshot 1

Here we go… the first snapshot for 1.19 is out! It is an experimental snapshot, you must download it from the changelog.

New Blocks

  • Sculk - 0.6 hardness and blast resistance, drops 1 experience
  • Sculk Vein - 0.2 hardness and blast resistance
  • Sculk Catalyst - 3 hardness and blast resistance, drops 20 experience
  • Sculk Shrieker - 3 hardness and blast resistance
  • Reinforced Deepslate - 55 hardness, 1200 blast resistance (strong enough to make a wither cage)

Reinforced deepslate is immune to dragon damage.

Sculk Shrieker

Every player has a warningCount from 0 to 3 representing how many times a sculk shrieker has been activated. The warning level increases once every time a shrieker is activated, and decreases every 10 minutes.

When a shrieker shrieks, all players within 40 blocks will get the darkness effect for 13 seconds.

Shriekers have a 10 second cooldown per player, and will not shriek if a warden intersects a 48×48×48 bounding box centered on the shrieker.

Warden Spawning

If a shrieker is activated when a player’s warning level is at 3, then it will try to spawn a warden after 4.5 seconds. Wardens require a a light level of 11 or lower to spawn. Warden spawning uses the same code as iron golem spawning with some changes. Up to 20 attempts are made to spawn a warden within a 11×13×11 box centered on the shrieker. In each attempt, a random y column is picked, then the topmost viable spawning block (an air block with a solid-blocking block underneath with a solid top surface). Water and lava can also be selected as a viable spawning block, but wardens cannot spawn in liquids, so the attempt will fail every time. Wardens can partially spawn inside some non-solid blocks such as slabs, fences, and carpets.

Sculk Catalyst Mechanics

Sculk catalysts listen for the entity_dying game event within a radius of 8 blocks. If the entity is a LivingEntity (includes players and all mobs, including undead mobs), then a charge is created at the mob’s death location with the XP it would have dropped from a player kill.

If the XP that would have dropped is 1000 or less, then a charge is created with that much XP. Otherwise, charges are created in batches of 1000 until the XP remaining is 1000 or less, then the one remaining charge is created.

Each catalyst can have up to 32 active charges at once. If more mobs die, the XP will be consumed without creating any more charges.

Every tick, each sculk charge is updated (as long as the charge is scheduled to be updated), then all charges on the same block are merged.

Charge Updating

Each charge is updated every 2 ticks. If the charge drops to 0, the charge is removed.

First, the charge tries to spread sculk veins, then it tries to spread sculk, then it tries to move to a new location.

Vein Spreading

If the entity has just died (this update is the first update since the charge was created) and the block at the charge’s current position is not a sculk or vein block, then a vein spreads on the block at the current position.

If the current position is an air or water source, then veins are placed at the current location with no spreading.

Otherwise, veins spread outwards in potentially all directions.

Sculk veins cannot replace or spread to sculk blocks, sculk catalysts, lava, flowing water, or block 36 (moving piston). In addition, the block material must be replaceable, similar to glow lichen. The exact materials as mentioned in code are:

AIR
STRUCTURAL_AIR
REPLACEABLE_PLANT
REPLACEABLE_FIREPROOF_PLANT
REPLACEABLE_WATER_PLANT
WATER
BUBBLE_COLUMN
LAVA
TOP_SNOW
FIRE

Sculk Spreading

If the current position is not a sculk or vein block, and the charge was updated two times, then the charge is removed.

Placing Sensors and Shriekers

Sensors and shriekers can be placed when

  • the current position is a sculk block
  • the current position is more than 4 blocks away from the catalyst
  • the block above the current position is air, or a water source block
  • there are less than 2 sculk sensors or shriekers between (-4, 0, -4) and (4, 2, 4) in relative coordiantes to the block (or within a 9x3x9 bounding box).

When these conditions are met, there is a 10% chance to move onto the next step. Then, the charge must be greater than a random number from 0 to 9. Then, there is a 90% chance to place a sculk sensor or a 10% chance to place a sculk shrieker.

If the 10% check passes, the game will deduct 10 charge, regardless of whether the block was actually placed.

Placing Sculk

If the block at the current position is a vein block, then the game will try to spread sculk blocks, trying random directions until moving 1 block in that block is a valid sculk location. If a sculk block was placed, the charge decreases by 1, otherwise there is a 10% chance for the charge to cut in half (rounding down).

Sculk can only replace blocks in the #sculk_replaceable tag. The full list is:

stone
granite
diorite
andesite
tuff
deepslate
dirt
grass_block
podzol
coarse_dirt
mycelium
rooted_dirt
moss_block
terracotta
(all colored terracotta)
crimson_nylium
warped_nylium
netherrack
basalt
blackstone
sand
red_sand
gravel
soul_sand
soul_soil
calcite
smooth_basalt
clay
dripstone_block
end_stone
red_sandstone
sandstone

Charge Decay

If the block at the current position is a sculk block, then if either,

  • the charge is within 4 blocks of the catalyst
  • there are 2 sculk sensors or shriekers between (-4, 0, -4) and (4, 2, 4) in relative coordiantes to the block (or within a 9x3x9 bounding box)

then there is a 2% chance to decay the charge. If the charge is within 4 blocks of the catalyst, then the charge decreases by 1. Otherwise, the charge is reduced by the decay penalty formula below:

d = distance from catalyst, c = charge, max(1, floor(c/2 * min(1, (d - 4)^2 / 400)))

When the distance is 24 or greater, then the decay formula will cut the charge in half (rounding down) if the charge is greater than 1, or set it to 0 otherwise.

Movement

Charges move across sculk and sculk veins in a random manner, similar to a random walk.

When the charge moves one step, it can move 1 block in any of the 6 directions, then optionally 1 block in any of the 4 perpendicular directions (for example, if the first movement is in the east or west direction, the second movement can be in the up, down, north, or south direction). There are 18 different ways (or offsets from the starting block) to move using this system.

The game shuffles the 18 possible movement offsets and moves along each one as long as the destination block is a sculk or vein block. If the destination block is a vein block, and one of the blocks the vein block is placed on can be replaced with sculk, the charge stops moving.

Sculk cannot travel through solid, sturdy block faces. This means you can create sculk “wires” as shown

https://twitter.com/ffoundg/status/1495599450185740290

Thanks to @ffoundg on Twitter for the visual explanation.

Charge Merging

Merges happen on every tick.

Two charges in the same location will merge into one if their sum is 1000 or less. If the two charges have different update delay timers, the lower one is used.

Swift Sneak

Every swift sneak level adds 15% to the crouching speed, capping at 100%.

Enchantment level % of walking speed
No Swift Sneak 30%
Swfit Sneak I 45%
Swift Sneak II 60%
Swift Sneak III 75%
Swift Sneak IV 90%
Swift Sneak V+ 100%

Note that level IV and greater is only accessible through commands.

Deep Dark

Dungeons with spawners still generate in the deep dark.

The deep dark’s temperature is 0.8 and downfall is 0.4.

The music.overworld.deep_dark sound is registered in the code, but cannot be played and does not show up in-game.

Ancient City

Chests use the chests/ancient_city.json loot table.

The structure files are in this folder structure:

  • city
    • entrance
      • bottom_piece.nbt
      • top_piece.nbt
  • city_center
    • walls
      • bottom.nbt
      • bottom_left_corner.nbt
      • bottom_right_corner.nbt
      • left.nbt
      • right.nbt
      • top.nbt
      • top_left_corner.nbt
      • top_right_corner.nbt
    • city_center.nbt
  • structures
    • barracks.nbt
    • chamber_1.nbt
    • chamber_2.nbt
    • chamber_3.nbt
    • large_pillar_1.nbt
    • large_ruin_1.nbt
    • medium_pillar_1.nbt
    • medium_ruin_1.nbt
    • medium_ruin_2.nbt
    • sauna_1.nbt
    • small_portal_statue.nbt
    • small_ruin_1.nbt
    • small_ruin_2.nbt
  • walls
    • intact_corner_wall_1.nbt
    • intact_horizontal_wall_1.nbt
    • intact_horizontal_wall_2.nbt
    • intact_horizontal_wall_stairs_1.nbt
    • intact_horizontal_wall_stairs_2.nbt
    • intact_horizontal_wall_stairs_3.nbt
    • intact_intersection_wall_1.nbt
    • intact_lshape_wall_1.nbt

Ancient city structures can replace blocks in the #ancient_city_replaceables tag, which contains deepslate blocks and gray wool.

When the game tries to place an ancient city, the game rolls for a 60% chance of success.

The max jigsaw piece size for ancient cities is 128.

The Warden

The Warden has 500 health and does 16 damage on easy, 30 on normal, and 45 on hard!

The warden has 1.25 knockback resistance, or full knockback immunity.

Action Speed Modifier Movement Speed
Idling 50% 0.15
Investigating 70% 0.21
Default 100% 0.30
Attacking (out of reach) 120% 0.36

The warden’s sound effects, pitch, and heart rate change based on the anger level.

When the warden is trying to attack the player, it has 100% movement speed if it is within melee range, and 120% movement speed otherwise.

The warden cannot ride any entity.

Spawning

The emerging animation lasts for 134 ticks (6.7 seconds), and the digging animation lasts for 110 ticks (5.5 seconds). During that time, the warden is completely invulnerable, even to /kill, and cannot listen to vibrations.

Darkness

The warden gives 30 seconds of darkness to all players within a 20 block radius every 6 seconds.

Idling

While the warden is idling, there is a 2/3 chance for it to randomly stroll to a location a maximum of 10 away horizontally and 7 away vertically. The other 1/3 chance is to do nothing for 1.5 to 3 seconds.

Vibrations

Wardens can detect vibrations in a 16 block radius.

The warden listens to game events in the #warden_events_can_listen tag, which contains all sculk sensor events plus sculk sensor and shrieker activation. There is a 2 second cooldown between detecting vibrations.

Vibrations from creative/spectator mode players, dying entities, armor stands, and other wardens are ignored.

Anger

The warden keeps track of how suspicious or angry it is at each entity. If a warden notices a vibration, it will add 35 anger for players, 10 for snowballs, and 20 for everything else, up to a maximum of 150.

If the warden receives two projectile vibrations within 5 seconds of one another, it will grow angrier with the shooter (same rate as above), regardless of whether the shooter is making any vibrations themselves.

If the warden collides with a player, it will grow angrier towards that player (also same rate as above), though this is only checked once per second.

Anger level Anger values
Calm 0-39
Agitated 40-79
Angry 80-150

As long as the warden is not roaring and has no target, anger decrements by 1 every 3 seconds. Anger clears when the entity dies or switches to creative or spectator mode.

The warden will attack entities with anger levels 80 or above. Beware that the warden will immediately attack any entities that hurt it, regardless of anger level.

Roaring

When the warden reaches 80 anger, it will roar at the entity that angered it. The roaring animation lasts for 84 ticks (4.2 seconds).

Sniffing

If it has been 5 seconds since the warden was last disturbed, it will sniff around to find players. The sniffing animation lasts for 68 ticks (3.4 seconds). At the end of the animation, the warden will increase its anger towards all players within a 6 block radius (same levels as detecting vibrations). Sniffing has a 6 second cooldown.

Attacking

The warden’s attack animation lasts 15 ticks and has an 18 tick cooldown (the count begins at the start of the attack). The attack does no knockback.

Particles

New particles:

sculk_soul
sculk_charge
sculk_charge_pop
shriek

sculk_charge is not usable in commands.

shriek has one parameter for the delay in ticks.

Block Tags

New block tags:

#ancient_city_replaceables
#deepslate_blocks
#sculk_replaceable
#sculk_replaceable_worldgen
#skip_occlude_vibration_when_above

Other Changes

If any block in the #occludes_vibration_signals tag (wool by default) is placed on top of any block in the #skip_occlude_vibration_when_above tag (sculk block by default), then the vibration will trigger anyways.

The sculk sensor will activate if stepped on by any entity other than the warden.

Players now trigger the entity_dying game event on death.

Edits

Feb 18 2022

  • Fixed typos and formatting issues
  • In “Placing Sensors and Shriekers”, block above must be air or water source (it was inverted before)

Feb 19 2022

  • Added blocks sculk can replace

Feb 20 2022

  • Added sculk shrieker mechanics

Feb 21 2022

  • Added more warden spawning details
  • Added swift sneak info

Feb 22 2022

  • Added shrieker activation delay
  • Added warden info

Feb 23 2022

  • Added deep dark, ancient city, particles, block tags, and other info
  • Added image explaining sculk wires
  • Correction in charge decay section