ToLazyToThink

1.14.4-1.15 Villager Gossip and Discounts

Dec 26th, 2019
637
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.01 KB | None | 0 0
  1. #Gossip
  2.  
  3. There are 5 types of gossip:
  4. * trading - +2 per trade, max 25, reduces over time
  5. * minor_positive - +25 for cure, max 200, reduces over time
  6. * major_positive - +20 for cure, max 100, permanent
  7. * minor_negative - +25 per hit, max 200, reduces over time
  8. * major_negative - +25 per murder, max 100, reduces over time
  9.  
  10. Gossips (except major positive) are traded with nearby villagers at a reduced value (-20 trading, -5 minor positive/negative, -10 major negative).
  11.  
  12. Gossips (except major positive) reduce in value every 20min (1 day). -2 for trading, -1 for minor positive, -20 for minor negative, -10 for major negative, while major positive never decays. To put it another way, it will take a villager 2 days to forgive you for hitting him and 3 days to forgive you for killing his neighbor. The temporary minor positive from curing a zombie villager will take 25 days to fade. This is why the discount for curing a villager will seem to disappear long after you’ve cured him. The major positive is still in effect, but the minor positive has faded. For this reason, I recommend always curing your villagers the maximum 5 times.
  13.  
  14. A villager's current gossips can be seen using (requires op):
  15. /data get entity @e[type=villager, limit=1, sort=nearest] Gossips
  16.  
  17. The next section describes how these gossip values change the prices of villager trades.
  18.  
  19.  
  20. #Discounts
  21.  
  22. Discounts involve gossip, item demand, and the Hero of the Village effect. I will give the full formula here, but have mainly tested the gossip values and will concentrate on those.
  23.  
  24.  
  25. [(GossipDiscounts)] + DemandDiscount - HOTVDiscount + OriginalPrice = DiscountedPrice
  26.  
  27.  
  28. ##Demand Discounted Price
  29.  
  30. (if(Demand>0, Demand , 0) * OriginalPrice * PriceMultiplier) int
  31.  
  32. I'm not sure exactly how demand works. It didn't work in 1.14.4, probably due to the restocking bug. In 1.15 that has been fixed. I haven't tested extensively, but I have traded enough to see that demand can cause prices to change.
  33.  
  34. The wiki describes it like this, but note it's for Bedrock Edition:
  35.  
  36. ```
  37. In Bedrock Edition, the price of an item can rise and fall with demand. If an item is traded, its price rises when resupplied. If the price is higher and the player doesn't trade for that item, then the price is reduced the next time the item is resupplied. Demand is stored per item, not per villager, so a single villager can offer trades where some of the prices are higher than usual while some of the items are cheaper.
  38. ```
  39.  
  40. /data get entity @e[type=villager, limit=1, sort=nearest] Offers.Recipes[0].demand
  41. https://bugs.mojang.com/browse/MC-157136
  42.  
  43.  
  44. ##Hero of The Village (HOTV) Discount
  45.  
  46. - (.3 + HOTVLevel / 16) * OriginalPrice
  47.  
  48. HOTVLevel is 0 based, so Hero of the Village would be 0, Hero of the Village II would be 1 and so on.
  49.  
  50. Hero of the Village:
  51. I 30.00% discount
  52. II 36.25% discount
  53. III 42.50% discount
  54. IV 48.75% discount
  55. V 55.00% discount
  56.  
  57.  
  58. ##Gossip Discount
  59.  
  60. [(GossipMultiplier * GossipValue * PriceMultiplier) int]
  61.  
  62.  
  63. GossipMultiplier depends on the gossip type: -1 for trading and minor positive, -5 for major positive, +1 for minor negative, +5 for major negative
  64.  
  65.  
  66. GossipValue was explained in the first section.
  67.  
  68.  
  69. PriceMultiplier varies by trade. You can get the value from the wiki page or from the /data get command.
  70.  
  71. https://minecraft.gamepedia.com/Trading#Java_Edition_offers
  72. /data get entity @e[type=villager, limit=1, sort=nearest] Offers.Recipes[1].priceMultiplier
  73.  
  74.  
  75. For example:
  76.  
  77. The Fletcher will trade 32 sticks for 1 emerald with a price multiplier of .05.
  78.  
  79. If you cure the Fletcher once he will have 2 gossips:
  80. minor_positive: 25
  81. major_positive: 20
  82.  
  83. This will give:
  84. -1 * minor_positive * .05 + -5 * major_positive * .05
  85. = -1 * 25 * .05 + -5 * 20 *.05
  86. = -1.25 + -5
  87. = -1 + -5
  88. = -6
  89.  
  90. This brings the stick trade down from 32 to 26 sticks per emerald.
  91.  
  92. 5 cures will bring it down to 1:
  93. -1 * minor_positive * .05 + -5 * major_positive * .05
  94. = -1 * 125 * .05 + -5 * 100 *.05
  95. = -6.25 + -25
  96. = -6 + -25
  97. = -31
  98.  
  99. This will bring the stick trade down to 1 stick per emerald, but it will go up overtime as the minor positive decays. After 6 days, the minor positive will decay to 119 and the minor discount of 5.95 will round down to 5 raising the stick trade to 2 sticks per emerald. After 106 days, the minor positives will no longer apply and you will be left with only the major positive discount of 25 (7 sticks per emerald).
  100.  
  101. This is why it's usually best to cure a villager for the maximum 5 times to ensure you have the maximum major positive permanent discount. Otherwise, you may think you have the best possible price for an enchantment only to watch the price slowly go up as the minor positive discount decays.
  102.  
  103.  
  104. #Sources
  105.  
  106. This information comes from a combination of testing, the Gamepedia wiki, and a Reddit post by u/MukiTanuki
  107.  
  108. https://minecraft.gamepedia.com/Villager#Gossiping
  109. https://www.reddit.com/r/Minecraft/comments/biisll/when_you_cure_a_blacksmith_then_save_him_from_a/em1n0rg/
  110. https://bugs.mojang.com/browse/MC-157136
Add Comment
Please, Sign In to add comment