- check_circle Functions
- 6,573 views, 1 today
- 492 downloads, 0 today
3
Tectane's Trading Transformations
Introduction
Have you ever been disappointed by the items available in villager trading? Ever felt like the value of emeralds makes no economic sense? Ever made a trade by mistake, and wished you could convince them to accept returns?
This datapack aims to address those disappointments. It seamlessly overhauls villager trading, replacing the vanilla trading tables entirely. Items have a consistent price, a much wider variety is traded, and in most cases they can be both bought and sold. Now, you can mine diamonds and exchange them for cobblestone to build your castle. You can purchase weapons and armor, then sell the monster loot you get from using them. Trading is transformed from a fun but limited mechanic to a viable yet fair alternative to the grind that can make the late-game frustrating. Soon enough, you might regret playing with villagers any other way!
Features
- All villager professions have a modified and expanded trade possibilities at all levels. >280 different items are traded!
- Some villager professions renamed, villagers now show their profession name over their head.
- Coins! Ferrins (Iron Nuggets) and Aurins (Golden Nuggets) (with custom NBT) are now the only currency villagers will accept. They are uncraftable, so trading is the only way to acquire them. 1 Aurin is worth 8 Ferrins.
- Every item traded has a consistent price, but villagers will always pocket some change. (Gossip is no longer a factor, but Hero of the Village is!)
- Cartographer's explorer maps work as normal
- Enchanted armor/weapon/tool trades now require an unenchanted version of the item, but are otherwise unchanged.
- Librarian's enchanted books work as normal
- There are unique iron/chain weapons/armor/tools sold by the weaponsmith/toolsmith/armorer that steadily increase in enchantment level, up to just slightly better than netherite (with worse durability)
- Not a feature exactly, but: wandering traders use Aurins instead of emeralds.
- Nitwits (green robes) will purchase emeralds and give Aurins in exchange, making emeralds still useful to mine and loot.
Installation/Use
1. Download the pack and add it to the datapack folder.
2. Reopen the world you're in or run /reload.
3. It should be working from then! All villagers will automatically gain the new trades when they level up instead. Strongly recommended for new worlds, rather than old ones - vanilla emerald trades coexisting with the new ones is a recipe for exploitation.
If you'd like to give yourself any of the coins to play around with:
- /function traders:helper/give_aurin will give you an aurin
- /function traders:helper/give_ferrin will give you a ferrin
From there, using the 'pick block' key in the inventory in creative mode will let you create more.
(Note: this datapack uses the minecraft:load.json tag to run setup and begin the repeating schedule-loop. If you're using this pack with another, that conflict might need to be resolved!)
Disclaimer
- You may be worried, 'but this will break (in a balance sense) my game!'. And yeah, this is a work-in-progress, without the tremendous amount of tweaking and stress-testing necessary to be sure every number is perfect. If introduced into a tightly controlled, highly exploitative atmospheres; yeah it'll probably break the game. I can't be sure there's no way to dupe money (though I'd be very impressed if someone manages it) and several items become accessible before they otherwise would be, bypassing the planned progression. In several cases this is intentional - this is designed to give trading a major boost, and make it a viable alternative to elements of the game that players might rather avoid. A peaceful game now has access to monster loot like gunpowder and tridents, for instance. Shulker boxes, though extremely expensive, don't require battling through the End Islands, so players can use those features earlier. And large quantities of basic building materials like cobblestone, dirt, sand, dyes, blackstone, terracotta, etc. that are normally locked behind a few day's of grinding are now available to trade. Diamonds to castles, in Equivalent Exchange style. So, don't expect perfect balance. Don't expect the game's progression to be the same - in fact, expect the opposite. But I encourage you to give it a try, to judge for yourself the impact it has on your experience!
- This is my first time publishing something like this, so if I've missed anything obvious or done something wrong I apologize, and will do my best to address it quickly!
Finally
Thank you for reading this far! I really appreciate any comments, questions, bugs found, etc. Can't promise to be too active in responding as this is very much a side project, but I'll do my best. Have a lovely day!
Introduction
Have you ever been disappointed by the items available in villager trading? Ever felt like the value of emeralds makes no economic sense? Ever made a trade by mistake, and wished you could convince them to accept returns?
This datapack aims to address those disappointments. It seamlessly overhauls villager trading, replacing the vanilla trading tables entirely. Items have a consistent price, a much wider variety is traded, and in most cases they can be both bought and sold. Now, you can mine diamonds and exchange them for cobblestone to build your castle. You can purchase weapons and armor, then sell the monster loot you get from using them. Trading is transformed from a fun but limited mechanic to a viable yet fair alternative to the grind that can make the late-game frustrating. Soon enough, you might regret playing with villagers any other way!
Features
- All villager professions have a modified and expanded trade possibilities at all levels. >280 different items are traded!
- Some villager professions renamed, villagers now show their profession name over their head.
- Coins! Ferrins (Iron Nuggets) and Aurins (Golden Nuggets) (with custom NBT) are now the only currency villagers will accept. They are uncraftable, so trading is the only way to acquire them. 1 Aurin is worth 8 Ferrins.
- Every item traded has a consistent price, but villagers will always pocket some change. (Gossip is no longer a factor, but Hero of the Village is!)
- Cartographer's explorer maps work as normal
- Enchanted armor/weapon/tool trades now require an unenchanted version of the item, but are otherwise unchanged.
- Librarian's enchanted books work as normal
- There are unique iron/chain weapons/armor/tools sold by the weaponsmith/toolsmith/armorer that steadily increase in enchantment level, up to just slightly better than netherite (with worse durability)
- Not a feature exactly, but: wandering traders use Aurins instead of emeralds.
- Nitwits (green robes) will purchase emeralds and give Aurins in exchange, making emeralds still useful to mine and loot.
Installation/Use
1. Download the pack and add it to the datapack folder.
2. Reopen the world you're in or run /reload.
3. It should be working from then! All villagers will automatically gain the new trades when they level up instead. Strongly recommended for new worlds, rather than old ones - vanilla emerald trades coexisting with the new ones is a recipe for exploitation.
If you'd like to give yourself any of the coins to play around with:
- /function traders:helper/give_aurin will give you an aurin
- /function traders:helper/give_ferrin will give you a ferrin
From there, using the 'pick block' key in the inventory in creative mode will let you create more.
(Note: this datapack uses the minecraft:load.json tag to run setup and begin the repeating schedule-loop. If you're using this pack with another, that conflict might need to be resolved!)
Disclaimer
- You may be worried, 'but this will break (in a balance sense) my game!'. And yeah, this is a work-in-progress, without the tremendous amount of tweaking and stress-testing necessary to be sure every number is perfect. If introduced into a tightly controlled, highly exploitative atmospheres; yeah it'll probably break the game. I can't be sure there's no way to dupe money (though I'd be very impressed if someone manages it) and several items become accessible before they otherwise would be, bypassing the planned progression. In several cases this is intentional - this is designed to give trading a major boost, and make it a viable alternative to elements of the game that players might rather avoid. A peaceful game now has access to monster loot like gunpowder and tridents, for instance. Shulker boxes, though extremely expensive, don't require battling through the End Islands, so players can use those features earlier. And large quantities of basic building materials like cobblestone, dirt, sand, dyes, blackstone, terracotta, etc. that are normally locked behind a few day's of grinding are now available to trade. Diamonds to castles, in Equivalent Exchange style. So, don't expect perfect balance. Don't expect the game's progression to be the same - in fact, expect the opposite. But I encourage you to give it a try, to judge for yourself the impact it has on your experience!
- This is my first time publishing something like this, so if I've missed anything obvious or done something wrong I apologize, and will do my best to address it quickly!
Finally
Thank you for reading this far! I really appreciate any comments, questions, bugs found, etc. Can't promise to be too active in responding as this is very much a side project, but I'll do my best. Have a lovely day!
Backend Notes
Since someone asked, the item IDs for Aurins and Ferrins are as follows:
- {id:"minecraft:iron_nugget",tag:{display:{Name:'[{"text":"Ferrin","color":"gray","bold":true}]',Lore:['[{"text":"(fe)"}]']}}}
- {id:"minecraft:gold_nugget",tag:{display:{Name:'[{"text":"Aurin","color":"gold","bold":true}]',Lore:['[{"text":"(au)"}]']}}}
So the respective give commands would be:
- /give @s gold_nugget{display:{Name:'[{"text":"Aurin","color":"gold","bold":true}]',Lore:['[{"text":"(au)"}]']}} 1
- /give @s iron_nugget{display:{Name:'[{"text":"Ferrin","color":"gray","bold":true}]',Lore:['[{"text":"(fe)"}]']}} 1
Though you can always use the helpers /function traders:helper/give_aurin and /function traders:helper/give_ferrin if you need example coins.
Individual trades can be modified by altering data stored in the traders:<level>_<profession> storage (i.e. apprentice mason trades would be stored in 'traders:apprentice_mason'). Each 'trades' entry within these data storage locations is a list of complete trades in a style identical to the Offers.Recipes data path for a villager. Every time a villager of a given profession advances to a given level, up to four trades from the corresponding storage location are chosen at random. By altering the trade details in storage, you can alter the trades that new villagers receive. For instance, the following command would make the first novice farmer trade (8 Ferrins for 12 Wheat Seeds) only cost 4 ferrins:
- /data modify storage traders:novice_farmer trades[0].buy.Count set value 4
This has several caveats:
- You cannot easily affect explorer maps, enchanted diamond armor, diamond tools, diamond weapons, bows, crossbows, tipped arrows, or enchanted book trades, as these are a bespoke system. If you are interested in altering these, I recommend you look into the code and/or send me a message.
- These changes will not retroactively affect villagers that have already received their trades.
- These changes will not persist if the world or datapacks are reloaded. There are ways around this - removing the datapack's setup function from the minecraft:load tag on subsequent world starts, or adding another datapack containing your changes that runs *after* the trading load finishes, or just adding your changes to the end of the 'traders/traders_setup.mcfunction' file.
Please get in touch if you have any more detailed requirements or questions about the underlying setup; I don't always have a lot of spare time but will do my best to get back to you!
- {id:"minecraft:iron_nugget",tag:{display:{Name:'[{"text":"Ferrin","color":"gray","bold":true}]',Lore:['[{"text":"(fe)"}]']}}}
- {id:"minecraft:gold_nugget",tag:{display:{Name:'[{"text":"Aurin","color":"gold","bold":true}]',Lore:['[{"text":"(au)"}]']}}}
So the respective give commands would be:
- /give @s gold_nugget{display:{Name:'[{"text":"Aurin","color":"gold","bold":true}]',Lore:['[{"text":"(au)"}]']}} 1
- /give @s iron_nugget{display:{Name:'[{"text":"Ferrin","color":"gray","bold":true}]',Lore:['[{"text":"(fe)"}]']}} 1
Though you can always use the helpers /function traders:helper/give_aurin and /function traders:helper/give_ferrin if you need example coins.
Individual trades can be modified by altering data stored in the traders:<level>_<profession> storage (i.e. apprentice mason trades would be stored in 'traders:apprentice_mason'). Each 'trades' entry within these data storage locations is a list of complete trades in a style identical to the Offers.Recipes data path for a villager. Every time a villager of a given profession advances to a given level, up to four trades from the corresponding storage location are chosen at random. By altering the trade details in storage, you can alter the trades that new villagers receive. For instance, the following command would make the first novice farmer trade (8 Ferrins for 12 Wheat Seeds) only cost 4 ferrins:
- /data modify storage traders:novice_farmer trades[0].buy.Count set value 4
This has several caveats:
- You cannot easily affect explorer maps, enchanted diamond armor, diamond tools, diamond weapons, bows, crossbows, tipped arrows, or enchanted book trades, as these are a bespoke system. If you are interested in altering these, I recommend you look into the code and/or send me a message.
- These changes will not retroactively affect villagers that have already received their trades.
- These changes will not persist if the world or datapacks are reloaded. There are ways around this - removing the datapack's setup function from the minecraft:load tag on subsequent world starts, or adding another datapack containing your changes that runs *after* the trading load finishes, or just adding your changes to the end of the 'traders/traders_setup.mcfunction' file.
Please get in touch if you have any more detailed requirements or questions about the underlying setup; I don't always have a lot of spare time but will do my best to get back to you!
Compatibility | Minecraft 1.20 |
Tags |
1 Update Logs
v1.3: Updated to 1.20.1 : by Tectane12 08/05/2024 11:00:06 pmAugust 6, 2024 @ 3:00 am UTC
- Updated pack to function on version 1.20.1
- Update: Trades now feature blocks added since 1.17 such as froglight, mangrove and cherry woods, goat horns, echo shards, new boats, etc.
- Update: Rearranged trades to fill out some of the sparser professions and make the traded items more reliably useful to players
- Rebalancing: Increased the amount that can be exchanged before a villager runs out of uses of a specific trade.
- Rebalancing: Experience gained by villagers as a result of trades is now proportional to the price of a trade.
- Rebalancing: Experience gained by players as a result of trades requires the price of items purchased to be higher than 8 Aurins, to avoid the easy access to experience that low-value trades provide.
- Bugfix: Fixed an empty trade for Master-level Fisherpersons.
- Bugfix: Fixed an empty trade for Master-level Fletchers.
- Update: Trades now feature blocks added since 1.17 such as froglight, mangrove and cherry woods, goat horns, echo shards, new boats, etc.
- Update: Rearranged trades to fill out some of the sparser professions and make the traded items more reliably useful to players
- Rebalancing: Increased the amount that can be exchanged before a villager runs out of uses of a specific trade.
- Rebalancing: Experience gained by villagers as a result of trades is now proportional to the price of a trade.
- Rebalancing: Experience gained by players as a result of trades requires the price of items purchased to be higher than 8 Aurins, to avoid the easy access to experience that low-value trades provide.
- Bugfix: Fixed an empty trade for Master-level Fisherpersons.
- Bugfix: Fixed an empty trade for Master-level Fletchers.
4924735
119
Create an account or sign in to comment.
If I may improve my "banker villager" suggestion, maybe you could make some use of emeralds, since they've been now completely removed from their original value. Maybe, the banker (villager who converts aurins and ferrins freely, 1 Aurin = 8 Ferrins, 8 Ferrins = 1 Aurin) could have the "Emerald" as one of their trading options, which has the value of 8 Aurins (so, 64 Ferrins). In that way, you could convert a large amount of ferrins/aurins in Emeralds and travel, to exchange them back to aurins and ferrins once you arrive a new village!
Add me on discord, if you want, so we can further discuss this idea. If you don't feel like updating the datapack anymore, I can help. Just teach me, for I have no knowledge on programming datapacks for minecraft.
Discord: alexvilanova
EDIT: I just realized Nitwits will buy emeralds. Nice catch!
I created an account on this website just to congratulate you and, if I may, ask you a question: how can I convert ferrins into aurins? I mean, every villager I've spoken to so far has the other way around option, converting 1 Aurin into 8 Ferrins. But I have tons of ferrins and I want them to become Aurins. Is there a specific villager?
Maybe you should choose a villager to become "banker", so you can convert aurins and ferrins freely. I also wanted to ask if the datapack is multiplayer friendly, since I've been wanting to invite my friends over.
Best regards,
vilanova
just redownloaded to make sure i'm using a clean up-to-date version and it's the same offer on a trade with the first master librarian, offered 34 aurins for 12 lapis. considering this unintended
There's quite a few things like it (clocks are another big one, and of course individual diamonds are worth an awful lot) where we're used to treating items that don't have much 'high use' in game as worth less than items that get used up all the time, even though lapis is a valuable gemstone in real life. Part of the datapack is all about making it still worth it to collect lapis when mining if you want to because you'll be able to sell it to somebody, rather than ignore it because you already have all you'll ever need.
But, if you find it breaks the experience significantly in practice, I'll put it on the list of tweaks for next release. Thanks for finding that and giving your response to it.
I'm really glad you're able to get what you want from this out of changing the code :) apologies I've not the time at the moment to make the system as configurable on its own as ideal it would be. Let me know if you're ever hung up trying to find something, I can probably remember where it's at!