Links
Tags
Creators
Details
1.1.1
Compatibility
Changes
VoxLink v1.1.1 更新公告
v1.1.1 为 v1.1.0 之后的安全性更新,集中修复了联机鉴权、打洞协议认证与界面问题。建议所有用户尽快升级。
下载
覆盖 Minecraft 1.20 - 26.2,共 25 个构建,按 voxlink-1.1.1-<MC版本>-<加载器>.jar 选择与你游戏版本和加载器对应的文件:
| 加载器 | 覆盖版本 |
|---|---|
| Fabric | 1.20 / 1.20.1、1.20.2 - 1.20.6、1.21 - 1.21.5、1.21.6 - 1.21.8、1.21.9 - 1.21.10、1.21.11、26.1 - 26.1.2、26.2 |
| Forge | 1.20 / 1.20.1、1.20.2 - 1.20.4、1.20.6、1.21 - 1.21.5、1.21.6 - 1.21.8、1.21.9 - 1.21.10、1.21.11、26.1 - 26.1.2、26.2 |
| NeoForge | 1.20.1、1.20.4 - 1.20.6、1.21 - 1.21.5、1.21.6 - 1.21.8、1.21.9 - 1.21.10、1.21.11、26.1 - 26.1.2、26.2 |
安全修复
局域网房主特权提权漏洞(重要)
旧版在局域网联机中以「玩家名 == 房主名」判定房主特权。离线模式下玩家 UUID 由用户名派生,攻击者只需以与房主相同的名字创建离线档案进房,即可获得 op / ban / kick 等房主特权。
v1.1.1 引入启动快照机制:整合服务器启动瞬间对在场玩家做一次 UUID 快照,此后仅快照内的玩家被视为房主。「Open to LAN」必然发生在房主进入世界之后,因此任何后来者无论同名还是同离线 UUID,都不再可能获得房主特权。
打洞协议认证(punchAuthV1)
旧版打洞控制报文与可靠 UDP 数据帧缺少来源校验,链路上的第三方可注入伪造报文干扰打洞或重置会话。
v1.1.1 新增报文认证:双方基于房间码与加入者 ID 确定性派生密钥,对打洞控制报文与可靠 UDP 数据帧附加 HMAC-SHA256 校验,可抵御路径上的盲目注入与伪造源报文。认证经能力协商自动启用,无需任何配置;与旧版本互连时保持原有字节格式,互通性不受影响。
P2P 隧道握手认证与资源限制
为 P2P 中继隧道握手增加认证,并对解压操作增加体积上限,防止异常构造的数据包导致内存耗尽。
界面与体验改进
按钮状态置灰,防止误操作
下载陶瓦期间,「加入时陶瓦」「删除陶瓦」「重新下载陶瓦」等按钮自动置灰,避免误点击;下载结束后自动恢复。同理,在输入陶瓦房间号但陶瓦尚未就绪时,「加入房间」按钮会提前置灰并显示提示,替代原先「点击后才发现不可用」的体验。
其他界面修复
- 修复主界面在低分辨率窗口下控件重叠、按钮错位的问题
- 修复部分界面上按钮纵向位置冲突导致的显示异常
- 移除每 250ms 的界面整体重建循环,界面打开更流畅,不再出现周期性闪烁与卡顿
- 修复 Forge 1.21 - 1.21.5 版本鼠标点击事件被错误拦截的问题
稳定性与内部改进
- 补齐多个 Forge / NeoForge 版本目录中缺失的打洞阶段连接状态转移,各版本打洞流程行为一致
- 修复更新检查功能中的版本号拼接与下载镜像地址,更新提示指向正确的发布地址
- 对齐 10 个版本的 mixins 元数据兼容级别,消除潜在的字节码注入警告
- 命令注册与执行路径规范化修正
关于日志上传
日志上传默认开启,这是刻意的设计:联机问题(尤其是打洞失败)高度依赖运行现场信息,默认开启可以让你在求助时直接拿到关键日志,大幅提升排查效率,也为打洞体验的持续优化提供数据支持。上传内容仅为排查联机问题所需的运行日志,不包含账号凭据等敏感信息。
如果你介意,随时可以在主界面一键关闭,关闭状态会被记住,之后不会再上传。
升级说明
- 建议房主与所有成员同时升级至 v1.1.1
- 新旧版本混连仍可正常互连(协议自动协商兼容),但请尽快全员跟进以获得安全修复
- 服务端无需任何配置变更
反馈
遇到问题请在 GitHub Issues 反馈,默认开启的日志上传会让你提供的线索完整得多。
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:qqeQJjgq:EVWgF8NO"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:qqeQJjgq:EVWgF8NO"
}

