package org.bukkit.craftbukkit.inventory; import com.google.common.base.Preconditions; import java.util.List; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.MerchantRecipe; public class CraftMerchantRecipe extends MerchantRecipe { private final net.minecraft.server.MerchantRecipe handle; public CraftMerchantRecipe(net.minecraft.server.MerchantRecipe merchantRecipe) { super(CraftItemStack.asBukkitCopy(merchantRecipe.sellingItem), 0); this.handle = merchantRecipe; addIngredient(CraftItemStack.asBukkitCopy(merchantRecipe.buyingItem1)); addIngredient(CraftItemStack.asBukkitCopy(merchantRecipe.buyingItem2)); } public CraftMerchantRecipe(ItemStack result, int uses, int maxUses, boolean experienceReward) { super(result, uses, maxUses, experienceReward); this.handle = new net.minecraft.server.MerchantRecipe( net.minecraft.server.ItemStack.a, net.minecraft.server.ItemStack.a, CraftItemStack.asNMSCopy(result), uses, maxUses, this ); } @Override public int getUses() { return handle.uses; } @Override public void setUses(int uses) { handle.uses = uses; } @Override public int getMaxUses() { return handle.maxUses; } @Override public void setMaxUses(int maxUses) { handle.maxUses = maxUses; } @Override public boolean hasExperienceReward() { return handle.rewardExp; } @Override public void setExperienceReward(boolean flag) { handle.rewardExp = flag; } public net.minecraft.server.MerchantRecipe toMinecraft() { List<ItemStack> ingredients = getIngredients(); Preconditions.checkState(!ingredients.isEmpty(), "No offered ingredients"); handle.buyingItem1 = CraftItemStack.asNMSCopy(ingredients.get(0)); if (ingredients.size() > 1) { handle.buyingItem2 = CraftItemStack.asNMSCopy(ingredients.get(1)); } return handle; } public static CraftMerchantRecipe fromBukkit(MerchantRecipe recipe) { if (recipe instanceof CraftMerchantRecipe) { return (CraftMerchantRecipe) recipe; } else { CraftMerchantRecipe craft = new CraftMerchantRecipe(recipe.getResult(), recipe.getUses(), recipe.getMaxUses(), recipe.hasExperienceReward()); craft.setIngredients(recipe.getIngredients()); return craft; } } }