Class MerchantRecipe

java.lang.Object
org.bukkit.inventory.MerchantRecipe
All Implemented Interfaces:
Recipe

public class MerchantRecipe extends Object implements Recipe
Represents a merchant's trade. Trades can take one or two ingredients, and provide one result. The ingredients' ItemStack amounts are respected in the trade.
A trade has a limited number of uses, after which the trade can no longer be used, unless the player uses a different trade, which will cause its maximum uses to increase.
A trade may or may not reward experience for being completed.
See Also:
VillagerReplenishTradeEvent
  • Constructor Details

    • MerchantRecipe

      public MerchantRecipe(@NotNull @NotNull ItemStack result, int maxUses)
    • MerchantRecipe

      public MerchantRecipe(@NotNull @NotNull ItemStack result, int uses, int maxUses, boolean experienceReward)
    • MerchantRecipe

      public MerchantRecipe(@NotNull @NotNull ItemStack result, int uses, int maxUses, boolean experienceReward, int villagerExperience, float priceMultiplier)
    • MerchantRecipe

      public MerchantRecipe(@NotNull @NotNull ItemStack result, int uses, int maxUses, boolean experienceReward, int villagerExperience, float priceMultiplier, boolean ignoreDiscounts)
  • Method Details

    • getResult

      @NotNull public @NotNull ItemStack getResult()
      Description copied from interface: Recipe
      Get the result of this recipe.
      Specified by:
      getResult in interface Recipe
      Returns:
      The result stack
    • addIngredient

      public void addIngredient(@NotNull @NotNull ItemStack item)
    • removeIngredient

      public void removeIngredient(int index)
    • setIngredients

      public void setIngredients(@NotNull @NotNull List<ItemStack> ingredients)
    • getIngredients

      @NotNull public @NotNull List<ItemStack> getIngredients()
    • getUses

      public int getUses()
      Get the number of times this trade has been used.
      Returns:
      the number of uses
    • setUses

      public void setUses(int uses)
      Set the number of times this trade has been used.
      Parameters:
      uses - the number of uses
    • getMaxUses

      public int getMaxUses()
      Get the maximum number of uses this trade has.
      The maximum uses of this trade may increase when a player trades with the owning merchant.
      Returns:
      the maximum number of uses
    • setMaxUses

      public void setMaxUses(int maxUses)
      Set the maximum number of uses this trade has.
      Parameters:
      maxUses - the maximum number of time this trade can be used
    • hasExperienceReward

      public boolean hasExperienceReward()
      Whether to reward experience to the player for the trade.
      Returns:
      whether to reward experience to the player for completing this trade
    • setExperienceReward

      public void setExperienceReward(boolean flag)
      Set whether to reward experience to the player for the trade.
      Parameters:
      flag - whether to reward experience to the player for completing this trade
    • getVillagerExperience

      public int getVillagerExperience()
      Gets the amount of experience the villager earns from this trade.
      Returns:
      villager experience
    • setVillagerExperience

      public void setVillagerExperience(int villagerExperience)
      Sets the amount of experience the villager earns from this trade.
      Parameters:
      villagerExperience - new experience amount
    • getPriceMultiplier

      public float getPriceMultiplier()
      Gets the additive price multiplier for the cost of this trade.
      Returns:
      price multiplier
    • setPriceMultiplier

      public void setPriceMultiplier(float priceMultiplier)
      Sets the additive price multiplier for the cost of this trade.
      Parameters:
      priceMultiplier - new price multiplier
    • shouldIgnoreDiscounts

      public boolean shouldIgnoreDiscounts()
      Returns:
      Whether all discounts on this trade should be ignored.
    • setIgnoreDiscounts

      public void setIgnoreDiscounts(boolean ignoreDiscounts)
      Parameters:
      ignoreDiscounts - Whether all discounts on this trade should be ignored.