
闲聊的村民
村民会在聊天中说出符合情境的台词,与生物群系、时间、天气、职业和情境相匹配,并彼此进行简短对话——此功能在服务器端运行,因此你的朋友无需安装任何东西。
查看大图闲聊村民
终于有话可说的村民。
村民会在聊天中说出与情境相关的台词——格式为 名字:台词,并采用你选择的颜色——台词与他们的职业、生物群系、一天中的时间、天气和处境相匹配。两个站得很近的村民会互相进行简短的对话,台词也可以选择以说话气泡的形式显示在他们头顶。
该模组完全在服务器端运行。每位玩家都会看到相同的台词,包括未安装该模组的玩家——发送的是文本已完成的真实聊天消息,而非翻译键。原版客户端可以正确显示所有内容。
语言
内置英语和德语。默认语言为英语。 要切换语言,请编辑 config/chattingvillagers.json:
"language": "de_de"
- 或:
"language": "en_us"
然后运行 /chattingvillagers reload 或重启服务器。语言文件夹会在首次使用时自动创建。
因为发送给客户端的是已完成文本,所以语言是服务器设置,而非玩家个人设置——服务器上的所有玩家看到的台词相同。其他语言只需在 config/chattingvillagers/dialogue/ 下新建一个文件夹即可;无需修改代码,并且非常欢迎翻译贡献。
命令
| 命令 | 效果 | 权限 |
|---|---|---|
/chattingvillagers on |
off |
toggle |
/chattingvillagers status |
显示你自己的设置 | 所有人 |
/chattingvillagers frequency quiet |
normal |
busy |
/chattingvillagers bubbles on |
off |
全局开启/关闭说话气泡 |
/chattingvillagers chat on |
off |
开启/关闭聊天输出(关闭 = 仅气泡) |
/chattingvillagers reload |
重载配置和文本目录 | OP(2级) |
/chattingvillagers debug |
显示最近村民的情境信息 | OP(2级) |
任何玩家都可以使用 /chattingvillagers off 为自己屏蔽村民聊天——其他玩家仍会继续收到消息。该设置按玩家UUID存储,并在服务器重启后保留。
编辑和扩展台词——无需重新编译
整个文本目录以 JSON 形式提供,并在首次启动时写入 config/chattingvillagers/dialogue/<语言>/。你可以修改台词、删除台词、添加自己的台词,然后在游戏运行中用一条命令重载。你自己的文件永远不会被更新覆盖。
每种语言包含:
| 类别 | 条目数 |
|---|---|
| 独白台词 | 767 |
| 对话 | 238(616行) |
| 反应 | 421 |
| 总计 | 1804句语音台词 |
格式刻意保持简单——一个条目、其条件、权重、文本:
{
"id": "farmer_morning",
"type": "solo",
"conditions": {
"profession": ["farmer"],
"timeOfDay": ["morning"]
},
"weight": 1,
"text": "Out in the field early - that's how I like it."
}
条件为空或缺失意味着“始终适用”。权重控制台词出现的频率:1 用于普通台词,0.2 或 0.1 用于稀有台词——这很方便用于目录中隐藏的引用和彩蛋。语言文件夹中任何额外的 .json 文件都会自动作为新的独白台词池加载。
/chattingvillagers debug 在此会很有帮助:它会显示最近村民的情境信息以及当前匹配的台词和对话数量。
情境感知台词
每句台词都可以带有条件;当有多个条件匹配时,会按权重随机抽取一句。考虑的因素包括:
- 一天中的时间 —— 早晨、白天、傍晚、夜晚,以及用于起床和睡觉的更精细标记。
- 村民位置的天气 —— 晴天、雨天、雷暴。在雨天区域中、屋顶下的村民仍会被视为处于雨中。
- 职业 —— 所有13种原版职业,以及无职业村民、傻子村民和流浪商人。
- 生物群系 —— 34个类别,从沙漠和针叶林到蘑菇岛、滴水石洞和深暗之域。
- 维度与位置 —— 主世界、下界(有专门的绯红、诡异、灵魂沙和玄武岩台词)、末地。该模组还能区分地下与地表:在屋顶下室内站立仍算地表,而在深处无天空处则会触发洞穴台词。
- 附近的传送门 —— 村民旁边的下界或末地传送门会被评论。
- 状态 —— 生命值低、最近受伤、正在交易。
对话与反应
两个站得足够近的村民会开始简短交流:A说些什么,B在略微随机的延迟后回复,较长的对话可长达八行。名字通过占位符插入,因此他们确实会互相称呼对方。如果参与者死亡、更换维度或走开,对话会干净地结束,并且每对村民都有自己的冷却时间。
右键点击无职业村民或傻子村民——即原版中只会摇头的那种——他们会简短回应。摇头和声音效果仍会照常播放,而有职业的村民会像以前一样打开交易菜单。
说话气泡
可选地,说的台词也会显示在村民头顶。气泡面向玩家,随之移动,并自行消失。这也是服务器端的——所有玩家都能看到,无需客户端模组。气泡是非持久的,并会被一致地清理:到期、死亡、服务器关闭时都会清除,加载时也会移除孤立气泡。你的世界存档不会积累任何内容。
如果你更想保持聊天栏清爽,可以关闭聊天输出,以仅说话气泡模式运行模组。
反垃圾:聊天保持可读
村民只在玩家周围的配置半径内说话,检查按间隔进行而非每个tick,每个村民都有冷却时间,不会所有人都同时说话,每个玩家每分钟有硬性消息数量上限,同一句台词不会连续重复两次,夜晚默认更安静,并且睡觉的村民、小村民和僵尸村民保持沉默。
三个频率预设会一起更改所有相关数值:安静、普通和热闹——可在游戏中切换,无需编辑配置。
村民名字
显示的名字是村民的自定义名称——Serilum的村民名字(Villager Names) 模组会自动分配这些名字,与本模组配合得很好。该模组并非必需:如果没有自定义名称,本模组会回退到职业名称(农夫、图书管理员、流浪商人……),再不行就回退到“村民”。名字颜色和文本颜色分别配置。
配置
config/chattingvillagers.json,首次启动时随默认值创建。所有值都可以在游戏运行中通过 /chattingvillagers reload 应用。
| 设置 | 默认值 | 含义 |
|---|---|---|
masterEnabled |
true |
总开关 |
language |
en_us |
文本目录的语言文件夹 |
chatColor / nameColor |
white / gold |
文本和名字的颜色 |
radius |
16.0 |
玩家周围的听觉范围(以方块计) |
speakIntervalTicks |
100 |
检查间隔 |
speakChance |
0.35 |
每个间隔的说话几率 |
villagerCooldownSeconds |
45 |
每个村民的冷却时间 |
maxMessagesPerPlayerPerMinute |
6 |
每个玩家的速率限制 |
chanceFactorMorning … Night |
1.0 / 1.0 / 1.0 / 0.3 |
每天时段的几率系数 |
conversationsEnabled |
true |
村民对话 |
conversationChance |
0.15 |
触发对话的几率 |
conversationRadius |
5.0 |
参与者之间的最大距离 |
pairCooldownSeconds |
120 |
每对村民的冷却时间 |
conversationLineDelayTicks |
40 |
台词之间的停顿 |
bubblesEnabled |
true |
说话气泡 |
bubbleLifetimeTicks |
60 |
气泡显示时长 |
chatMessagesEnabled |
true |
聊天输出 |
reactionsEnabled |
true |
右键点击反应 |
reactionCooldownTicks |
30 |
反应之间的冷却时间 |
portalScanRadius |
4 |
传送门检测范围(0 = 关闭) |
frequencyPreset |
normal |
当前启用的预设(仅显示) |
兼容性
- Minecraft 1.21.1,Fabric——需要 Fabric API,Java 21
- 其他玩家不需要安装该模组;服务器端就足够了
- 没有对原版行为进行 mixin:交易、职业、繁殖和闲聊均未改动
- 不影响数据包和世界生成
- 与Serilum的村民名字(Villager Names)完全兼容(可选,非必需)
计划中
- 作为开/关命令替代方案的按键绑定
- 对台词目录的可选数据包支持
- 更多语言——欢迎贡献
许可证
MIT——自由使用、修改,放入你的整合包。若能注明出处,我们将不胜感激。
正在加载版本记录…






正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。