Affects Version/s: Minecraft 1.13.1, Minecraft 1.13.2, Minecraft 18w48a, Minecraft 18w48b, Minecraft 18w49a, Minecraft 18w50a, 1.14.4, 19w40a, 1.15.2, 20w06a, 20w07a, 20w11a, 20w13b, 20w14a, 20w15a, 20w16a, 20w17a, 20w18a, 20w19a, 20w20a, 20w20b, 20w21a, 20w22a, 1.16 Pre-release 1, 1.16 Pre-release 2, 1.16 Pre-release 3, 1.16 Pre-release 4, 1.16 Pre-release 5, 1.16 Pre-release 6, 1.16 Pre-release 7, 1.16, 1.16.1, 20w28a, 20w29a, 1.16.2 Pre-release 2, 1.16.2, 1.16.3, 1.16.4
Fix Version/s: None
The setup can be seen in the screenshot. When a sticky piston receives a quick pulse (2 or 3 gameticks) to retract an observer that is facing away from it (so the piston is facing the "observing" side) and then quickly repowered, it doesn't update properly and doesn't extend again.
It turns out that when a sticky piston retracts an active observer and is then immediately repowered, it will not re-extend even though it should. When the observer is replaced by any other block, the piston behaves as expected and does re-extend.
The video ActiveObserverPistonBug1.13.mp4 shows the bug in action. The video ActiveObserverPistonBug1.12.mp4 shows how the piston behaves in 1.12.
Thanks to RedCMD for providing these videos!
In the onPlace(BlockState, Level, BlockPos, BlockState, boolean) method in the ObserverBlock class, the setBlock(BlockPos, BlockState, int) method is called and given the integer value 18. This prevents neighboring blocks from being updated. If instead the value 3 is given, neighboring blocks are updated, fixing this bug along with MC-137127.