--- a/net/minecraft/server/BehaviorMakeLove.java +++ b/net/minecraft/server/BehaviorMakeLove.java @@ -93,6 +93,11 @@ private Optional<EntityVillager> b(WorldServer worldserver, EntityVillager entityvillager, EntityVillager entityvillager1) { EntityVillager entityvillager2 = entityvillager.createChild(worldserver, entityvillager1); + // CraftBukkit start - call EntityBreedEvent + if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityvillager2, entityvillager, entityvillager1, null, null, 0).isCancelled()) { + return Optional.empty(); + } + // CraftBukkit end if (entityvillager2 == null) { return Optional.empty(); @@ -101,7 +106,7 @@ entityvillager1.setAgeRaw(6000); entityvillager2.setAgeRaw(-24000); entityvillager2.setPositionRotation(entityvillager.locX(), entityvillager.locY(), entityvillager.locZ(), 0.0F, 0.0F); - worldserver.addAllEntities(entityvillager2); + worldserver.addAllEntities(entityvillager2, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason worldserver.broadcastEntityEffect(entityvillager2, (byte) 12); return Optional.of(entityvillager2); } @@ -110,6 +115,6 @@ private void a(WorldServer worldserver, EntityVillager entityvillager, BlockPosition blockposition) { GlobalPos globalpos = GlobalPos.create(worldserver.getDimensionKey(), blockposition); - entityvillager.getBehaviorController().setMemory(MemoryModuleType.HOME, (Object) globalpos); + entityvillager.getBehaviorController().setMemory(MemoryModuleType.HOME, globalpos); // CraftBukkit - decompile error } }