package org.bukkit.craftbukkit.entity; import java.util.List; import net.minecraft.server.EntityVillager; import org.apache.commons.lang3.Validate; import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.inventory.CraftInventory; import org.bukkit.craftbukkit.inventory.CraftMerchant; import org.bukkit.entity.EntityType; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Villager; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.MerchantRecipe; public class CraftVillager extends CraftAgeable implements Villager, InventoryHolder { private CraftMerchant merchant; public CraftVillager(CraftServer server, EntityVillager entity) { super(server, entity); } @Override public EntityVillager getHandle() { return (EntityVillager) entity; } @Override public String toString() { return "CraftVillager"; } public EntityType getType() { return EntityType.VILLAGER; } public Profession getProfession() { return Profession.values()[getHandle().getProfession() + 1]; // Offset by 1 from the zombie types } public void setProfession(Profession profession) { Validate.notNull(profession); Validate.isTrue(!profession.isZombie(), "Profession is reserved for Zombies: ", profession); getHandle().setProfession(profession.ordinal() - 1); } @Override public Inventory getInventory() { return new CraftInventory(getHandle().inventory); } private CraftMerchant getMerchant() { return (merchant == null) ? merchant = new CraftMerchant(getHandle()) : merchant; } @Override public List<MerchantRecipe> getRecipes() { return getMerchant().getRecipes(); } @Override public void setRecipes(List<MerchantRecipe> recipes) { this.getMerchant().setRecipes(recipes); } @Override public MerchantRecipe getRecipe(int i) { return getMerchant().getRecipe(i); } @Override public void setRecipe(int i, MerchantRecipe merchantRecipe) { getMerchant().setRecipe(i, merchantRecipe); } @Override public int getRecipeCount() { return getMerchant().getRecipeCount(); } @Override public boolean isTrading() { return getTrader() != null; } @Override public HumanEntity getTrader() { return getMerchant().getTrader(); } @Override public int getRiches() { return getHandle().riches; } @Override public void setRiches(int riches) { getHandle().riches = riches; } }