--- a/net/minecraft/world/level/block/ChangeOverTimeBlock.java
+++ b/net/minecraft/world/level/block/ChangeOverTimeBlock.java
@@ -16,7 +_,7 @@
     default void changeOverTime(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) {
         float f = 0.05688889F;
         if (random.nextFloat() < 0.05688889F) {
-            this.getNextState(state, level, pos, random).ifPresent(blockState -> level.setBlockAndUpdate(pos, blockState));
+            this.getNextState(state, level, pos, random).ifPresent(blockState -> org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(level, pos, blockState, 3)); // CraftBukkit
         }
     }
 
