--- a/net/minecraft/world/entity/ai/behavior/BehaviorMakeLove.java
+++ b/net/minecraft/world/entity/ai/behavior/BehaviorMakeLove.java
@@ -18,6 +18,11 @@
 import net.minecraft.world.entity.npc.EntityVillager;
 import net.minecraft.world.level.pathfinder.PathEntity;
 
+// CraftBukkit start
+import org.bukkit.craftbukkit.event.CraftEventFactory;
+import org.bukkit.event.entity.CreatureSpawnEvent;
+// CraftBukkit end
+
 public class BehaviorMakeLove extends Behavior<EntityVillager> {
 
     private long birthTimestamp;
@@ -114,11 +119,17 @@
         if (entityvillager2 == null) {
             return Optional.empty();
         } else {
-            entityvillager.setAge(6000);
-            entityvillager1.setAge(6000);
             entityvillager2.setAge(-24000);
             entityvillager2.moveTo(entityvillager.getX(), entityvillager.getY(), entityvillager.getZ(), 0.0F, 0.0F);
-            worldserver.addFreshEntityWithPassengers(entityvillager2);
+            // CraftBukkit start - call EntityBreedEvent
+            if (CraftEventFactory.callEntityBreedEvent(entityvillager2, entityvillager, entityvillager1, null, null, 0).isCancelled()) {
+                return Optional.empty();
+            }
+            // Move age setting down
+            entityvillager.setAge(6000);
+            entityvillager1.setAge(6000);
+            worldserver.addFreshEntityWithPassengers(entityvillager2, CreatureSpawnEvent.SpawnReason.BREEDING);
+            // CraftBukkit end
             worldserver.broadcastEntityEvent(entityvillager2, (byte) 12);
             return Optional.of(entityvillager2);
         }
@@ -127,6 +138,6 @@
     private void giveBedToChild(WorldServer worldserver, EntityVillager entityvillager, BlockPosition blockposition) {
         GlobalPos globalpos = GlobalPos.of(worldserver.dimension(), blockposition);
 
-        entityvillager.getBrain().setMemory(MemoryModuleType.HOME, (Object) globalpos);
+        entityvillager.getBrain().setMemory(MemoryModuleType.HOME, globalpos); // CraftBukkit - decompile error
     }
 }
