package org.bukkit.craftbukkit.inventory; import com.google.common.base.Function; import com.google.common.collect.Lists; import java.util.Collections; import java.util.List; import net.minecraft.server.EntityHuman; import net.minecraft.server.IMerchant; import net.minecraft.server.MerchantRecipeList; import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.Merchant; import org.bukkit.inventory.MerchantRecipe; public class CraftMerchant implements Merchant { protected final IMerchant merchant; public CraftMerchant(IMerchant merchant) { this.merchant = merchant; } public IMerchant getMerchant() { return merchant; } @Override public List<MerchantRecipe> getRecipes() { return Collections.unmodifiableList(Lists.transform(merchant.getOffers(null), new Function<net.minecraft.server.MerchantRecipe, MerchantRecipe>() { @Override public MerchantRecipe apply(net.minecraft.server.MerchantRecipe recipe) { return recipe.asBukkit(); } })); } @Override public void setRecipes(List<MerchantRecipe> recipes) { MerchantRecipeList recipesList = merchant.getOffers(null); recipesList.clear(); for (MerchantRecipe recipe : recipes) { recipesList.add(CraftMerchantRecipe.fromBukkit(recipe).toMinecraft()); } } @Override public MerchantRecipe getRecipe(int i) { return merchant.getOffers(null).get(i).asBukkit(); } @Override public void setRecipe(int i, MerchantRecipe merchantRecipe) { merchant.getOffers(null).set(i, CraftMerchantRecipe.fromBukkit(merchantRecipe).toMinecraft()); } @Override public int getRecipeCount() { return merchant.getOffers(null).size(); } @Override public boolean isTrading() { return getTrader() != null; } @Override public HumanEntity getTrader() { EntityHuman eh = merchant.getTrader(); return eh == null ? null : eh.getBukkitEntity(); } @Override public int hashCode() { return merchant.hashCode(); } @Override public boolean equals(final Object obj) { return obj instanceof CraftMerchant && ((CraftMerchant) obj).merchant.equals(this.merchant); } }