Skip to main content
Version: 1.20.x

Data Trader

Loading data...

Defining the trades​

File structure​

The trader can receive an ID for a trader offers "recipe". This is a list of single trader offers. An example file could look like this:

{
"Offers": [
{
"buy": {
"tag": "forge:gems/diamond",
"count": 3
},
"buyB": {
"item": "minecraft:wooden_pickaxe"
},
"sell": {
"item": "minecraft:diamond_pickaxe",
"nbt": "{Damage:0,Enchantments:[{id:\"minecraft:efficiency\",lvl:2},{id:\"minecraft:unbreaking\", lvl:10}]}"
},
"rewardExp": false,
"xp": 0
}
]
}

This example includes only one trader offer. The trader will sell the diamond pickaxe in sell in exchange for the items specified in buy and buyB.

Offer Configuration​

NameRequiredDefaultDescription
buy✅The item(s) player must provide for the trade
sell✅The item(s) the trader gives to the player
buyB❌AirOptional second item required from player
rewardExp❌falseWhether the player receives XP from trading
xp❌0Amount of XP points awarded for the trade

Where to put it in?​

You use a data pack to provide these files. These are located at <modid>/trader_offers/. An example can be found here.

How to use?​

You spawn the trader using the /summon command, or by using the spawn egg. After this, you use the command /datatrader setOffer @e <modid>:<path> to set the recipe. This can also be done by datapacks. For a normal trader, I recommend setting NoAI to true.

You can also summon a trader with a specific trading table by using the command /datatrader summon ~ ~ ~ <offer_id> <NoAI>

Setting custom skin overlay​

Just put a texture to <modid>/textures/entity/trader/<offer_id path>.png. This texture should be something like the profession overlay texture, e.g. minecraft:textures/entity/villager/profession/cleric.png.