Home Commands Examples Getting Started With Scripts Global Keywords

VillagerTrades

Importing the class

It might be required for you to import the package if you encounter any issues (like casting an Array), so better be safe than sorry and add the import at the very top of the file.

script.zs
import crafttweaker.api.villagers.VillagerTrades;

Methods

Adds a new custom trade with the selling and buying items determined by the custom MerchantOffer generator.

The function will only run when the villager resolves the trade.

script.zs
// VillagerTrades.addTrade(profession as VillagerProfession, villagerLevel as int, offerGenerator as BiFunction<Entity,RandomSource,MerchantOffer?>)
villagerTrades.addTrade(<profession:minecraft:farmer>, 1, (entity, random) => {
return new MerchantOffer(<item:minecraft:dirt>, <item:minecraft:diamond>, 16, 0, 5);
});
ParameterTypeDescription
Parameter
profession
Type
VillagerProfession
Description
What profession this trade should be for.
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Parameter
offerGenerator
Type
BiFunction<Entity,RandomSource,MerchantOffer?>
Description
A generator method to make a new MerchantOffer.

Adds the specified ItemListing trade.

script.zs
// VillagerTrades.addTrade(profession as VillagerProfession, villagerLevel as int, trade as ItemListing)
villagerTrades.addTrade(<profession:minecraft:farmer>, 1, TreasureMapForEmeralds.create(1, <resource:minecraft:ruined_portal>, "display Name", <constant:minecraft:world/map/decorationtype:mansion>, 16, 8));
ParameterTypeDescription
Parameter
profession
Type
VillagerProfession
Description
What profession this trade should be for.
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Parameter
trade
Type
ItemListing
Description
The trade to add.

Adds a Villager Trade for emeralds for an Item. An example being, giving a villager 2 emeralds for an arrow.

script.zs
// VillagerTrades.addTrade(profession as VillagerProfession, villagerLevel as int, emeralds as int, forSale as ItemStack, maxTrades as int, xp as int, priceMult as float)
villagerTrades.addTrade(<profession:minecraft:farmer>, 1, 16, <item:minecraft:diamond>, 5, 2, 0.05);
ParameterTypeDescriptionOptionalDefault Value
Parameter
profession
Type
VillagerProfession
Description
What profession this trade should be for.
Optional
false
Default Value
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Optional
false
Default Value
Parameter
emeralds
Type
int
Description
The amount of Emeralds.
Optional
false
Default Value
Parameter
forSale
Type
ItemStack
Description
What ItemStack is being sold (by the Villager).
Optional
false
Default Value
Parameter
maxTrades
Type
int
Description
How many times can this trade be done.
Optional
false
Default Value
Parameter
xp
Type
int
Description
How much Experience is given by trading.
Optional
false
Default Value
Parameter
priceMult
Type
float
Description
When this trade is discounted, how much should it be discounted by.
Optional
true
Default Value
1.0

Adds a Villager Trade for an Item for an Item. An example being, giving a villager 2 diamonds for an arrow.

script.zs
// VillagerTrades.addTrade(profession as VillagerProfession, villagerLevel as int, input1 as ItemStack, forSale as ItemStack, maxTrades as int, xp as int, priceMult as float)
villagerTrades.addTrade(<profession:minecraft:farmer>, 1, <item:minecraft:dirt> * 16, <item:minecraft:diamond>, 5, 2, 0.05);
ParameterTypeDescriptionOptionalDefault Value
Parameter
profession
Type
VillagerProfession
Description
What profession this trade should be for.
Optional
false
Default Value
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Optional
false
Default Value
Parameter
input1
Type
ItemStack
Description
The ItemStack that is being given to the Villager.
Optional
false
Default Value
Parameter
forSale
Type
ItemStack
Description
What ItemStack is being sold (by the Villager).
Optional
false
Default Value
Parameter
maxTrades
Type
int
Description
How many times can this trade be done.
Optional
false
Default Value
Parameter
xp
Type
int
Description
How much Experience is given by trading.
Optional
false
Default Value
Parameter
priceMult
Type
float
Description
When this trade is discounted, how much should it be discounted by.
Optional
true
Default Value
1.0

Adds a Villager Trade for two Items for an Item. An example being, giving a villager 2 diamonds and 2 dirt for an arrow.

script.zs
// VillagerTrades.addTrade(profession as VillagerProfession, villagerLevel as int, input1 as ItemStack, input2 as ItemStack, forSale as ItemStack, maxTrades as int, xp as int, priceMult as float)
villagerTrades.addTrade(<profession:minecraft:farmer>, 1, <item:minecraft:diamond> * 2, <item:minecraft:dirt> * 2, <item:minecraft:arrow>, 5, 2, 0.05);
ParameterTypeDescriptionOptionalDefault Value
Parameter
profession
Type
VillagerProfession
Description
What profession this trade should be for.
Optional
false
Default Value
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Optional
false
Default Value
Parameter
input1
Type
ItemStack
Description
The main ItemStack that is being given to the Villager.
Optional
false
Default Value
Parameter
input2
Type
ItemStack
Description
The secondary ItemStack that is being given to the Villager.
Optional
false
Default Value
Parameter
forSale
Type
ItemStack
Description
What ItemStack is being sold (by the Villager).
Optional
false
Default Value
Parameter
maxTrades
Type
int
Description
How many times can this trade be done.
Optional
false
Default Value
Parameter
xp
Type
int
Description
How much Experience is given by trading.
Optional
false
Default Value
Parameter
priceMult
Type
float
Description
When this trade is discounted, how much should it be discounted by.
Optional
true
Default Value
1.0

Adds the specific ItemListing trade to the Wandering Trader

script.zs
// VillagerTrades.addWanderingTrade(rarity as int, trade as ItemListing)
villagerTrades.addWanderingTrade(1, TreasureMapForEmeralds.create(1, <resource:minecraft:ruined_portal>, "display Name", <constant:minecraft:world/map/decorationtype:mansion>, 16, 8));
ParameterTypeDescription
Parameter
rarity
Type
int
Description
The rarity of the Trade. Valid options are 1 or 2. A Wandering Trader can only spawn with a single trade of rarity 2.
Parameter
trade
Type
ItemListing
Description
The trade to add.

Adds a Wandering Trader Trade for emeralds for an Item. An example being, giving a Wandering Trader 2 emeralds for an arrow.

script.zs
// VillagerTrades.addWanderingTrade(rarity as int, emeralds as int, forSale as ItemStack, maxTrades as int, xp as int)
villagerTrades.addWanderingTrade(1, 16, <item:minecraft:diamond>, 16, 2);
ParameterTypeDescription
Parameter
rarity
Type
int
Description
The rarity of the Trade. Valid options are 1 or 2. A Wandering Trader can only spawn with a single trade of rarity 2.
Parameter
emeralds
Type
int
Description
The amount of Emeralds.
Parameter
forSale
Type
ItemStack
Description
What ItemStack is being sold (by the Wandering Trader).
Parameter
maxTrades
Type
int
Description
How many times can this trade be done.
Parameter
xp
Type
int
Description
How much Experience is given by trading.

Adds a Wandering Trader Trade for emeralds for an Item. An example being, giving a Wandering Trader 2 emeralds for an arrow.

script.zs
// VillagerTrades.addWanderingTrade(rarity as int, price as IItemStack, forSale as IItemStack, maxTrades as int, xp as int)
villagerTrades.addWanderingTrade(1, <item:minecraft:dirt>, <item:minecraft:diamond>, 16, 2);
ParameterTypeDescription
Parameter
rarity
Type
int
Description
The rarity of the Trade. Valid options are 1 or 2. A Wandering Trader can only spawn with a single trade of rarity 2.
Parameter
price
Type
IItemStack
Description
The ItemStack being given to the Wandering Trader.
Parameter
forSale
Type
IItemStack
Description
What ItemStack is being sold (by the Wandering Trader).
Parameter
maxTrades
Type
int
Description
How many times can this trade be done.
Parameter
xp
Type
int
Description
How much Experience is given by trading.

Removes all the trades for the given profession and villagerLevel

script.zs
// VillagerTrades.removeAllTrades(profession as VillagerProfession, villagerLevel as int)
villagerTrades.removeAllTrades(<profession:minecraft:farmer>, 1);
ParameterTypeDescription
Parameter
profession
Type
VillagerProfession
Description
hat profession to remove from.
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.

Removes all wandering trades of the given rarity

script.zs
VillagerTrades.removeAllWanderingTrades(rarity as int)
ParameterTypeDescription
Parameter
rarity
Type
int
Description
The rarity of the Trade. Valid options are 1 or 2. A Wandering Trader can only spawn with a single trade of rarity 2.

Removes a BasicTrade Villager trade. BasicTrades are trades that allow any item, to any other item. It is only really used for mod recipes and is not used for any vanilla villager trade.

script.zs
// VillagerTrades.removeBasicTrade(profession as VillagerProfession, villagerLevel as int, forSale as IItemStack, price as IItemStack, price2 as IItemStack)
villagerTrades.removeBasicTrade(<profession:minecraft:farmer>, 1, <item:minecraft:arrow>, <item:minecraft:stick>, <item:minecraft:emerald>);
ParameterTypeDescriptionOptionalDefault Value
Parameter
profession
Type
VillagerProfession
Description
What profession this trade should be for.
Optional
false
Default Value
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Optional
false
Default Value
Parameter
forSale
Type
IItemStack
Description
What ItemStack is being sold (by the Villager).
Optional
false
Default Value
Parameter
price
Type
IItemStack
Description
Optional
true
Default Value
item:minecraft:air
Parameter
price2
Type
IItemStack
Description
Optional
true
Default Value
item:minecraft:air

Removes a Villager trade for Items for Dyed leather armor. An example being, giving a villager Leather Leggings and 3 Emeralds and getting a Blue Dyed Leather Leggings.

script.zs
// VillagerTrades.removeDyedArmorForEmeraldsTrade(profession as VillagerProfession, villagerLevel as int, buyingItem as ItemDefinition)
villagerTrades.removeDyedArmorForEmeraldsTrade(<profession:minecraft:leatherworker>, 1, <item:minecraft:leather_chestplate>);
ParameterTypeDescription
Parameter
profession
Type
VillagerProfession
Description
What profession this trade should be for.
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Parameter
buyingItem
Type
ItemDefinition
Description
The base ItemStack that a random Dye colour will be applied to. E.G. A leather chestplate with no effect applied.

Removes a Villager trade for Emeralds for Items. An example being, giving a villager 20 Wheat and getting an Emerald from the villager.

script.zs
// VillagerTrades.removeEmeraldForItemsTrade(profession as VillagerProfession, villagerLevel as int, tradeFor as ItemDefinition)
villagerTrades.removeEmeraldForItemsTrade(<profession:minecraft:farmer>, 1, <item:minecraft:potato>.definition);
ParameterTypeDescription
Parameter
profession
Type
VillagerProfession
Description
What profession this trade should be for.
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Parameter
tradeFor
Type
ItemDefinition
Description
What ItemStack is being sold (by the Villager).

Removes a Villager trade for an Enchanted Book. An example being, giving a villager Emeralds and getting an Enchanted Book with a random Enchantment.

script.zs
// VillagerTrades.removeEnchantBookForEmeraldsTrade(profession as VillagerProfession, villagerLevel as int)
villagerTrades.removeEnchantBookForEmeraldsTrade(<profession:minecraft:librarian>, 1);
ParameterTypeDescription
Parameter
profession
Type
VillagerProfession
Description
What profession this trade should be for.
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.

Removes a Villager trade for an Enchanted Item. An example being, giving a villager 3 Emeralds and getting an Enchanted Pickaxe.

script.zs
// VillagerTrades.removeEnchantedItemForEmeraldsTrade(profession as VillagerProfession, villagerLevel as int, buyingItem as IItemStack)
villagerTrades.removeEnchantedItemForEmeraldsTrade(<profession:minecraft:armorer>, 1, <item:minecraft:diamond_boots>);
ParameterTypeDescription
Parameter
profession
Type
VillagerProfession
Description
What profession this trade should be for.
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Parameter
buyingItem
Type
IItemStack
Description
The ItemStack that the Villager is selling (including any NBT).

Removes a Villager trade for Emeralds and Items for Items. An example being, giving a villager 6 uncooked Cod and an Emerald and getting back 6 Cooked Cod.

script.zs
// VillagerTrades.removeItemsAndEmeraldsToItemsTrade(profession as VillagerProfession, villagerLevel as int, sellingItem as IItemStack, buyingItem as IItemStack)
villagerTrades.removeItemsAndEmeraldsToItemsTrade(<profession:minecraft:fisherman>, 1, <item:minecraft:cooked_cod>, <item:minecraft:cod>);
ParameterTypeDescription
Parameter
profession
Type
VillagerProfession
Description
What profession this trade should be for.
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Parameter
sellingItem
Type
IItemStack
Description
What ItemStack is being given to the Villager.
Parameter
buyingItem
Type
IItemStack
Description
The item that the Villager is selling.

Removes a Villager trade for Items for Emeralds. An example being, giving a villager an Emerald and getting 4 Pumpkin Pies from the villager.

script.zs
// VillagerTrades.removeItemsForEmeraldsTrade(profession as VillagerProfession, villagerLevel as int, sellingItem as IItemStack)
villagerTrades.removeItemsForEmeraldsTrade(<profession:minecraft:farmer>, 1, <item:minecraft:apple>);
ParameterTypeDescription
Parameter
profession
Type
VillagerProfession
Description
What profession this trade should be for.
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Parameter
sellingItem
Type
IItemStack
Description
What ItemStack is being given to the Villager.

Removes a Villager trade for Suspicious Stew. An example being, giving a villager an Emerald and getting a bowl of Suspicious Stew back.

script.zs
// VillagerTrades.removeSuspiciousStewForEmeraldTrade(profession as VillagerProfession, villagerLevel as int)
villagerTrades.removeSuspiciousStewForEmeraldTrade(<profession:minecraft:farmer>, 1);
ParameterTypeDescription
Parameter
profession
Type
VillagerProfession
Description
What profession this trade should be for.
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.

Removes a Villager trade for Items for an Item with a PotionEffect. An example being, giving a villager an Arrow and an Emerald and getting a Tipped Arrow with night vision.

script.zs
// VillagerTrades.removeTippedArrowForItemsAndEmeraldsTrade(profession as VillagerProfession, villagerLevel as int, potionStack as IItemStack, sellingItem as ItemDefinition)
villagerTrades.removeTippedArrowForItemsAndEmeraldsTrade(<profession:minecraft:fletcher>, 1, <item:minecraft:tipped_arrow>, <item:minecraft:arrow>);
ParameterTypeDescription
Parameter
profession
Type
VillagerProfession
Description
What profession this trade should be for.
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Parameter
potionStack
Type
IItemStack
Description
The base ItemStack that a random potion effect will be applied to. E.G. A tipped Arrow with no effect applied.
Parameter
sellingItem
Type
ItemDefinition
Description
What ItemStack is being given to the Villager.

Removes the specified trade for the given profession and villagerLevel.

script.zs
// VillagerTrades.removeTrade(profession as VillagerProfession, villagerLevel as int, buying as IIngredient, selling as IIngredient, secondBuying as IIngredient)
villagerTrades.removeTrade(<profession:minecraft:farmer>, 1, <item:minecraft:potato>, <item:minecraft:emerald>, <item:minecraft:air>);
ParameterTypeDescriptionOptionalDefault Value
Parameter
profession
Type
VillagerProfession
Description
That profession to remove from.
Optional
false
Default Value
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Optional
false
Default Value
Parameter
buying
Type
IIngredient
Description
The first item that you are giving to the villager.
Optional
false
Default Value
Parameter
selling
Type
IIngredient
Description
The item that the villager is selling to you.
Optional
false
Default Value
Parameter
secondBuying
Type
IIngredient
Description
The second item that you are giving to the villager. Will default to air if not provided.
Optional
true
Default Value
item:minecraft:air

Removes all trades that have the specified item as the buying item for the given profession and villagerLevel.

script.zs
// VillagerTrades.removeTradesBuying(profession as VillagerProfession, villagerLevel as int, buying as IIngredient)
villagerTrades.removeTradesBuying(<profession:minecraft:farmer>, 1, <item:minecraft:potato>);
ParameterTypeDescription
Parameter
profession
Type
VillagerProfession
Description
That profession to remove from.
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Parameter
buying
Type
IIngredient
Description
The first item that you are giving to the villager.

Removes all trades that have the specified items as the buying items for the given profession and villagerLevel.

script.zs
// VillagerTrades.removeTradesBuying(profession as VillagerProfession, villagerLevel as int, buying as IIngredient, secondBuying as IIngredient)
villagerTrades.removeTradesBuying(<profession:minecraft:farmer>, 1, <item:minecraft:potato>, <item:minecraft:air>);
ParameterTypeDescription
Parameter
profession
Type
VillagerProfession
Description
That profession to remove from.
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Parameter
buying
Type
IIngredient
Description
The first item that you are giving to the villager.
Parameter
secondBuying
Type
IIngredient
Description
The second item that you are giving to the villager. Will default to air if not provided.

Removes all trades that sell the specified item for the given profession and villagerLevel.

script.zs
// VillagerTrades.removeTradesSelling(profession as VillagerProfession, villagerLevel as int, selling as IIngredient)
villagerTrades.removeTradesSelling(<profession:minecraft:farmer>, 1, <item:minecraft:emerald>);
ParameterTypeDescription
Parameter
profession
Type
VillagerProfession
Description
That profession to remove from.
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.
Parameter
selling
Type
IIngredient
Description
The item that the villager is selling to you.

Removes a Villager trade for a Map. An example being, giving a villager 13 Emeralds and getting a Map to a structure.

script.zs
// VillagerTrades.removeTreasureMapForEmeraldsTrade(profession as VillagerProfession, villagerLevel as int)
villagerTrades.removeTreasureMapForEmeraldsTrade(<profession:minecraft:cartographer>, 1);
ParameterTypeDescription
Parameter
profession
Type
VillagerProfession
Description
What profession this trade should be for.
Parameter
villagerLevel
Type
int
Description
The level the Villager needs to be.

Removes a Wandering Trader trade for Emeralds for Items. An example being, giving a Wandering Trader 2 Emeralds for an Arrow.

script.zs
// VillagerTrades.removeWanderingTrade(rarity as int, tradeFor as IIngredient)
villagerTrades.removeWanderingTrade(2, <item:minecraft:arrow>);
ParameterTypeDescription
Parameter
rarity
Type
int
Description
The rarity of the Trade. Valid options are 1 or 2. A Wandering Trader can only spawn with a single trade of rarity 2.
Parameter
tradeFor
Type
IIngredient
Description
What ItemStack is being sold (by the Villager).