--- a/net/minecraft/world/level/block/FrogspawnBlock.java
+++ b/net/minecraft/world/level/block/FrogspawnBlock.java
@@ -71,6 +71,7 @@
 
     @Override
     public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) {
+        if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.v1_20_R2.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper
         if (entity.getType().equals(EntityType.FALLING_BLOCK)) {
             this.destroyBlock(world, pos);
         }
@@ -84,6 +85,11 @@
     }
 
     private void hatchFrogspawn(ServerLevel world, BlockPos pos, RandomSource random) {
+        // Paper start - Call BlockFadeEvent
+        if (org.bukkit.craftbukkit.v1_20_R2.event.CraftEventFactory.callBlockFadeEvent(world, pos, Blocks.AIR.defaultBlockState()).isCancelled()) {
+            return;
+        }
+        // Paper end
         this.destroyBlock(world, pos);
         world.playSound((Player)null, pos, SoundEvents.FROGSPAWN_HATCH, SoundSource.BLOCKS, 1.0F, 1.0F);
         this.spawnTadpoles(world, pos, random);
@@ -104,7 +110,7 @@
                 int k = random.nextInt(1, 361);
                 tadpole.moveTo(d, (double)pos.getY() - 0.5D, e, (float)k, 0.0F);
                 tadpole.setPersistenceRequired();
-                world.addFreshEntity(tadpole);
+                world.addFreshEntity(tadpole, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.EGG); // Paper
             }
         }
 
