Package org.bukkit.inventory

# 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 Summary

Constructors
Constructor
Description
`MerchantRecipe(@NotNull ItemStack result, int maxUses)`
`MerchantRecipe(@NotNull ItemStack result, int uses, int maxUses, boolean experienceReward)`
`MerchantRecipe(@NotNull ItemStack result, int uses, int maxUses, boolean experienceReward, int villagerExperience, float priceMultiplier)`
`MerchantRecipe(@NotNull ItemStack result, int uses, int maxUses, boolean experienceReward, int villagerExperience, float priceMultiplier, boolean ignoreDiscounts)`

## Method Summary

Modifier and Type
Method
Description
`void`
`addIngredient(@NotNull ItemStack item)`
`@NotNull List<ItemStack>`
`getIngredients()`
`int`
`getMaxUses()`
Get the maximum number of uses this trade has.
`float`
`getPriceMultiplier()`
Gets the additive price multiplier for the cost of this trade.
`@NotNull ItemStack`
`getResult()`
Get the result of this recipe.
`int`
`getUses()`
Get the number of times this trade has been used.
`int`
`getVillagerExperience()`
Gets the amount of experience the villager earns from this trade.
`boolean`
`hasExperienceReward()`
Whether to reward experience to the player for the trade.
`void`
`removeIngredient(int index)`
`void`
`setExperienceReward(boolean flag)`
Set whether to reward experience to the player for the trade.
`void`
`setIgnoreDiscounts(boolean ignoreDiscounts)`
`void`
`setIngredients(@NotNull List<ItemStack> ingredients)`
`void`
`setMaxUses(int maxUses)`
Set the maximum number of uses this trade has.
`void`
`setPriceMultiplier(float priceMultiplier)`
Sets the additive price multiplier for the cost of this trade.
`void`
`setUses(int uses)`
Set the number of times this trade has been used.
`void`
`setVillagerExperience(int villagerExperience)`
Sets the amount of experience the villager earns from this trade.
`boolean`
`shouldIgnoreDiscounts()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## 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.