Links
Tags
Creators
Details
1.0.7
Compatibility
Changes
VoxLink 1.0.7 — 史诗级更新 (・ω・)ノ
对比 1.0.6 新增 4 大功能模块 + 20+ 关键 bug 修复,连接稳定性大幅提升。 支持 23 个 MC 版本 × 13 种语言,覆盖 1.20 ~ 1.21.11 和 26.1/26.1.1/26.1.2/26.2。
四大新增模块
1. 智能打洞系统
全新 NatClass/ProtocolNegotiator/PunchStrategy 等模块,实现:
- NAT 类型自动分类识别
- RTT 感知 + 失败历史感知(连续 3 次同原因自动切策略)
- 每轮打洞 socket 数递增,提高成功率
- 打洞失败原因智能分类
2. 陶瓦状态机 + CN 节点注入
- 完整状态机:Bootstrap / Waiting / Scanning / GuestOk / HostOk / Exception
- CN 时区节点自动注入(Asia/Urumqi/Chongqing/Harbin)
- 严格遵循 Terracotta 0.4.2 状态机硬约束
3. Android JNI 集成(抄 FCL)
- 不再用 ProcessBuilder 拉 .so,改为 JNI 直接调用
- 新增 TerracottaAndroidBridge + TerracottaVpnService + AndroidContextHelper
- VpnService 生命周期由前台服务承载
- 直接下载 .so 二进制(arm64v8a/armv7/x86/x86_64)+ SHA256 校验
4. LAN 命令系统
- LAN 模式下原生注册 9 个命令(op/deop/ban/ban-ip/banlist/pardon/pardon-ip/whitelist/kick)
- Mixin 修改 requires 谓词放行 LAN 房主
- 完整保留原生 Tab 补全和 @a/@p 等选择器
连接稳定性(核心修复)
无限重试机制
CONTINUOUS_RETRY_MAX_ROUNDS 提升至 Integer.MAX_VALUE,仅玩家退出房间或对端 cancel_connection 才停。双方支持 CAP_CONTINUOUS_RETRY 时启用,老版本走 maxCycles=8 降级。
6 个关键 bug 修复
- 主机桥建立后停所有打洞(stopAllPunchingAfterHostBridge)
- killAllConnectionAttempts 检查 connectionWon → 修复异地联机中断
- handleDisconnect 调 clearHostPunchingState → 修复"正在探测网络环境"卡死
- sendHolepunchOffer 后 punch_info 等待超时 15 秒
- handleJoinRequest 排队重试无条件继续 → 修复 joiner 静默丢弃
- joiner 桥建立后停所有打洞 → 修复"正在加入服务器最后失败"
ReliableUdpTransport 稳定性
- 卡死检测改用 System.currentTimeMillis() 真实时间(禁用 waitCount 累加假阳性)
- Throwable catch + sendBytes 超时 + close 死锁修复
状态机修复
- TCP_FALLBACK 允许转回 STUN_PROBE/UDP_PUNCH(支持周期重试)
- 完整状态转换校验
陶瓦集成改进
Android
- 直接下载 .so + SHA256 校验 + 跳过执行权限检查(JNI 加载无需执行权限)
- 双 P2P 竞速:waitForDownload 下载完成后再判断(修复手机端陶瓦不显示)
PC 端
- --hmcl 参数对齐 HMCL-3.15.2
- isAlive() 信任 httpPort → 修复 Windows UAC 后不显示房间号
- startInternalRetry 等 portFile 10 秒
- secondary 模式识别(同机 host+joiner 场景)
Terracotta 0.4.2 状态机
- 修复 setIdle 端点为 /state/ide(不是 /state/idle)
- ensureReady() 正确处理 Ready 非 Waiting 时先 setIdle 再 initialize
- 完整 HTTP API 支持
进程清理(双保险)
- 退出世界 DISCONNECT 事件无条件兜底杀陶瓦
- joinRoom 入口杀残留陶瓦
- startRedownload 先杀进程(防 Windows 文件占用)
OP / 权限系统
房主 OP / 访客 OP 分离
- allowCommands = guestOp(访客 OP 控制世界命令开关)
- 房主 OP 由 applyOpPolicy 独立管理
- 房主 OP 关 → 房主 OP 也被撤回
- 访客 OP 关 → 访客无论如何都无 OP
- 1.21.11 用 NameAndId 方案,其他版本用字符串命令方案
LAN 命令注册
- 调用原生 register 方法注册 9 个命令
- 保留原生 Tab 补全和 @a/@p 选择器
- Mixin 放行 LAN 房主
UI / UX
- 简单配置:「加入时陶瓦: 开/关」明确区分陶瓦配置的「陶瓦: 开/关」
- 陶瓦删除按钮:下载时禁用,完成或失败时恢复
- 更新检查:移除 AtomicBoolean,每次进入世界都检查并提示(除非玩家关闭)
- 联机大厅:VERSION_SAME 从排序改为真筛选,过滤异版本房间
- TitleScreenMixin 小窗口防溢出
- drawCenteredClipped 统一渲染
协议 / 网络层
- handleTcpSimopenRequest:host 桥已 listening 时跳过 SimOpen(hostPort 被占用时 bind 必失败)
- SignalingClient:data 字段 JsonArray 容错,HTTP_EXECUTOR 固定 4 线程(防线程爆炸)
- ConnectionHelper:强引用 + 字段 resetTask + 取消 + owner 校验
- 1.20/1.20.1 走 (String,String,boolean) 分支,1.20.2~26.x 走 ServerData.Type.class 类字面量分支
- stubs sourceSet:编译但不打包进 jar,仅用于 PC 端编译期符号引用
下载
支持 23 个 MC 版本,请根据你的游戏版本选择对应的 jar:
1.20 系列:1.20 / 1.20.1 / 1.20.2 / 1.20.3 / 1.20.4 / 1.20.5 / 1.20.6 1.21 系列:1.21.0 / 1.21.1 / 1.21.2 / 1.21.3 / 1.21.4 / 1.21.5 / 1.21.6 / 1.21.7 / 1.21.8 / 1.21.9 / 1.21.10 / 1.21.11 26.x 系列:26.1 / 26.1.1 / 26.1.2 / 26.2
依赖:Fabric Loader + Fabric API
多语言
简体中文 / 繁体中文(台) / 繁体中文(港) / 文言文 / English / العربية / Deutsch / Español / Français / 日本語 / 한국어 / Português(BR) / Русский
从 1.0.6 升级的用户:直接替换 jar 即可,配置文件向后兼容。
感谢使用 VoxLink ᕕ( ᐛ )ᕗ
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:v9N8TEuR"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:qqeQJjgq:v9N8TEuR"
}

