mojira.dev
MC-264386

Villager NBT Data completely broken

Many NBT values of villagers are not their correct values. The main issue which actually affects gameplay is the "bleedover" of a low negative demand value for one offer of a villager affecting all the other demand values for that single villager. Wiki states "Demand is tracked per item, not per villager, so a villager can offer a higher-priced trade for a single item while other items are cheaper. Trades that have a price multiplier of 0 are not affected by demand." and while it's true that demand is tracked per item, it is very strange for the demand of one item to affect the demand of another item. (if there are less apples orchards, i would expect the apple prices to drop, but i would expect the price of oranges, or literally anything else to remain steady?)

Proof is under Villager NBT.png : I never traded 1 emerald +10 gravel for 10 flint, but the demand value is incredibly low. I have traded significantly 32 sticks for 1 emerald, but the demand value is somehow even lower. This low demand value is associated with the fletcher now offering the discount of 5 sticks for 1 emerald when they are supposed to offer the discount of 1 stick for 1 emerald, as they have the gossip values of minor_positive 20, trading 4, as well as major_positive 100 (the max value from curing the villager 5 times.

New Villager Demand Bleedover.png shows the NBT data of a villager recently cured and made a cleric, where the same bleedover is observed as the demand value is no longer 0 for offers ive never traded with ever.

Other issues include LastGossipDecay to be unoperational (reaching a value of 10,000,000 (ticks?) which is likely the age of the world), as well as LastRestock.
The Age value of villagers remains at 0, and ForcedAge value is also 0. This coud possibly maybe be working as intended, but it is confusing and i would really like an explaination of what these values are recording.

Attachments

Comments 3

The software I used to read the NBT data of the world is NBTExplorer. It is almost certainly working as intended

You know you can just get this info in-game with /data get, rather than a 3rd party tool, right?

Also, please only report 1 issue per ticket.

LastGossipDecay is the last game tick gossip has decayed, not a countdown.
Age and ForcedAge are for all mobs that can breed, negative age = baby, positive age = breeding cooldown, forced age = age value to get when age turns 0 (so feeding a baby mob to adulthood has a breeding cooldown). These are not specific to villagers, but because they can breed, they get all the NBT that breedable mobs get, even if you can't feed their babies. (You could literally find this on the wiki you so nicely quoted.)

Please give simple steps to reproduce and expected/observed result

Kevin Cao

(Unassigned)

Unconfirmed

(Unassigned)

1.20.1

Retrieved