The bug
If a player breaks an armor stand, cushion, painting, or item frame near a sculk catalyst, the game treats it as though the player was the entity that died. The catalyst blooms and spreads sculk in proportion to the player’s experience points, and the player is flagged to no longer drop experience on death, or interact with future catalysts. This state does not persist relog, however, so you can farm infinite sculk by simply placing and breaking cushions, then relogging.
How to reproduce
/xp add @s 100 levelsPlace a sculk catalyst
Place a cushion
Break it
Expected result
Nothing should happen
Observed result
The sculk catalyst blooms and spreads
Code analysis
In 26.3-snapshot-8, a small refactor to kill handling was performed, and ArmorStand.kill and BlockAttachedEntity.kill were given logic to pass the responsible entity to Entity.gameEvent instead of the dying entity. This is incorrect. As a result, SculkCatalystBlockEntity.handleGameEvent receives the player in sourceEntity and consumes its experience, instead of receiving the armor stand or cushion and correctly stopping.
can confirm, it affects item frames too