A Minecraft village from above with the Villagers Remember errand tracker on the right

Villagers Remember: Quests and Trust for Minecraft Villagers, Server-Side

Villagers Remember is a mod for Minecraft 26.3, for Fabric and NeoForge, in which Minecraft villagers ask you for help and remember who helped them. It runs on the server, so players join with a normal vanilla client and install nothing. The first public beta, 0.13.0, is on CurseForge and GitHub. I publish it under my gaming name, SasnycoN.

Why I wanted it

In vanilla Minecraft a villager is a shop with a face. You trade with it and walk away. I have spent hours in trading halls and I couldn’t tell you the name of a single villager in them, because they don’t have one.

What I really wanted was something like Millénaire. I have been playing it since 2021, and my best friends in that world are the Byzantine traders of Istron, but Millénaire needs every player to install it. On our server my friends have one rule, the same one that gave me my other mod, Less Villager Chatter: nobody installs anything. So it had to use vanilla villagers and blocks and run entirely on the server.

Every villager is someone

Right-click a villager and they greet you based on what you’ve done for them. A stranger says “Hm. What do you want?” A villager you have helped for weeks says “You! The whole village talks about you.”

Two greetings from Minecraft villagers side by side: Boris the weaponsmith, a best friend, with 16% off, and Vela the librarian, who has never met you

Each villager keeps their own memory of you, so Stoyan the farmer can be your best friend while the butcher next door has never heard of you. They all have names now, mostly old Bulgarian ones (in English Мария simply becomes Maria), and every village gets one of 230 names, many of them real Bulgarian villages.

Trust takes time. In a new village only one villager dares to talk to you, the one with the “!” (duh) over their head, and every time you help someone, one more opens up. Trading works too: keep trading with a villager until they reach a new level and they warm up to you. The ones you have traded with a lot already know you, which means the trading hall you have used for ages opens up at once.

To move up a tier with a villager, points aren’t enough. They give you a trial of trust first, a harder errand that pays double. Pass it, and they hand you the next set of errands.

Errands that pay fairly

Every villager with a job has a few errands a day. There are 21 kinds of tasks: craft, smelt, mine, harvest, fish, breed, kill, brew, enchant, find a structure and so on. The farmer wants twenty wheat, while the cartographer sends you to find a shipwreck.

Kalcho the armorer wants two iron chestplates and gives one back enchanted

I spent most of the balancing time on one question: is this worth doing? An errand always pays more than the same goods would bring from a villager, so it never makes sense to just trade instead. A first errand takes about five minutes for someone with no farms. A top one takes half an hour and can’t be pulled out of a chest, like an elder guardian or two zombie villagers to cure.

Errands pay experience and standing. Emerald rewards are off by default, because emeralds are the currency of trading and I didn’t want to flood the server with them. A server that wants them turns them on with one command.

Your standing also sets your prices, right in the normal trading screen: up to 40% off with a best friend in a village where you are the Hero, and up to 50% more if you hurt the village.

Something for the whole server

The biggest jobs aren’t for one player. Once a game month every village posts an order for everyone, sized by how many people play regularly: 512 food before winter for each of them, or 256 logs to fix the roofs after a storm. Anyone brings any amount, and when it’s done everyone is paid by their share.

A village order for 256 logs, brought by anyone on the server

For the long run there are weekly contracts, legendary items named after the villager who gave them (“Stoyan’s Hoe”), fame titles in chat and one patron per village. The patron is the player with the most standing there. Anyone who does more takes the place, and the whole server hears about it.

How it works with a vanilla client

This was the most fun part to build. The client knows nothing about the mod, so everything you see has to be something vanilla already knows how to show.

The menus are the dialog screens Minecraft added for servers, and each button in them just runs a command on the server. The “!” and “?” over villagers’ heads are text displays, the same entities map makers use for floating text, while the list of errands on the right is the old sidebar scoreboard. Even the language is decided on the server: the client reports which one it uses, and the mod answers in it.

The village board at the bell: errands, residents, village order, treasury and your standing

One trap cost me some time. Villager names live in language files, and my first version kept them there as lists. Vanilla’s server-side language loader can’t handle lists in those files, so the names now live in files of their own.

The errands themselves are datapack JSON files, so a server can add its own.

Install

Take the file for your server’s loader:

  • Fabric: villagers-remember-0.13.0-beta.jar, with Fabric Loader 0.19 or newer and Fabric API
  • NeoForge: villagers-remember-neoforge-0.13.0-beta.jar, with NeoForge for 26.3

Drop it into the server’s mods folder. In singleplayer it works the same when installed on the client. Players with the mod on their client also get a settings screen, where server admins can change the server’s settings.

It’s a beta

It runs well on my test worlds, but a mod this size always has corners nobody has walked into yet. Balance is the part I’m least sure about, because five minutes of work for one player can be an hour for another.

The bigger plan comes after that. I’d like villages to grow the way they do in Millénaire, with villagers building new houses as the village prospers, and errands that send you to the next village over. That is still a long way off, but the mod already knows where each village ends and who lives in it, so it has somewhere to start.

If something breaks or feels off, come to the #villagers-remember channel on the ValcheffNet Discord. Write what happened in your own words and a person will answer. You don’t need a GitHub account for that.

Thanks

The villager heads in the screens come from Minecraft Heads, who kindly let me use them. Thank you.

Leave a Reply

Your email address will not be published. Required fields are marked *.

*
*