Chatting Villagers
Villagers speak context-aware lines in chat, matched to biome, time of day, weather, profession and situation, and hold short conversations with each other. You can build your own sentences database. English and German version included.
截图
介绍
Chatting Villagers
Villagers who finally have something to say.
Villagers speak context-aware lines in chat — as Name: line, in a colour of your choosing — matched to their profession, biome, the time of day, the weather and their situation. Two villagers standing close together hold conversations with each other, and lines can optionally appear as speech bubbles above their heads.
Every line lives in plain JSON files you can edit, extend, sort into categories and switch on or off with a single config line. Use the 2,500+ built-in lines, trim them to your taste, or replace them entirely with your server’s own lore.
All logic runs on the server and only real chat messages with finished text are sent, no translation keys. On Fabric, players without the mod can join and see everything. On NeoForge and Forge, server-only use has not been verified yet. To be safe, install the mod on clients there as well.
New in 1.1.0 – The Village Talks Back
- Now on Fabric, NeoForge and Forge – for Minecraft 1.20.1, 1.21.1 and 1.21.11 (see Compatibility)
- Line categories: control exactly which kinds of lines are loaded, from the built-in catalogue and your own files (see below)
- Fully custom dialogue: replace the built-in lines with your own, ideal for roleplay servers
- 735 new lines per language, over 2,500 in total, with new lines for every profession, every biome, times of day, weather, caves, the Nether and the End
- 136 new conversations, from quick two-liners to stories of up to ten lines
- Village mysteries: emeralds go missing, someone rings the bell at midnight, poppies appear on doorsteps… the villagers have their theories. Listen closely.
- Village life: the fisherman and the smiths can’t stand each other, the armorer and the weaponsmith are rivals, the librarian is fed up with people breaking his lectern, and everyone keeps an eye on the emerald market
- Villagers who trade now talk, too: now and then they say something when you open their trading menu
Existing installations receive the new lines automatically with the update. Your own edits stay untouched.
Language
English and German are included. English is the default. To switch, edit config/chattingvillagers.json:
"language": "de_de"
- or:
"language": "en_us"
Then run /chattingvillagers reload or restart the server. The language folder is created automatically on first use.
Because finished text is sent to clients, the language is a server setting, not a per-player one: everyone on a server sees the same lines. Additional languages are just another folder under config/chattingvillagers/dialogue/. No code changes needed, and translations are very welcome.
Shape your own line pool: categories and custom dialogue
Chatting Villagers is built to be your village’s voice. Every entry, whether built in or written by you, can carry an optional "category". One line in the config decides which categories are loaded:
"disabledCategories": ["popculture", "insider", "realworld"]
Lines without a category are always loaded. Change the list, run /chattingvillagers reload, done. No restart needed.
Built-in categories
| Category | Contains |
|---|---|
popculture |
References to films, series, books, games and anime |
insider |
Community in-jokes and memes (mostly from German internet culture) |
realworld |
Rare comments on real-world events |
| (none) | Everything that stays inside the Minecraft world: professions, biomes, village life, mysteries |
Disable all three and your villagers never break the fourth wall.
Your own categories
Categories are just text, so you can invent your own and switch them as you like:
winterfest,harvest_festival: seasonal event lines you enable for a weekwar_arc,plague_arc: story arcs on your roleplay server that end at some pointkingdom_north,kingdom_south: different lore per server or mapspoilers: lines that should only appear after players reached a certain point
All conditions (profession, biome, time of day, weather, dimension, state) work inside every category. A winterfest line can be limited to farmers in snowy biomes at night, for example.
Build your own line database
Option A – add to the built-in lines: drop new .json files into config/chattingvillagers/dialogue/<language>/ next to the existing ones. Optionally disable the built-in categories you don’t want.
Option B – your lines only: set "builtInDialogue": false in the config, delete the mod’s line files from the language folder, add your own and reload. The mod then never recreates its own lines. Only names.json and messages.json are kept, because villager names and command texts depend on them.
The file name decides the type, everything else is up to you:
| File name starts with | Loaded as |
|---|---|
conversations… (e.g. conversations_tavern.json) |
Conversations between two villagers |
reactions… (e.g. reactions_guards.json) |
Right-click reactions |
anything else (e.g. lore_kingdom.json) |
Solo lines |
A solo line with a category:
{
"id": "winter_farmer_1",
"type": "solo",
"category": "winterfest",
"conditions": { "profession": ["farmer"], "biome": ["snowy"] },
"weight": 1,
"text": "Three more nights until the Winterfest. I've saved my best pumpkins."
}
A conversation, where {other} is replaced with the partner’s name:
{
"id": "tavern_rumor_1",
"type": "conversation",
"category": "kingdom_north",
"conditions": { "timeOfDay": ["evening"] },
"weight": 1,
"lines": [
{ "speaker": "A", "text": "Have you heard, {other}? The king's banners were seen at the river." },
{ "speaker": "B", "text": "Then we'd better hide the emeralds." }
]
}
Save, run /chattingvillagers reload, and your villagers speak your world’s story.
Commands
| Command | Effect | Permission |
|---|---|---|
/chattingvillagers on / off / toggle |
Villager chat for yourself | everyone |
/chattingvillagers status |
Show your own setting | everyone |
/chattingvillagers frequency quiet / normal / busy |
How often villagers talk | OP (level 2) |
/chattingvillagers bubbles on / off |
Speech bubbles on/off globally | OP (level 2) |
/chattingvillagers chat on / off |
Chat output on/off (off = bubbles only) | OP (level 2) |
/chattingvillagers reload |
Reload config, categories and all line files | OP (level 2) |
/chattingvillagers debug |
Show the nearest villager’s context | OP (level 2) |
Any player can mute village chat for themselves with /chattingvillagers off. Everyone else keeps receiving it. The setting is stored per player UUID and survives restarts.
The built-in catalogue
The catalogue is written to config/chattingvillagers/dialogue/<language>/ on first start. Your own files and edits are never overwritten by an update. New lines arrive in separate files such as solo_update1.json.
Included per language:
| Pool | Entries |
|---|---|
| Solo lines | 899 |
| Conversations | 374 (1,109 lines) |
| Reactions | 531 |
| Total | 2,539 spoken lines |
Empty or missing conditions mean “always fits”. The weight controls how often a line comes up: 1 for normal lines, 0.2 or 0.1 for rare ones. Handy for the references and easter eggs hidden throughout the catalogue.
/chattingvillagers debug shows the nearest villager’s context and how many lines and conversations currently match. Very useful while writing your own.
Context-aware lines
Every line can carry conditions; when several fit, one is drawn at random by weight. Taken into account:
- Time of day: morning, day, evening, night, plus finer markers for waking and going to bed.
- Weather at the villager’s position: clear, rain, thunder. A villager under a roof inside a rainy area still counts as being in the rain.
- Profession: all 13 vanilla professions, plus jobless villagers, nitwits and wandering traders.
- Biome: 34 categories, from desert and taiga to mushroom fields, dripstone caves and deep dark.
- Dimension and location: Overworld, Nether (with dedicated crimson, warped, soul sand and basalt lines), the End. The mod also distinguishes underground from surface: standing indoors under a roof still counts as the surface, deep below with no sky gets cave lines.
- Nearby portals: a Nether or End portal next to a villager gets commented on.
- State: low health, recently hurt, currently trading, alarmed by the village bell.
Conversations and reactions
Two villagers standing close enough start an exchange: A says something, B replies after a slightly randomised delay. Most conversations are short, the longest run to ten lines. Names are inserted via placeholders, so they genuinely address each other. Conversations end cleanly if a participant dies, changes dimension or wanders off, and each pair has its own cooldown.
Right-click a jobless villager or nitwit (one that only shakes its head in vanilla) and it answers every time. Villagers with a profession open their trading menu exactly as before, and now and then (25 % by default) they also say something fitting to their trade. The head shake, sounds and trading itself are untouched.
Speech bubbles
Optionally, the spoken line also appears above the villager, using vanilla text displays. The bubble faces the player, moves along, and disappears by itself. Bubbles are non-persistent and cleaned up consistently: on expiry, on death, on server shutdown, and orphans are removed on load. Nothing accumulates in your world save.
If you’d rather keep chat clear, turn chat output off and run the mod with speech bubbles only.
Anti-spam: chat stays readable
Villagers speak only within a configurable radius of a player, checks run at intervals rather than every tick, each villager has a cooldown, not everyone speaks at once, there’s a hard per-player cap on messages per minute, the same line is never repeated twice in a row, nights are quieter by default, and sleeping villagers, babies and zombie villagers stay silent.
Three frequency presets change all the relevant values together: quiet, normal and busy. Switchable in game, no config editing required.
Villager names
The displayed name is the villager’s custom name. The Villager Names mod by Serilum assigns those automatically and pairs very well with this one. It is not required: without a custom name, the mod falls back to the profession name (Farmer, Librarian, Wandering Trader …), and failing that, to “Villager”. Name colour and text colour are configured separately.
Configuration
config/chattingvillagers.json, created with defaults on first start. All values can be applied in a running game with /chattingvillagers reload.
| Setting | Default | Meaning |
|---|---|---|
masterEnabled |
true |
Master switch |
language |
en_us |
Language folder for the text catalogue |
builtInDialogue |
true |
false = use only your own line files |
disabledCategories |
[] |
Categories that are not loaded (built-in or your own) |
chatColor / nameColor |
white / gold |
Colour of the text and the name |
radius |
16.0 |
Hearing range around the player, in blocks |
speakIntervalTicks |
100 |
Check interval |
speakChance |
0.35 |
Chance to speak per interval |
villagerCooldownSeconds |
45 |
Per-villager cooldown |
maxMessagesPerPlayerPerMinute |
6 |
Per-player rate limit |
chanceFactorMorning … Night |
1.0 / 1.0 / 1.0 / 0.3 |
Factor per time of day |
conversationsEnabled |
true |
Villager conversations |
conversationChance |
0.15 |
Chance of a conversation |
conversationRadius |
5.0 |
Maximum distance between participants |
pairCooldownSeconds |
120 |
Per-pair cooldown |
conversationLineDelayTicks |
40 |
Pause between lines |
bubblesEnabled |
true |
Speech bubbles |
bubbleLifetimeTicks |
60 |
How long a bubble is shown |
chatMessagesEnabled |
true |
Chat output |
reactionsEnabled |
true |
Right-click reactions |
reactionCooldownTicks |
30 |
Cooldown between reactions |
tradeReactionChance |
0.25 |
How often trading villagers react (0 = never) |
portalScanRadius |
4 |
Range of portal detection (0 = off) |
frequencyPreset |
normal |
Active preset (display only) |
Compatibility
| Minecraft | Fabric | NeoForge | Forge | Java |
|---|---|---|---|---|
| 1.20.1 | ✅ | – | ✅ | 17 |
| 1.21.1 | ✅ | ✅ | ✅ | 21 |
| 1.21.11 | ✅ | ✅ | – | 21 |
- Please download the file that matches both your Minecraft version and your mod loader
- The Fabric version requires the Fabric API
- Fabric: installing the mod on the server is enough, players don’t need it
- NeoForge / Forge: install it on the server and, to be safe, on the clients too
- No mixins at all: trading, professions, breeding and gossip are untouched
- Data packs and world generation are not affected
- Fully compatible with Villager Names by Serilum (optional, not required)
Planned
- Optional data pack support for the line catalogue
- More languages, contributions welcome
License
MIT: use it, change it, put it in your modpack. A credit is always appreciated.
常见问题
Chatting Villagers 支持哪些 Minecraft 版本?
Chatting Villagers 支持 Minecraft Java 版 1.20.1–1.21.11,共 3 个版本,可用的加载器:Fabric / Forge / NeoForge。下载时注意选择和你游戏版本一致的文件。
Chatting Villagers 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / Forge / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
评论
登录后评论和评分