认证接入
服务端迁移到官方机器后,必须把 BungeeCord 的认证改成中国版官方接口,否则玩家无法通过启动器进入服务器。这是上线的关键一步,也是中国版与原版 BC 最大的不同。
为什么必须接入
- 中国版玩家通过启动器登录,认证由官方接口接管
- 接入后,服务器仅允许中国版启动器进入,第三方端无法连接
- 不接认证 = 无法上线
两套环境
接入需配两个认证入口,对应两套环境:
| 环境 | 用途 |
|---|---|
| 测试入口 | 测试审核与更新。后续启动器相关更新(商业化、客户端更新)先在测试环境验证 |
| 正式入口 | 正式环境,承载线上玩家 |
更新流程
后续任何启动器联动更新(商业化内容、客户端更新)都先在测试服审核测试,验证与启动器联动正常、审核通过后,再同步更新至正式服。别跳过测试直接改正式服。
两种接入方式
官方提供两种接入途径,按你用的 BC 选:
方式一:官方版 BC(推荐)
官方提供已认证过的 BC 源码包(BungeeCord-master.7z),内含认证代码,自行打包使用:
- 解压源码包
- 用 Maven/Gradle 编译打包出 BC jar
- 通过
config.yml里的auth_url切换测试/正式模式(见下) - 使用官方提供的默认
config.yml修改配置
用官方版就别用原版 BC
官方包是已改完认证的版本。原版 BungeeCord(github 上的)没接认证,直接用无法上线。
方式二:非官方 BC 打 patch
若你用的是自己改过的 BC,用附带的 net_bc.diff 把认证模块置入源码再编译:
- 拿到你的 BC 源码
- 应用 patch:
patch -p1 < net_bc.diff - 编译出 BC jar
config.yml调整方式同官方版
patch 大致改动
net_bc.diff 主要做了三件事:
- 认证接口由 GET 改成 POST
- 指向网易认证服务器
- 涉及文件:
HttpClient.java— 增加 POST 支持HasJoinedRequest.java— 新增,表示传参结构InitialHandler.java— 完成认证调用
看 diff 学细节
具体代码改动见 net_bc.diff,每行改动都在里面。按 patch 应用后对照 diff 理解认证流程。
config.yml 配置
中国版 BC 在原版基础上新增两个配置项:
# 网络游戏 iid,在开发者平台可以看到
game_id: '<你的游戏 gameid>'
# 认证服地址(测试/正式二选一,向官方获取)
auth_url: <官方提供的认证接口地址>| 配置项 | 说明 |
|---|---|
game_id | 网络游戏 iid,开发者平台可见,标识你的游戏 |
auth_url | 认证服地址,决定运行在测试还是正式模式 |
完整 config 示例
game_id: '<你的游戏 gameid>'
auth_url: <官方提供的测试环境认证地址>
online_mode: true # BC 必须开
ip_forward: true # IP 转发
network_compression_threshold: 256
servers:
lobby:
address: 192.168.x.x:25566 # 子服内网地址(示例)
restricted: false
listeners:
- host: 0.0.0.0:25577 # BC 对外端口
priorities:
- lobby认证接口地址
auth_url 分测试环境和正式环境两套,另按 MC 版本区分(1.20 以下用旧接口 http,1.20+ 用新的 apigateway 接口 https):
| 环境 | 用途 |
|---|---|
| 测试审核服 | 测试与审核,接测试版启动器 |
| 正式服(线上) | 承载正式玩家,接正式版启动器 |
| 外网测试服 | 通常不用,启用时官方另行沟通 |
具体地址向官方获取
认证接口的具体域名/端口/路径属于官方内部信息,请以官方最新《服务器接入文档》为准,或向工作人员获取。用错环境或版本对应的接口会导致认证失败。
接入后设置
认证接入后,BC 与子服的 online_mode 这样配:
| 位置 | online_mode | 说明 |
|---|---|---|
| BC(代理) | true | 必须开,认证在 BC 层完成 |
| 子服 | false | 必须关,认证已由 BC 接管 |
子服 bcmode
若子服配置里有与 BC 关联的开关(或叫 bcmode),需打开。表示该子服处于 BC 代理模式,不再独立做正版验证。
皮肤与头颅问题
接入网易认证后,NPC 与头颅的皮肤读取方式要改:
- 需把 NPC 皮肤和头颅的 UUID 版本改为不等于 4,才能读取 Mojang 正版皮肤库数据
- 涉及:皮肤 mod、或子服务端核心、或 NPC 插件
- 读头颅皮肤时要设定
id和name
不改皮肤会白头
接入认证后原版皮肤读取会失效,NPC/头颅变白。必须按上述改 UUID 版本,否则玩家看到一堆史蒂夫头。
开发者平台配置网络服务器
认证代码配好后,去开发者平台配置游戏信息:
- 左侧
网络游戏管理→ 右上角发布新游戏 - 填写各模块信息(概况与简介,启动器上对玩家直接可见,认真写)
- 发布客户端时分别填正式服地址与测试服地址(此项不对外可见):
- 正式服 → 接 release 版 BC 认证,用正式版启动器进
- 测试服 → 接 exp 版 BC 认证,用测试版启动器进
- 付费类型选 server commodity,填付费备注
上传客户端
纯净版客户端
不加载任何 mod/材质/自定义文件 → 纯净版选项选**"是"**,此步骤可跳过。
非纯净版客户端
可自定义上传 4 个文件夹内容:
configmodsresourcepacksshaderpacks
压缩包格式
压缩包一级目录仅包含 .minecraft 文件夹,里面含上述 4 个文件夹。须保证纯净客户端能读取并使用。
图片(icon、宣传图等)格式与大小在开发者 launcher 内给出,可参考已上架服务器的显示效果。
提审、更新、上架流程
- 确认信息完整 → 右上角保存
- 在未审核列表点提交审核
- 开启测试服,部署更新内容,联系工作人员审核
- 审核通过 → 在已审核列表点上架,正式更新
- 上架后玩家收到客户端更新提示,重新下载自定义部分组合新版客户端
更新客户端
已上架游戏点更新客户端 → 选需更新字段 → 重新上传包或替换图片 → 保存 → 再走"提交审核 → 后台通过 → 上架"流程。客户端上传完毕提交审核后,可在开发者平台下载测试版启动器自测。
常见问题 FAQ
Q:上传服务器提示"文件包路径不能超过 85 个字符"? A:某些文件夹目录层级过深(常见于小地图 mod、超长名字的材质/光影)。缩减目录路径即可。
Q:上传提示"文件包只能有一个目录"? A:压缩包格式不对。一级目录应只有 .minecraft 文件夹,参考官方提供的示例压缩包格式。
Q:root 密码怎么用? A:用 su - root 或 su - 切换 root,输入密码。不是 sudo。
Q:能改防火墙吗? A:不能。服主请勿直接改系统防火墙,会导致连接问题。需改联系工作人员。
Q:遇到权限问题怎么办? A:别直接 chown 改家目录属主(会导致登不进)。用 ls -l 查看属主,正常不会出权限问题。
Q:能做高危操作吗? A:禁止私自高危操作危害服务器及平台安全,属违反开发者协议行为,严肃处理。详见开发者平台"高危操作警告说明"。
其他问题请通过开发者平台或工作人员提供的官方渠道联系。
想深入认证源码细节、或了解 Velocity 接入?见认证接入实战:源码与 Velocity。
认证接入完成、客户端上架后,服务器就正式上线了。回到Java 网络游戏首页。
