--- a/net/minecraft/world/level/block/BuddingAmethystBlock.java
+++ b/net/minecraft/world/level/block/BuddingAmethystBlock.java
@@ -9,6 +9,7 @@
 import net.minecraft.world.level.material.Fluids;
 
 public class BuddingAmethystBlock extends AmethystBlock {
+
     public static final int GROWTH_CHANCE = 5;
     private static final Direction[] DIRECTIONS = Direction.values();
 
@@ -19,23 +20,31 @@
     @Override
     public void randomTick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) {
         if (random.nextInt(5) == 0) {
-            Direction direction = DIRECTIONS[random.nextInt(DIRECTIONS.length)];
-            BlockPos blockPos = pos.relative(direction);
-            BlockState blockState = world.getBlockState(blockPos);
+            Direction enumdirection = BuddingAmethystBlock.DIRECTIONS[random.nextInt(BuddingAmethystBlock.DIRECTIONS.length)];
+            BlockPos blockposition1 = pos.relative(enumdirection);
+            BlockState iblockdata1 = world.getBlockState(blockposition1);
             Block block = null;
-            if (canClusterGrowAtState(blockState)) {
+
+            if (BuddingAmethystBlock.canClusterGrowAtState(iblockdata1)) {
                 block = Blocks.SMALL_AMETHYST_BUD;
-            } else if (blockState.is(Blocks.SMALL_AMETHYST_BUD) && blockState.getValue(AmethystClusterBlock.FACING) == direction) {
+            } else if (iblockdata1.is(Blocks.SMALL_AMETHYST_BUD) && iblockdata1.getValue(AmethystClusterBlock.FACING) == enumdirection) {
                 block = Blocks.MEDIUM_AMETHYST_BUD;
-            } else if (blockState.is(Blocks.MEDIUM_AMETHYST_BUD) && blockState.getValue(AmethystClusterBlock.FACING) == direction) {
+            } else if (iblockdata1.is(Blocks.MEDIUM_AMETHYST_BUD) && iblockdata1.getValue(AmethystClusterBlock.FACING) == enumdirection) {
                 block = Blocks.LARGE_AMETHYST_BUD;
-            } else if (blockState.is(Blocks.LARGE_AMETHYST_BUD) && blockState.getValue(AmethystClusterBlock.FACING) == direction) {
+            } else if (iblockdata1.is(Blocks.LARGE_AMETHYST_BUD) && iblockdata1.getValue(AmethystClusterBlock.FACING) == enumdirection) {
                 block = Blocks.AMETHYST_CLUSTER;
             }
 
             if (block != null) {
-                BlockState blockState2 = block.defaultBlockState().setValue(AmethystClusterBlock.FACING, direction).setValue(AmethystClusterBlock.WATERLOGGED, Boolean.valueOf(blockState.getFluidState().getType() == Fluids.WATER));
-                world.setBlockAndUpdate(blockPos, blockState2);
+                BlockState iblockdata2 = (BlockState) ((BlockState) block.defaultBlockState().setValue(AmethystClusterBlock.FACING, enumdirection)).setValue(AmethystClusterBlock.WATERLOGGED, iblockdata1.getFluidState().getType() == Fluids.WATER);
+
+                // Paper Start - Have Amethyst throw both spread and grow events
+                if (block == Blocks.SMALL_AMETHYST_BUD) {
+                org.bukkit.craftbukkit.v1_20_R2.event.CraftEventFactory.handleBlockSpreadEvent(world, pos, blockposition1, iblockdata2); // CraftBukkit
+                } else {
+                    org.bukkit.craftbukkit.v1_20_R2.event.CraftEventFactory.handleBlockGrowEvent(world, blockposition1, iblockdata2);
+                }
+                // Paper end
             }
 
         }
