没有闲聊

没有闲聊

使用简单的客户端JSON规则隐藏选定的聊天/系统消息。

以简洁和模组包沉浸感为设计目标,NoChatter 提供了对不需要的聊天和系统消息的可配置控制,而不会替换聊天界面或改变服务器行为。

NoChatter 面向模组包作者和玩家,他们希望隐藏来自其他模组的特定重复消息,例如设置提示、兼容性警告或破坏沉浸感的通知。

规则定义在一个小型 JSON 配置文件中,并与通常会显示在聊天中的文本进行匹配。

当不需要的杂讯出现时,答案很简单:今天不行。

最新更新 - 版本 1.0.1

NoChatter 1.0.1 添加了便利性、稳定性和游戏体验改进。

亮点

  • 添加了可选配置,用于抑制传入的玩家聊天,同时将系统/模组聊天保留给现有规则处理
  • 添加了可配置的客户端玩家聊天距离过滤
  • 额外的稳定性和游戏体验改进

功能

  • 隐藏选定的聊天/系统消息
  • 可选地全局屏蔽传入的玩家聊天
  • 可选的玩家聊天距离过滤,并可配置范围
  • 基于 JSON 的配置
  • 支持简单的 contains 和 startsWith 匹配
  • 支持使用 containsAll 进行粗略短语匹配
  • 每条规则可选区分大小写匹配
  • 可选记录收到的消息,用于查找精确短语
  • 可选记录被抑制的消息,用于测试规则
  • 处理直接添加到客户端聊天组件的消息
  • 轻量且对模组包安全
  • 仅客户端

典型用例

  • 隐藏来自客户端实用模组的重复设置提示
  • 抑制破坏沉浸感的兼容性警告
  • 从聊天中移除嘈杂的模组包启动消息
  • 可选地隐藏传入的玩家聊天,同时保留系统消息和模组消息可用
  • 帮助模组包作者优化玩家体验

配置指南

NoChatter 使用以下文件进行配置:

config/nochatter.json

该文件会在首次启动时自动创建。

可以在游戏运行时进行更改。NoChatter 会在收到消息时再次检查配置,因此在测试新规则时通常不需要重启。

核心行为

enabled

控制 NoChatter 是否抑制消息。

默认:true

如果禁用,所有抑制规则都会被忽略。

logReceivedMessages

控制是否将每条收到的聊天/系统消息写入日志。

默认:false

当你需要查找要抑制的消息的精确文本时,可临时启用此项。

logSuppressedMessages

控制是否将被抑制的消息写入日志。

默认:true

在测试规则时很有用。一旦你的配置正常工作,可以禁用此项以保持日志安静。

消息规则

规则列在 rules 下。

每条规则可以使用一个或多个匹配选项。

label

规则的友好名称。

仅用于日志。

enabled

控制这条单独规则是否启用。

默认示例规则处于禁用状态。

caseSensitive

控制匹配是否区分大小写。

默认:false

contains

抑制包含此文本的消息。

startsWith

抑制以此文本开头的消息。

containsAll

抑制包含所有列出的文本片段的消息。

当完整消息可能略有变化时,这可用于粗略匹配。

blockAllPlayerChat

抑制所有通过 Minecraft 玩家聊天频道收到的消息。

默认:false

proximityPlayerChat

将收到的玩家聊天消息限制为配置距离范围内的玩家。

默认:false

proximityChatDistance

设置启用距离聊天时,显示玩家聊天消息的最大距离(以方块为单位)。

默认:50.0

注意 - 系统、服务器和模组消息仍会保持可见,除非被配置的规则匹配。

示例配置

{
  "enabled": true,
  "blockAllPlayerChat": false,
  "proximityPlayerChat": false,
  "proximityChatDistance": 50.0,
  "logReceivedMessages": false,
  "logSuppressedMessages": true,
  "rules": [
    {
      "label": "simple_voice_chat_setup_hint",
      "enabled": true,
      "caseSensitive": false,
      "contains": "Press V to set up",
      "startsWith": "",
      "containsAll": []
    },
    {
      "label": "iv_entity_culling_warning",
      "enabled": true,
      "caseSensitive": false,
      "contains": "IV HAS DETECTED THAT ENTITY CULLING MOD IS PRESENT",
      "startsWith": "",
      "containsAll": []
    }
  ]
}

匹配示例

隐藏包含特定文本的消息

{
  "label": "guide_hint",
  "enabled": true,
  "caseSensitive": false,
  "contains": "Press H to open the guide",
  "startsWith": "",
  "containsAll": []
}

隐藏来自可见模组前缀的消息

{
  "label": "example_mod_prefix",
  "enabled": true,
  "caseSensitive": false,
  "contains": "",
  "startsWith": "[ExampleMod]",
  "containsAll": []
}

隐藏粗略短语

{
  "label": "chapter_unlock_hint",
  "enabled": true,
  "caseSensitive": false,
  "contains": "",
  "startsWith": "",
  "containsAll": [
    "You have unlocked",
    "chapter"
  ]
}

查找要抑制的消息

如果不确定要匹配什么文本,可临时启用:

{
  "logReceivedMessages": true
}

然后在游戏内触发该消息,并检查日志中类似以下的条目:

received chat source=chat_component text="[Simple Voice Chat] Press V to set up"

将文本中稳定的部分复制到规则中,然后再次禁用收到的消息日志记录。

兼容性

NoChatter 仅客户端,不需要在服务器安装。

它旨在处理通过 Minecraft 客户端聊天组件添加的消息,包括可能不会经过普通聊天事件的消息。

NoChatter 不会替换聊天界面、全局屏蔽玩家聊天或修改服务器端消息行为。

玩家聊天可以选择通过 blockAllPlayerChat 进行抑制。这仅适用于通过 Minecraft 玩家聊天频道收到的消息;系统、服务器和模组消息仍需遵循配置的规则。

报告问题

如果你遇到与其他模组的兼容性问题,或发现某种机器设置行为不正确,请通过项目问题追踪器报告,以便进行调查。

如果某条消息没有被抑制,请启用 logReceivedMessages,复现该消息,并在报告问题时附上相关的 NoChatter 日志行。