--- a/net/minecraft/world/entity/ai/behavior/BehaviorProfession.java
+++ b/net/minecraft/world/entity/ai/behavior/BehaviorProfession.java
@@ -6,6 +6,12 @@
 import net.minecraft.world.entity.npc.VillagerData;
 import net.minecraft.world.entity.npc.VillagerProfession;
 
+// CraftBukkit start
+import org.bukkit.craftbukkit.entity.CraftVillager;
+import org.bukkit.craftbukkit.event.CraftEventFactory;
+import org.bukkit.event.entity.VillagerCareerChangeEvent;
+// CraftBukkit end
+
 public class BehaviorProfession {
 
     public BehaviorProfession() {}
@@ -17,7 +23,14 @@
                     VillagerData villagerdata = entityvillager.getVillagerData();
 
                     if (villagerdata.getProfession() != VillagerProfession.NONE && villagerdata.getProfession() != VillagerProfession.NITWIT && entityvillager.getVillagerXp() == 0 && villagerdata.getLevel() <= 1) {
-                        entityvillager.setVillagerData(entityvillager.getVillagerData().setProfession(VillagerProfession.NONE));
+                        // CraftBukkit start
+                        VillagerCareerChangeEvent event = CraftEventFactory.callVillagerCareerChangeEvent(entityvillager, CraftVillager.nmsToBukkitProfession(VillagerProfession.NONE), VillagerCareerChangeEvent.ChangeReason.LOSING_JOB);
+                        if (event.isCancelled()) {
+                            return false;
+                        }
+
+                        entityvillager.setVillagerData(entityvillager.getVillagerData().setProfession(CraftVillager.bukkitToNmsProfession(event.getProfession())));
+                        // CraftBukkit end
                         entityvillager.refreshBrain(worldserver);
                         return true;
                     } else {
