I'm trying to make it so that when a villager runs out of stock of a specific trade, it removes that trade from the villager.

I'm stuck at the part where I remove the trade. So far I can only wipe the villager's trades or add a new trade, but not remove a specific trade.

I've tried using

/data modify with the path : Offers.Recipes[{buy:{id:”minecraft:stone”},sell:{id:”minecraft stone”}}]

I've also tried it with the Count tag, but it does not work either.

  • Welcome to Arqade! Could you please specify what you have tried? – fasterthanlight Jul 29 '20 at 18:15
  • ive tried /data modify entity @e[type=“minecraft:villager”] Offers.Recipes[trade] insert 1 value newtrade Ive also tried this for append set merge and prepend and am usure if my target path is sufficent for what i am trying to do. – Ironotor Jul 29 '20 at 18:49
  • im trying to make a datapack that adds a quest system to minecraft. the quests are started by quest items sold by villagers. i want the quests trades to be removed when they run out of stock but still keep the original trades that the villagers have. this way i can refresh the quests trades after a certain amount of time. – Ironotor Jul 29 '20 at 19:01
  • 1
    It would be better if you put that content from the comment into your post by editing it. – fasterthanlight Jul 29 '20 at 19:48

Instead of using /data modify, use /data remove.

/data remove @e[type=villager,name="TheVillagerToActUpon",limit=1] Offers.Recipes[{buy:{id:"minecraft:stone"},sell:{id:"minecraft:stone"},Uses:5}]

Replace the 5 in Uses:5 to say how many times the trade can be used. Put the command in a repeating command block.

  • Thanks! it took a bit of tinkering but i was able to remove a trade using this! – Ironotor Jul 29 '20 at 19:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.