--- a/net/minecraft/world/entity/ai/behavior/ResetProfession.java
+++ b/net/minecraft/world/entity/ai/behavior/ResetProfession.java
@@ -8,20 +8,33 @@
 import net.minecraft.world.entity.npc.VillagerData;
 import net.minecraft.world.entity.npc.VillagerProfession;
 
+// CraftBukkit start
+import org.bukkit.craftbukkit.v1_19_R1.entity.CraftVillager;
+import org.bukkit.craftbukkit.v1_19_R1.event.CraftEventFactory;
+import org.bukkit.event.entity.VillagerCareerChangeEvent;
+// CraftBukkit end
+
 public class ResetProfession extends Behavior<Villager> {
+
     public ResetProfession() {
         super(ImmutableMap.of(MemoryModuleType.JOB_SITE, MemoryStatus.VALUE_ABSENT));
     }
 
-    @Override
     protected boolean checkExtraStartConditions(ServerLevel world, Villager entity) {
-        VillagerData villagerData = entity.getVillagerData();
-        return villagerData.getProfession() != VillagerProfession.NONE && villagerData.getProfession() != VillagerProfession.NITWIT && entity.getVillagerXp() == 0 && villagerData.getLevel() <= 1;
+        VillagerData villagerdata = entity.getVillagerData();
+
+        return villagerdata.getProfession() != VillagerProfession.NONE && villagerdata.getProfession() != VillagerProfession.NITWIT && entity.getVillagerXp() == 0 && villagerdata.getLevel() <= 1;
     }
 
-    @Override
     protected void start(ServerLevel world, Villager entity, long time) {
-        entity.setVillagerData(entity.getVillagerData().setProfession(VillagerProfession.NONE));
+        // CraftBukkit start
+        VillagerCareerChangeEvent event = CraftEventFactory.callVillagerCareerChangeEvent(entity, CraftVillager.nmsToBukkitProfession(VillagerProfession.NONE), VillagerCareerChangeEvent.ChangeReason.LOSING_JOB);
+        if (event.isCancelled()) {
+            return;
+        }
+
+        entity.setVillagerData(entity.getVillagerData().setProfession(CraftVillager.bukkitToNmsProfession(event.getProfession())));
+        // CraftBukkit end
         entity.refreshBrain(world);
     }
 }
