Minecraft Java 版多人服务器「多入口智能连接」Mod。 一个实际服务端可以配置多个公网/内网穿透等网络入口,客户端进入服务器前自动请求推荐入口,用最合适的入口完成连接。
本仓库目前仅包含项目骨架与构建配置,源代码(src/ 目录)已全部移除,暂不对外公开。
当前阶段:闭源开发中,近期没有开源计划。若后续决定开放源码,会另行公告并更新本仓库内容。
本仓库的公开目的是展示项目结构、版本矩阵与构建框架,便于协作与版本管理。
MultiRoute 让一台 Minecraft 服务器对外暴露多个连接入口(不同公网 IP、内网穿透域名等)。玩家客户端在正式进入服务器前,会先向服务端发起一次预进入请求,服务端根据各入口的带宽类型、容量、健康状态、实时流量等综合评分,返回一个推荐入口;客户端拿到推荐入口后,直接用它进入原版联机流程。
要点:
- 不是代理:不转发流量,所有入口最终都指向同一台真实服务器。
- 同端口:复用原版 Minecraft 端口,不额外开端口。
- 客户端是增强功能:即使客户端没装 Mod,也能照常连接;装了 Mod 才有智能选路。
| 模块 | 加载器 | Minecraft | 产物 |
|---|---|---|---|
| forge-1.12.1 | Forge | 1.12.1 | multiroute-forge-1.12.1-0.1.0.jar |
| forge-1.12.2 | Forge | 1.12.2 | multiroute-forge-1.12.2-0.1.0.jar |
| forge-1.16.5 | Forge | 1.16.5 | multiroute-forge-1.16.5-0.1.0.jar |
| forge-1.18.2 | Forge | 1.18.2 | multiroute-forge-1.18.2-0.1.0.jar |
| forge-1.20.1 | Forge | 1.20.1 | multiroute-forge-1.20.1-0.1.0.jar |
| neoforge-1.21.1 | NeoForge | 1.21.1 | multiroute-neoforge-1.21.1-0.1.0.jar |
服务端与客户端需安装对应版本的 Mod。
- 把对应版本的
multiroute-forge-*.jar放进服务器mods/目录。 - 启动服务器。首次启动会自动生成配置文件:
serverconfig/multiroute/endpoints.json - 按需编辑配置或用命令添加入口(见下文)。
- 把对应版本的
multiroute-forge-*.jar放进客户端mods/目录。 - 正常进入游戏即可。客户端本地多入口配置会自动保存到客户端配置目录下的
client-endpoints.json。
文件路径:serverconfig/multiroute/endpoints.json
{
"version": 1,
"endpoints": [
{
"id": "endpoint-1",
"host": "example-a.com",
"port": 25565,
"displayName": "入口A",
"enabled": true,
"order": 1,
"allowRecommendation": true,
"maxMbps": 10,
"bandwidthType": "DEDICATED",
"healthState": "UNKNOWN"
},
{
"id": "endpoint-2",
"host": "example-b.com",
"port": 25565,
"displayName": "入口B",
"enabled": true,
"order": 2,
"allowRecommendation": true,
"maxMbps": 20,
"bandwidthType": "SHARED",
"healthState": "UNKNOWN"
}
]
}字段说明:
| 字段 | 说明 |
|---|---|
id |
入口唯一标识(命令里用) |
host |
主机名或 IP(支持 IPv6) |
port |
端口(1–65535) |
displayName |
显示名称 |
enabled |
是否启用 |
order |
排序(同分时靠前者优先) |
allowRecommendation |
是否允许被推荐 |
maxMbps |
入口最大带宽(Mbps),0 表示不限制 |
bandwidthType |
DEDICATED(独享)/ SHARED(共享) |
healthState |
UNKNOWN / HEALTHY / DEGRADED / UNHEALTHY |
说明:
- 配置文件带版本号,支持原子写入与损坏恢复;保存失败不会破坏旧文件。
- 服务器启动时自动加载,配置更新(命令或直接改文件后
reload)立即影响新的预进入请求,不影响在线玩家。
所有命令仅 OP 可用,根命令 /multiroute。
| 命令 | 作用 |
|---|---|
/multiroute add <host> <port> [bandwidthType] [maxMbps] |
添加入口。bandwidthType 为 SHARED/DEDICATED,maxMbps 为非负整数 |
/multiroute remove <addressId> |
删除入口 |
/multiroute list |
列出所有入口 |
/multiroute status(或 stats/info) |
查看入口状态与活跃人数 |
/multiroute enable <addressId> |
启用入口 |
/multiroute disable <addressId> |
禁用入口 |
/multiroute set <addressId> bandwidthType <SHARED|DEDICATED> |
修改带宽类型 |
/multiroute set <addressId> maxMbps <数值> |
修改最大带宽 |
/multiroute reload |
重新加载配置文件 |
/multiroute strategy [traffic|scoring] |
查看/切换推荐策略(见下文) |
/multiroute traffic [show|hide] |
打开流量面板 / 开关流量悬浮层(见下文) |
/multiroute help |
查看帮助 |
成功后会立即持久化到
endpoints.json。
服务端用评分制推荐入口,可运行时切换:
traffic(默认,推荐):流量感知策略。基于实时出口流量、剩余带宽比例、带宽类型、健康状态综合评分,兼顾负载均衡与可靠性。scoring:基础评分策略。主要看带宽类型、容量、健康状态。
/multiroute strategy # 查看当前策略
/multiroute strategy traffic # 切换到流量感知策略
/multiroute strategy scoring # 切换到基础评分策略
玩家在多人游戏列表点击「加入服务器」后,Mod 会自动:
- 向服务器发起预进入请求;
- 拿到推荐入口;
- 用推荐入口进入原版连接。
失败时自动回退到服务器原始地址,无需重新点击。
- 在「添加/编辑服务器」界面,会多出一个**「多入口」**按钮。
- 点击进入多入口管理界面,可对当前服务器的候选入口进行新增 / 删除 / 上移 / 下移。
- 本地多入口数据按服务器名称分组保存到
client-endpoints.json;重命名服务器时数据会自动同步迁移。
在游戏内(OP)执行:
/multiroute traffic
会弹出实时流量面板:
- 实时数据:每秒刷新一次;
- 顶部搜索框:边输入边模糊搜索(按玩家名/入口过滤);
- 滚动列表:数据多时可滚动查看。
/multiroute traffic show # 开启悬浮层(等同 on)
/multiroute traffic hide # 关闭悬浮层(等同 off)
- 在屏幕左上角显示过滤后的前 10 条数据;
- 不阻挡玩家操作;
- 开关状态为内存式保存,游戏进程不退出就一直保留;
- 可在「设置 → 控制」里给这个开关配置快捷键(默认未绑定,只能通过命令开启)。
MultiRoute 会按以下顺序降级,尽量保证玩家能连上:
1. 使用服务端推荐入口
2. 预进入失败/超时 → 回退到服务器原始地址
3. 推荐入口连接失败 → 自动用原始地址重连
4. 原版连接失败 → 按原版方式显示错误
已处理的场景:预进入接口不可用、超时、返回非法地址、无可用推荐地址、服务端配置损坏、客户端/服务端未装 Mod 等。
Q:客户端没装 Mod 能连吗? A:能。客户端 Mod 是增强功能,没装会按原版流程直接连接。
Q:所有入口都指向同一台服务器,会不会冲突? A:不会。入口只是「不同的网络入口」,最终都进入同一台服务器,Mod 只负责选择走哪个入口。
Q:改了配置为什么没生效?
A:直接用命令添加/删除会立即生效;如果是手动编辑 endpoints.json,执行一次 /multiroute reload 即可。
Q:流量面板/悬浮层能一直开着吗? A:只有面板打开或悬浮层开启时才会请求服务器数据,其余时间不占用网络。
首个可用版本,覆盖 Forge 1.12.1 / 1.12.2 / 1.16.5 / 1.18.2 / 1.20.1 及 NeoForge 1.21.1。
服务端
- 多入口配置与管理(
endpoints.json原子写入 + 损坏恢复) - 两套推荐策略:流量感知(
traffic,默认)与基础评分(scoring) - 预进入请求接口,按评分返回推荐入口
- OP 管理命令:添加 / 删除 / 启用 / 禁用 / 状态查询 / 策略切换 / 重载
- 实时流量统计与活跃人数追踪
客户端
- 自动预进入请求 + 推荐入口连接,失败回退到原始地址
- 「添加/编辑服务器」界面新增多入口管理按钮,支持新增 / 删除 / 排序
- 本地多入口按服务器名称分组持久化,重命名自动迁移
- 实时流量面板(OP 可打开,每秒刷新,支持搜索过滤)
- 流量悬浮层(F3 风格,可配置快捷键)
稳定性
- 完整的异常降级链:推荐失败 → 回退原始地址 → 原版连接
- 兼容客户端/服务端未装 Mod、配置损坏、预进入超时等场景
- 新增服务端配置项:是否将所有入口同步至客户端(默认开启)。关闭后客户端仅拿到推荐入口,不暴露完整入口列表,用于服务器隐私保护场景。



