--- a/net/minecraft/server/BehaviorCareer.java +++ b/net/minecraft/server/BehaviorCareer.java @@ -1,6 +1,11 @@ package net.minecraft.server; import com.google.common.collect.ImmutableMap; +// CraftBukkit start +import org.bukkit.craftbukkit.entity.CraftVillager; +import org.bukkit.craftbukkit.event.CraftEventFactory; +import org.bukkit.event.entity.VillagerCareerChangeEvent; +// CraftBukkit end public class BehaviorCareer extends Behavior { @@ -20,7 +25,14 @@ IRegistry.VILLAGER_PROFESSION.d().filter((villagerprofession) -> { return villagerprofession.b() == villageplacetype; }).findFirst().ifPresent((villagerprofession) -> { - entityvillager.setVillagerData(entityvillager.getVillagerData().withProfession(villagerprofession)); + // CraftBukkit start - Fire VillagerCareerChangeEvent where Villager gets employed + VillagerCareerChangeEvent event = CraftEventFactory.callVillagerCareerChangeEvent(entityvillager, CraftVillager.nmsToBukkitProfession(villagerprofession), VillagerCareerChangeEvent.ChangeReason.EMPLOYED); + if (event.isCancelled()) { + return; + } + + entityvillager.setVillagerData(entityvillager.getVillagerData().withProfession(CraftVillager.bukkitToNmsProfession(event.getProfession()))); + // CraftBukkit end entityvillager.a(worldserver); }); });