一句话概括:ZstdNet 是一个 Minecraft Java 版联机加速神器,用 Zstandard 压缩算法把客户端↔服务端之间的网络流量狠狠压扁,特别适合大整合包、机械动力系服务器、FRP 内网穿透等"带宽吃紧但数据量爆炸"的场景。
我们遇到的问题:为什么联机会这么吃带宽?
如果你开过大型整合包服务器,一定对这种场景不陌生:
服里跑了一堆 机械动力(Create)、传送带、旋转轴、流体管道——每帧都在疯狂同步
用 FRP / 星空穿透 / 各类隧道 把家庭宽带暴露出去,发现 VPS 的 5Mbps 小水管瞬间打满
朋友进来看起来卡卡的,但你本地实际 TPS 并不低——瓶颈在 公网带宽,不在 CPU
根本原因:原版 MC 的网络包虽然做了 zlib 压缩,但对高重复度的 modded 流量来说,压缩效率远不够。大量相似数据反复传输,zlib 压不动,公网就得老老实实把这些字节运过去。
ZstdNet 是什么?它是怎么解决的?
ZstdNet的核心思路非常聪明且务实:
不直接去改 MC 内部的封包格式,而是在连接链路上插一层"压缩代理"——客户端本地起一个临时代理,服务端侧起一个 ZstdNet 入口,两者之间的流量用 Zstandard (ZSTD) 压缩后再走公网。
[Client MC] → (本地代理·ZSTD压缩) ======公网====== (ZstdNet入口·ZSTD解压) → [Backend MC服务端]ZSTD 是 Facebook/Meta 开源的现代压缩算法,它的特点就是三个字:快、狠、稳:
ZSTD 不仅压得更小,而且 解压速度是 zlib 的近 4 倍——这意味着服务端 CPU 压力反而更小。
📊 真实数据说话:它能省多少?
这是作者给出的 真实的 Create 系大型整合包环境 的服务端侧统计:
也就是说——原来需要 30~40 Mbps 持续吞吐的流量,压完之后只需要不到 2 Mbps。对按流量计费的 VPS、对 5Mbps 的小带宽云主机来说,这就是能不能撑住的区别。
🎯 最适合用 ZstdNet 的场景
⚙️ 安装与使用(超简短版)
服务端
把 ZstdNet 放进服务端的
mods/文件夹保持默认 auto-takeover(自动接管)模式开启(默认就是开的)
后端 MC 的
server.properties里确认server-port=25565⚠️ 关键:如果你前面有 FRP / HAProxy / 隧道,转发目标必须是 ZstdNet 的监听端口,不能绕过它直连后端 MC 端口
⚠️ 正版验证提示:后端建议设
online-mode=false(因为加密数据无法压缩)。如果需要保留正版校验,可搭配 TrueUUID 等正版离线共存模组
玩家照常填
play.example.com:25565连进来就行——不需要让玩家记新端口。
客户端
把 ZstdNet 放进客户端的
mods/文件夹即可连服时模组会在本地透明启动代理,你感觉不到变化
进服后可以输
/zstdhud on打开 HUD,看实时数据:
[ZstdNet] Connected | Remote: play.example.com:25565
Raw: 3.6 MB/s → Zstd: 252 KB/s | Total: 189.06 GB → 10.28 GB | Ratio: 5.44%这个 HUD 是最直观的"它到底有没有生效"判据。
房主 LAN 开服 + FRP 场景
开放局域网后聊天框会弹出绿色端口号(游戏端口),然后在 ZstdNet UI 里填:
游戏端口 = 那个绿色数字
ZSTD / 公网端口 = 你 FRP 对外映射的端口
高级情况也可以用:
/zstdport game <游戏端口>
/zstdport zstd <公网端口>⚠️ 几个容易踩坑的点
同类方案的一句话对比
ZstdNet 最大的优势其实是 "透明" ——玩家不需要改连接习惯,服主不需要重构网络架构,丢进 mods 文件夹就能干活。
总结:什么时候值得上?
如果你的服务器满足"mod 多 + 同步频繁 + 公网带宽捉襟见肘"这三个条件中的任意两个,ZstdNet 基本就是必装。
它不是什么花哨的新玩法,它就是那种默默帮你把带宽账单砍掉 90% 的幕后苦力。装上之后你唯一会后悔的事,大概就是——怎么没早点装。
📦 下载地址:ZstdNet @ MC百科| 支持 Forge / NeoForge / Fabric,覆盖 1.20.1 & 1.21.1
📄 许可证:MIT | 源码可在模组页找到
如果你装完之后 HUD 显示 Ratio 还是压不下去,先别怀疑模组——检查是不是 online-mode=true加密了流量,或者 FRP 端口指到了后端原版口而非 ZstdNet 口 😉