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
buyThe item(s) player must provide for the trade
sellThe item(s) the trader gives to the player
buyBAirOptional second item required from player
rewardExpfalseWhether the player receives XP from trading
xp0Amount 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.