语音消息

语音消息

在聊天框中发送语音消息

语音消息

语音消息是一款基于 NeoForge 1.21.1 的 Minecraft 模组,允许玩家录制简短的语音消息,并通过聊天栏中可点击的消息发送给其他玩家——无需外部语音服务器或账号。

  • ✅ 服务端权威配置(防滥用、限流)
  • ✅ 支持单人游戏、局域网和专用服务器
  • ✅ 免费安装:即使对方没有安装模组也能正常游玩

模组介绍

录制一段简短的语音片段,只需按下一个按键,它就会以绿色、可点击的消息广播到聊天栏中。任何点击它的玩家都能立即听到你的声音——音频按需下载,并在本次会话中本地缓存。

功能特性

  • 按 V 键录音 —— 按住开始录音,松开即发送。可在原版控制界面中重新绑定按键。
  • 屏幕顶部的绿色 BOSS 血条 HUD 显示剩余录音时间(倒计时)。
  • 点击即可播放的可点击聊天消息,在你完成录音后广播给所有人。
  • 点击播放 —— 客户端先检查本地缓存,命中则立即播放;未命中则下载、缓存并播放。
  • 麦克风音量(0–200%),可在配置界面中通过滑块调节。
  • 速率限制 / 防刷屏 —— 可配置的玩家在滚动 5 分钟窗口内可发送语音消息数量上限,由服务端强制执行。
  • 服务端权威的音频配置 —— 最大录音时长、采样率、比特率、编解码器(WAV/OPUS)以及服务端缓存清理间隔。
  • 临时本地缓存 —— 关闭游戏或离开服务器时自动清除。
  • 故障安全兼容性:
    • 服务端未安装模组 → 客户端的语音功能被静默禁用;你仍然可以加入。
    • 客户端未安装模组 → 服务端仅忽略其(不存在的)语音流量。
  • 非游戏线程音频处理 —— 音频捕获、编码、解码和播放永远不会阻塞游戏线程。

使用方法

  1. 将 voicemessage-<版本>.jar 放入客户端的 mods/ 文件夹中(如果你希望语音在服务端生效,也把它放入服务端的 mods/ 文件夹)。
  2. 加入同样运行该模组的服务器。
  3. 按住 V 开始录音——绿色血条会倒计时剩余时间。
  4. 松开 V 发送。松开过快(< 150 毫秒)会丢弃该片段。
  5. 每个人都会在聊天栏中看到你的消息;点击即可播放音频。

命令

命令 说明
/voicemessage play <uuid> 播放指定的语音消息(由可点击的聊天消息使用)。

权限

该模组通过 NeoForge 权限 API 暴露了两个权限节点。两者默认 对所有玩家授予,因此模组无需权限插件即可工作。使用 LuckPerms 来控制谁能发送或接收语音消息:

节点 默认值 效果
voicemessage.send true 允许录制和发送语音消息。
voicemessage.receive true 允许查看和播放其他玩家的语音消息。

LuckPerms 示例(先限制所有人,再授予某用户组权限):

/lp group default permission set voicemessage.send false
/lp group default permission set voicemessage.receive false
/lp group vip permission set voicemessage.* true

配置

服务端(config/voicemessage-server.toml):

键 默认值 说明
maxRecordingSeconds 30 最大录音时长(秒,1–300)。
sampleRate 16000 音频采样率(Hz,8000–48000)。
bitrate 24000 音频比特率(bps,由 OPUS 使用)。
codec WAV WAV 或 OPUS。
serverCacheClearInterval 300 服务端缓存清理的间隔秒数。
maxVoiceMessagesPer5Minutes 10 滚动 5 分钟窗口内最大语音消息数(0 = 不限)。

客户端(config/voicemessage-client.toml):

键 默认值 说明
microphoneVolume 100 麦克风音量百分比(0–200),应用于录音。
localCacheEnabled true 是否将会话中下载的消息缓存到磁盘。
localCacheMaxMb 256 本地缓存大小限制,超出后驱逐旧条目。

当游戏关闭或你离开服务器/世界时,本地缓存会自动清除。

OPUS 编解码器(可选)

Opus 使用纯 Java 的 Concentus 库,默认不捆绑。要启用它,请添加依赖,捆绑(JarJar/shading)并设置 codec = "OPUS"。没有 Concentus 的客户端会自动回退到 WAV。

构建

gradlew build

构建的 jar 位于 build/libs/voicemessage-<版本>.jar。

许可证

该模组根据 GNU 通用公共许可证 v3(GPL-3.0) 授权——见 许可证。项目脚手架由 NeoForged MDK 生成,仍受其 MIT 模板许可证保护——见 模板许可证。