Sculk sensors are not activated upon snow being formed
The Bug:
Sculk sensors are not activated upon snow being formed.
Steps to Reproduce:
- Enter a cold biome and place down a sculk sensor nearby.
- Set to weather to "rain" to make it snow and wait for some snow to form.
- Take note as to whether or not sculk sensors are activated upon snow being formed.
Observed Behavior:
Sculk sensors aren't activated.
Expected Behavior:
Sculk sensors would be activated.
Code Analysis:
Code analysis by [Mod] Avoma can be found below.
The following is based on a decompiled version of Minecraft 1.18.2 using MCP-Reborn.
public class ServerLevel extends Level implements WorldGenLevel { ... public void tickChunk(LevelChunk p_8715_, int p_8716_) { ChunkPos chunkpos = p_8715_.getPos(); boolean flag = this.isRaining(); int i = chunkpos.getMinBlockX(); int j = chunkpos.getMinBlockZ(); ... if (this.random.nextInt(16) == 0) { BlockPos blockpos2 = this.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING, this.getBlockRandomPos(i, 0, j, 15)); ... Biome biome = this.getBiome(blockpos2).value(); ... if (flag) { if (biome.shouldSnow(this, blockpos2)) { this.setBlockAndUpdate(blockpos2, Blocks.SNOW.defaultBlockState()); } ...
If we look at the above class, we can see that snow forming as a result of precipitation simply isn't registered as a game event as the gameEvent() method is never called, thus not detecting this action as a vibration.
Potential Fix:
Simply calling the gameEvent() method where appropriate within this piece of code should resolve this problem. The "BLOCK_PLACE" game event tag would be expected to be used here as snow is being placed into the world.
Linked Issues
Created Issue:
Sculk sensors are not activated upon snow forming
The Bug:
Sculk sensors are not activated upon snow forming.
Steps to Reproduce:
- Enter a cold biome.
- Place a sculk sensor.
- Set to weather to rain to make it snow.
/weather rain→
Notice how when snow forms on the ground, the sculk sensor does not activate.
Additional Information:
Quote from the 20w49a Changelog, "A vibration is anything that causes physical motion". I would definitely consider this as physical motion, as snow is physically forming. Relates to
MC-208760.
relates to
The Bug:
Sculk sensors are not activated upon snow forming.
Steps to Reproduce:
- Enter a cold biome.
- Place a sculk sensor.
- Set to weather to rain to make it snow.
/weather rain→
Notice how when snow forms on the ground, the sculk sensor does not activate.
Additional Information:
Quote from the 20w49a Changelog, "A vibration is anything that causes physical motion". I would definitely consider this as physical motion, as snow is physically forming.
Relates toMC-208760.
The Bug:
Sculk sensors are not activated upon snow form
ing.Steps to Reproduce:
- Enter a cold biome.
- Place a sculk sensor.
- Set to weather to rain to make it snow.
/weather rain→
Notice how when snow forms on the ground, the sculk sensor does not activate.
Additional Information:
Quote from the 20w49a Changelog, "A vibration is anything that causes physical motion". I would definitely consider this as physical motion, as snow is physically forming.
The Bug:
Sculk sensors are not activated upon snow being formed.
Steps to Reproduce:
- Enter a cold biome.
- Place down a sculk sensor nearby.
- Set to weather to rain to make it snow.
- Wait for some snow to form.
- →
Notice how sculk sensors are not activated upon snow being formed.
Sculk sensors are not activated upon snow formingSculk sensors are not activated upon snow being formed
The Bug:
Sculk sensors are not activated upon snow being formed.
Steps to Reproduce:
- Enter a cold biome.
- Place down a sculk sensor nearby.
- Set to weather to rain to make it snow.
- Wait for some snow to form.
- →
Notice how sculk sensors are not activated upon snow being formed.
Expected Behavior:
The expected behavior would be that sculk sensors are activated upon snow being formed.
The Bug:
Sculk sensors are not activated upon snow being formed.
Steps to Reproduce:
- Enter a cold biome.
- Place down a sculk sensor nearby.
- Set to weather to rain to make it snow.
- Wait for some snow to form.
- →
Notice how sculk sensors are not activated upon snow being formed.
Expected Behavior:
The expected behavior would bethat sculk sensors areactivated upon snow being formed.The Bug:
Sculk sensors are not activated upon snow being formed.
Steps to Reproduce:
- Enter a cold biome.
- Place down a sculk sensor nearby.
- Set to weather to rain to make it snow.
- Wait for some snow to form.
Observed Behavior:
Sculk sensors are not activated upon snow being formed.
Expected Behavior:
Sculk sensors would be activated upon snow being formed.
The Bug:
Sculk sensors are not activated upon snow being formed.
Steps to Reproduce:
- Enter a cold biome.
Place down a sculk sensor nearby.- Set to weather to rain to make it snow.
Wait for some snow to form.Observed Behavior:
Sculk sensors are not activated upon snow being formed.
Expected Behavior:
Sculk sensors would be activated upon snow being formed.
The Bug:
Sculk sensors are not activated upon snow being formed.
Steps to Reproduce:
- Enter a cold biome and place down a sculk sensor nearby.
- Set to weather to "rain" to make it snow and wait for some snow to form.
- Take note as to whether or not sculk sensors are activated upon snow being formed.
Observed Behavior:
Sculk sensors are not activated upon snow being formed.
Expected Behavior:
Sculk sensors would be activated upon snow being formed.
The Bug:
Sculk sensors are not activated upon snow being formed.
Steps to Reproduce:
- Enter a cold biome and place down a sculk sensor nearby.
- Set to weather to "rain" to make it snow and wait for some snow to form.
- Take note as to whether or not sculk sensors are activated upon snow being formed.
Observed Behavior:
Sculk sensors are not activated upon snow being formed.
Expected Behavior:
Sculk sensors would be activated upon snow being formed.
Code Analysis:
Code analysis by [Mod] Avoma can be found below.
The following is based on a decompiled version of Minecraft 1.18.2 using MCP-Reborn.
net.minecraft.server.level.ServerLevel.javapublic class ServerLevel extends Level implements WorldGenLevel { ... public void tickChunk(LevelChunk p_8715_, int p_8716_) { ChunkPos chunkpos = p_8715_.getPos(); boolean flag = this.isRaining(); int i = chunkpos.getMinBlockX(); int j = chunkpos.getMinBlockZ(); ... if (this.random.nextInt(16) == 0) { BlockPos blockpos2 = this.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING, this.getBlockRandomPos(i, 0, j, 15)); ... Biome biome = this.getBiome(blockpos2).value(); ... if (flag) { if (biome.shouldSnow(this, blockpos2)) { this.setBlockAndUpdate(blockpos2, Blocks.SNOW.defaultBlockState()); } ...If we look at the above class, we can see that snow forming as a result of precipitation simply isn't registered as a game event as the gameEvent() method is never called, thus not detecting this action as a vibration.
Potential Fix:
Simply calling the gameEvent() method where appropriate within this piece of code should resolve this problem. The "BLOCK_PLACE" game event tag would be expected to be used here as snow is being placed into the world.
The Bug:
Sculk sensors are not activated upon snow being formed.
Steps to Reproduce:
- Enter a cold biome and place down a sculk sensor nearby.
- Set to weather to "rain" to make it snow and wait for some snow to form.
- Take note as to whether or not sculk sensors are activated upon snow being formed.
Observed Behavior:
Sculk sensors are
not activatedupon snow being formed.Expected Behavior:
Sculk sensors would be activated
upon snow being formed.Code Analysis:
Code analysis by [Mod] Avoma can be found below.
The following is based on a decompiled version of Minecraft 1.18.2 using MCP-Reborn.
net.minecraft.server.level.ServerLevel.javapublic class ServerLevel extends Level implements WorldGenLevel { ... public void tickChunk(LevelChunk p_8715_, int p_8716_) { ChunkPos chunkpos = p_8715_.getPos(); boolean flag = this.isRaining(); int i = chunkpos.getMinBlockX(); int j = chunkpos.getMinBlockZ(); ... if (this.random.nextInt(16) == 0) { BlockPos blockpos2 = this.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING, this.getBlockRandomPos(i, 0, j, 15)); ... Biome biome = this.getBiome(blockpos2).value(); ... if (flag) { if (biome.shouldSnow(this, blockpos2)) { this.setBlockAndUpdate(blockpos2, Blocks.SNOW.defaultBlockState()); } ...If we look at the above class, we can see that snow forming as a result of precipitation simply isn't registered as a game event as the gameEvent() method is never called, thus not detecting this action as a vibration.
Potential Fix:
Simply calling the gameEvent() method where appropriate within this piece of code should resolve this problem. The "BLOCK_PLACE" game event tag would be expected to be used here as snow is being placed into the world.
The Bug:
Sculk sensors are not activated upon snow being formed.
Steps to Reproduce:
- Enter a cold biome and place down a sculk sensor nearby.
- Set to weather to "rain" to make it snow and wait for some snow to form.
- Take note as to whether or not sculk sensors are activated upon snow being formed.
Observed Behavior:
Sculk sensors aren't activated.
Expected Behavior:
Sculk sensors would be activated.
Code Analysis:
Code analysis by [Mod] Avoma can be found below.
The following is based on a decompiled version of Minecraft 1.18.2 using MCP-Reborn.
net.minecraft.server.level.ServerLevel.javapublic class ServerLevel extends Level implements WorldGenLevel { ... public void tickChunk(LevelChunk p_8715_, int p_8716_) { ChunkPos chunkpos = p_8715_.getPos(); boolean flag = this.isRaining(); int i = chunkpos.getMinBlockX(); int j = chunkpos.getMinBlockZ(); ... if (this.random.nextInt(16) == 0) { BlockPos blockpos2 = this.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING, this.getBlockRandomPos(i, 0, j, 15)); ... Biome biome = this.getBiome(blockpos2).value(); ... if (flag) { if (biome.shouldSnow(this, blockpos2)) { this.setBlockAndUpdate(blockpos2, Blocks.SNOW.defaultBlockState()); } ...If we look at the above class, we can see that snow forming as a result of precipitation simply isn't registered as a game event as the gameEvent() method is never called, thus not detecting this action as a vibration.
Potential Fix:
Simply calling the gameEvent() method where appropriate within this piece of code should resolve this problem. The "BLOCK_PLACE" game event tag would be expected to be used here as snow is being placed into the world.
Nah, this seems logical now as a block is physically changing. Also relates to MC-211235.
I confirm
Is this still an issue in snapshot 21w05a or later?
This is still an issue in 21w05a. I've updated this ticket accordingly.
Can confirm in 23w03a