Skip to content

1.0.7

Choose a tag to compare

@AUGUHDAR AUGUHDAR released this 27 Jul 03:52

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