SPIGOT-4946: Add VillagerCareerChangeEvent
By: i509VCB <null>
This commit is contained in:
@@ -4,6 +4,7 @@ import com.google.common.base.Preconditions;
|
||||
import java.util.Locale;
|
||||
import net.minecraft.server.EntityVillager;
|
||||
import net.minecraft.server.IRegistry;
|
||||
import net.minecraft.server.VillagerProfession;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.util.CraftNamespacedKey;
|
||||
@@ -33,13 +34,13 @@ public class CraftVillager extends CraftAbstractVillager implements Villager {
|
||||
|
||||
@Override
|
||||
public Profession getProfession() {
|
||||
return Profession.valueOf(IRegistry.VILLAGER_PROFESSION.getKey(getHandle().getVillagerData().getProfession()).getKey().toUpperCase(Locale.ROOT));
|
||||
return CraftVillager.nmsToBukkitProfession(getHandle().getVillagerData().getProfession());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setProfession(Profession profession) {
|
||||
Validate.notNull(profession);
|
||||
getHandle().setVillagerData(getHandle().getVillagerData().withProfession(IRegistry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(profession.getKey()))));
|
||||
getHandle().setVillagerData(getHandle().getVillagerData().withProfession(CraftVillager.bukkitToNmsProfession(profession)));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -76,4 +77,12 @@ public class CraftVillager extends CraftAbstractVillager implements Villager {
|
||||
|
||||
getHandle().t(experience);
|
||||
}
|
||||
|
||||
public static Profession nmsToBukkitProfession(VillagerProfession nms) {
|
||||
return Profession.valueOf(IRegistry.VILLAGER_PROFESSION.getKey(nms).getKey().toUpperCase(Locale.ROOT));
|
||||
}
|
||||
|
||||
public static VillagerProfession bukkitToNmsProfession(Profession bukkit) {
|
||||
return IRegistry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(bukkit.getKey()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ import net.minecraft.server.EntityPotion;
|
||||
import net.minecraft.server.EntitySheep;
|
||||
import net.minecraft.server.EntitySlime;
|
||||
import net.minecraft.server.EntityTypes;
|
||||
import net.minecraft.server.EntityVillager;
|
||||
import net.minecraft.server.EntityWaterAnimal;
|
||||
import net.minecraft.server.EnumDirection;
|
||||
import net.minecraft.server.EnumHand;
|
||||
@@ -103,6 +104,8 @@ import org.bukkit.entity.Sheep;
|
||||
import org.bukkit.entity.ThrownExpBottle;
|
||||
import org.bukkit.entity.ThrownPotion;
|
||||
import org.bukkit.entity.Vehicle;
|
||||
import org.bukkit.entity.Villager;
|
||||
import org.bukkit.entity.Villager.Profession;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.Event.Result;
|
||||
@@ -163,6 +166,7 @@ import org.bukkit.event.entity.PlayerLeashEntityEvent;
|
||||
import org.bukkit.event.entity.PotionSplashEvent;
|
||||
import org.bukkit.event.entity.ProjectileHitEvent;
|
||||
import org.bukkit.event.entity.ProjectileLaunchEvent;
|
||||
import org.bukkit.event.entity.VillagerCareerChangeEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.event.inventory.InventoryOpenEvent;
|
||||
import org.bukkit.event.inventory.PrepareAnvilEvent;
|
||||
@@ -465,6 +469,16 @@ public class CraftEventFactory {
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* VillagerCareerChangeEvent
|
||||
*/
|
||||
public static VillagerCareerChangeEvent callVillagerCareerChangeEvent(EntityVillager vilager, Profession future, VillagerCareerChangeEvent.ChangeReason reason) {
|
||||
VillagerCareerChangeEvent event = new VillagerCareerChangeEvent((Villager) vilager.getBukkitEntity(), future, reason);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* BlockDamageEvent
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user