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,
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
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
- entrance
- 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
- walls
- 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