1.0.7
# 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 ᕕ( ᐛ )ᕗ