Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VelocityBandwidthPacer

Velocity 代理的应用层带宽调速插件。

在保持完整 Minecraft 协议/帧完整性的同时,降低公网出口峰值带宽。


核心原理

本插件不修改 Minecraft 压缩管线、Netty flush 时机,或任何底层传输行为。

它纯粹在应用层运作 —— 控制数据包何时提交到 Velocity 的正常发送路径,而非如何发送。


架构

数据包生成
      |
      v
调速调度器  ← 应用层延迟(本插件)
      |
      v
writeAndFlush  ← Velocity 的正常发送路径(未改动)
      |
      v
压缩层  ← Velocity 默认管线(未改动)
      |
      v
网络套接字

功能特性

1. 区块调速

限制每个玩家每刻(tick)的区块数据包数量,防止登录时的区块爆发。

  • 默认值:32 区块/刻/玩家
  • 检测范围:区块数据、光照更新、区块批处理开始/完成、注册表同步

2. 令牌桶速率限制

每个玩家独立的令牌桶,支持突发流量。

  • 默认突发上限:12 MB
  • 默认持续速率:4 MB/s
  • 超出速率的数据包进入调速队列

3. 大数据包平滑处理

大于 128 KB 的数据包延迟 1-2 刻发送,以平滑带宽尖峰。

  • 这不是批处理 —— 每个数据包独立发送
  • 仅调整调度时机

4. 基岩版专属优化

自动检测 Floodgate 玩家并应用更严格的调速配置。

  • 降低区块速率(默认 0.5 倍乘数)
  • 降低地图数据包速率
  • 降低实体爆发流量

5. 指标监控

内置指标追踪:

  • 每个玩家的上传速率
  • 区块爆发统计
  • 调速队列深度
  • 数据包大小分布
  • 基岩版流量细分
  • 峰值上传吞吐量

每 30 秒记录一次(可配置)。

6. 通过 config.toml 配置

所有参数均在 plugins/velocity-bandwidth-pacer/config.toml 中可配置。


环境要求

  • Java 21+
  • Velocity 3.4+ / 3.5+
  • 无需 ProtocolLib 依赖

兼容性

已测试并针对以下环境设计:

  • NeoForge 1.21.1
  • Create / CreateAeronautics
  • Geyser + Floodgate
  • ViaVersion + ViaBackwards

构建

./gradlew shadowJar

输出:build/libs/VelocityBandwidthPacer-1.0.0.jar


安装

  1. 将 jar 文件复制到 plugins/ 目录
  2. 启动 Velocity —— 将自动生成默认的 config.toml
  3. 按需编辑 plugins/velocity-bandwidth-pacer/config.toml
  4. 重启或使用 /velocity reload(如果支持)

License

本项目采用 AGPL-3.0 License 开源许可。

About

一个面向 Velocity + 大型整合包环境的带宽平滑优化插件。

Resources

Stars

Watchers

Forks

Releases

Used by

Contributors

Languages