As simple as it sounds, a small jij-able/standalone library to modify/add merchant trades via datapacks.
You are able to modify merchant trades through JSON files the data/<namespace>/trade_offers/
directory.
For example:
{
"__COMMENT": "This adds a ruined portal map to the Cartographer's trades.",
"profession": "minecraft:cartographer",
"replace": false,
"offers": {
"apprentice": [
{
"type": "minecraft:sell_map",
"price": 5,
"name_key": "filled_map.ruined_portal",
"feature_tag": "minecraft:ruined_portal",
"icon": "target_x",
"max_uses": 10,
"experience": 2
}
]
}
}
For more tutorials and more information on modifying merchant trades, see the wiki.
SJVT uses Minecraft's hardcoded trade map as a base for the datapacks to build on top of, so it should work with most mods, even those who add new villager professions.
You can also export the hardcoded map (including non-native support mods) as a datapack by running the sjvt:build
command.
You can include the mod using the following repository and dependency in your build.gradle
(where [TAG]
is the latest version):
repositories {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
content {
includeGroup "maven.modrinth"
}
}
}
dependencies {
modImplementation include("maven.modrinth:sjvt:[TAG]") //To include (jij) in your mod
modImplementation "maven.modrinth:sjvt:[TAG]" // To require the mod to be installed seperatly
}
To create a trade offer factory, implement the SerializableTradeOfferFactory
interface.
Then register the codec to the TradeOfferFactories.TRADE_OFFER_FACTORY_REGISTRY
registry.
You can also use methods and fields in the CodecHelper
class to assist in the creation of codecs.
Then see 'For Datapackers'