The bug
Certain game events are not detected by a sculk sensor if it is sufficiently far away. For example, if a falling block lands within a certain range of a sculk sensor, but breaking and placing blocks, for example, are still detected.
How to reproduce
Create a setup that allows for a falling block to be placed such that the sculk sensor does not detect the placement, but it does detect breaking/placing blocks that happen where the falling block would land
Place your block so that it falls within range of the sculk sensor
After it hits the floor, break the falling block
Expected results
Vibrations would be created when it hits the ground.
Actual results
No vibration is created. When we break the block, vibrations are created, indicating that the block is correctly within range.
Affected events
Placing and breaking armor stands
Spawning a mob using a spawn egg
Falling block being placed
Linked issues
relates to 1
Attachments
Comments 3
This bug is due to the fact that entities have a discrepancy between the original location of the vibration (centred on the bottom of their hitbox) and the floored value that the sculk actually uses for calculations (the centre of the block that the entity is in), unlike blocks which both create a vibration at the centre of the air block they replace, and so flooring that doesn't change anything.
Now within the range of the sculk sensor, the original location position is floored so all vibrations are rounded to the centre of the block they occured in meaning that there is no difference in behaviour between entities and blocks, but if an entity had its original location positioned just outside of the range, e.g. at the bottom of a block 8 blocks away, even though its floored position would've been rounded 'up' into the range of the sculk sensor, this never occurs as the sculk sensor ignores it.
I discuss this in more detail and with diagrams in this updated bug report here: MC-261657
They do detect falling blocks; it seems that the issue here is that the detection range is inconsistent. For example, placing and destroying armor stands at this distance is not detected either, but breaking and placing blocks is.