Skip to content

与基岩版全平台互通(Geyser + Spigot) ​

前面几篇搭的都是纯 Java 版服务器,只有 PC Java 客户端能进。但中国版还有庞大的**基岩版(PE / 手机、Win10)**玩家群体。这一篇讲怎么用 Geyser + Spigot 方案,让一套 Java 服务端同时接纳 Java 和基岩版玩家——实现全平台互通。

进阶 / 实验性主题

本篇涉及协议层适配,难度明显高于前面的插件开发。标准 Geyser 只支持国际版基岩版,要兼容网易中国版协议需要额外改造。没有 Java 网络编程与协议基础的话,建议直接用现成方案(见文末现成方案),别硬啃协议层。

为什么需要 Geyser ​

Java 版和基岩版是两套完全不同的网络协议:

  • Java 版:TCP,基于 Netty 的 Java 版 packet 协议
  • 基岩版:UDP + RakNet,Bedrock packet 协议,登录带身份链

两者无法直接互通。Geyser 就是中间的"翻译官"——它监听基岩版端口,把基岩版客户端的 UDP/RakNet 协议实时翻译成 Java 版协议,再转发给本地的 Spigot 服务端。对 Spigot 来说,进来的基岩版玩家和普通 Java 玩家没区别。

Java 客户端  ──(Java 协议 TCP)──────────────┐
                                            ▼
基岩版客户端 ──(Bedrock 协议 UDP)──▶ Geyser ──(翻译成 Java 协议)──▶ Spigot 服务端
                                    Floodgate(账号桥接)

为什么是 Spigot 不是 BungeeCord

Geyser 可以以插件形式跑在 Spigot/Paper 里(Geyser-Spigot),也可独立部署或跑在 BC 上。单机服直接用 Spigot 插件版最简单;多子服架构则把 Geyser 放代理层。本篇以 Geyser-Spigot 插件模式为主线讲。

标准方案:Geyser + Floodgate ​

先看国际版的标准接入方式(后面再讲网易版的改造),理解链路:

组件 ​

组件作用
Geyser基岩⇄Java 协议翻译
Floodgate允许基岩版玩家无需 Java 正版账号即可进服,负责账号桥接与身份注入

安装 ​

把两个插件丢进 plugins/ 目录:

plugins/
├── Geyser-Spigot.jar
└── floodgate-spigot.jar

重启生成配置。核心配置 plugins/Geyser-Spigot/config.yml:

yaml
bedrock:
  address: 0.0.0.0
  port: 19132          # 基岩版监听端口
remote:
  address: auto        # 自动指向本机 Spigot
  port: 25565          # Java 服务端端口
  auth-type: floodgate # 与 Floodgate 配合时用 floodgate

标准情况下重启后,国际版基岩客户端连 IP:19132 即可进服。

但这套连不上网易客户端

以上是国际版流程。网易中国版基岩客户端连不进来——因为网易用的是魔改协议和自己的账号体系。下面讲怎么改。

网易版的难点 ​

网易中国版基岩版(PE)不是国际版 Bedrock,标准 Geyser 无法直接对接,差异主要在三处:

差异点国际版网易中国版
RakNet / 加密标准 Bedrock RakNet 与加密流程网易魔改的握手与加密
登录身份链Xbox Live 的 JWT 身份链(chain)网易账号体系,走网易认证
协议版本 / packetCloudburstMC 标准 Bedrock Codec网易版本号与部分 packet 结构不同

结果就是:Geyser 默认的 BedrockCodec(packet 编解码)、握手加密、登录验证这三层,都要替换成兼容网易协议的实现,网易 PE 客户端才能被 Geyser 正确识别、解密、验证并转发。

兼容网易协议:思路与参考 ​

核心工作量在让 Geyser 的基岩侧协议层"听得懂"网易客户端。没有官方现成的网易版 Geyser 源码,但可以参考几个开源项目里已经实现网易协议的部分:

可参考的开源实现 ​

项目参考价值
NukkitMOT网易改造过的 Nukkit 服务端分支,原生兼容中国版基岩协议。其登录握手、加密流程、packet 编解码、版本号定义是最直接的参考——把它处理网易协议的那套逻辑,移植/对照到 Geyser 的基岩侧
EaseCation 开源项目知名中国版 PE 服务器团队,开源了协议与分布式相关代码(如 Protocol / Nemisys / SynapseAPI)。其对网易 packet、登录链的处理可作为交叉参考,验证协议细节

改造要点 ​

对照上述项目,在 Geyser 基岩侧主要改这几处:

  1. 协议版本 / Codec:把 Geyser 使用的 Bedrock 协议版本号、packet 编解码器,改成与目标网易客户端版本匹配的定义
  2. RakNet 握手与加密:适配网易魔改的握手流程与加密密钥协商,否则连接建立不起来
  3. 登录身份链验证:网易客户端登录带的不是 Xbox 身份链,而是网易账号信息——这一步要接网易的 PE 认证接口(见下节),验证通过再放行
  4. Floodgate 身份注入:验证通过后,把玩家身份注入 Java 侧(用户名、UUID),让 Spigot 认作合法玩家

协议逆向的合规红线

网易中国版协议属于私有协议。分析、适配协议须遵守《网易游戏使用许可及服务协议》及相关法律法规,仅用于官方允许的正规服务器接入,不得用于外挂、破解、盗版联机等用途。参考开源项目也应遵守其开源许可证。

与网易 PE 认证结合 ​

互通服务器上线时,认证要同时接 PC 和 PE 两套:

  • 网易的认证接口、商业化 key 区分 PC 和 PE,即使是互通服务器,也要分别申请 PC 和 PE 的 game_id 与密钥(见认证接入、商业化接入)
  • PE 玩家通过 Geyser 进来时,其登录验证要走网易 PE 认证接口,而非 Xbox
  • Java 玩家仍走 PC 认证(BungeeCord / Velocity 那套)

认证是上线硬门槛

无论 Java 还是 PE,中国版玩家都必须通过官方启动器 + 官方认证进服。互通方案里,Geyser 的登录环节必须接好网易 PE 认证,否则 PE 玩家进不来、也无法上线合规。

现成方案:少走弯路 ​

自己改 Geyser 协议层成本很高。如果不想从零适配,社区已有现成的网易版 Geyser 方案可直接用或参考:

  • 网易版 Geyser 扩展 / 魔改包:社区(如布吉岛开源计划、MineBBS 等)提供了已适配网易协议的 Geyser 魔改版本或扩展,开箱即用或改动量小
  • 网易官方开服工具:网易开发者平台也提供了 Spigot + Geyser、NukkitMOT、AllayMC 等开服工具组合,优先看官方文档给的推荐方案

优先用现成的

除非你有明确的协议定制需求,否则优先用现成的网易版 Geyser 方案 / 官方工具,把精力放在玩法上。自己适配协议只在现成方案满足不了时才考虑。

互通的体验差异 ​

即便协议接通了,Java 和基岩版机制不同,运营时要注意:

  • 战斗 / 红石 / 机制:Geyser 以 Java 版逻辑为准,基岩玩家的手感(如攻击间隔、移动)会和原生 PE 有差异
  • 表单 / UI:基岩版特有的 Form 表单可用,但复杂的 Java 版 GUI(箱子界面)对基岩玩家的呈现有限制
  • 材质 / 皮肤:需处理两端材质与皮肤的兼容
  • 版本对应:网易 PE 版本更新常滞后于国际版,Geyser 协议版本要与目标 PE 客户端严格对应,不匹配就连不上

落地流程小结 ​

  1. 搭好 Spigot/Paper Java 服务端,玩法跑通
  2. 装 Geyser-Spigot + Floodgate,先用国际版逻辑验证链路能通
  3. 换成兼容网易协议的 Geyser(现成魔改包,或参考 NukkitMOT / EaseCation 自行适配)
  4. 接好 PE 认证(网易 PE 认证接口 + PE game_id / 密钥)
  5. 用网易基岩版客户端测试进服,验证登录、玩法、材质
  6. 按上线流程走入驻、二审、上架(PC/PE 认证与商业化分别配置)

全平台互通让你的服务器同时覆盖 Java 与基岩版玩家,是扩大用户盘的关键一步——但协议适配门槛高,能用现成方案就别造轮子。回到Java 网络游戏首页。