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