如果你的服务器需要尽可能多的用户,你需要一个离线服务器加上一些离线登录插件。但是出于一些目的,有些时候我们可能需要优待正版玩家,使得正版玩家可以免输入指令进行验证,亦或者是你致力于打造一个离线/外置/正版/基岩共存的超级 Ultra 服务器时,我们不得不考虑一个神奇的架构来满足以上逆天的需求。下面我将以 Waterfall (Bungeecord) 为例讲述该如何实现上述需求。
MultiLogin 简介 & 配置正版服
MultiLogin 是一款主要为 Minecraft 代理端设计的插件,旨在实现对正版与多种外置登录共存的支持,用于连接两个或多个外置验证服务器下的玩家,使他们能够在同一个服务器上一起游戏。 相见 Github: CaaMoe/MultiLogin
现在我们需要安装一个 Bukkit (Spigot / Paper) 端的 MultiLogin 插件安装到一个空 Bukkit 服务器上。并按照该项目的文档进行配置。
然后再安装 JoinCommand 插件(详见 Spigot: JoinCommand)配置玩家登录后自动跳转到你的大厅服。
配置离线登录服
接下来你需要一个离线登录服务器!你可以使用大名鼎鼎的 Authme 或其他任何插件,将他们安装到一个空的 Bukkit 服务器中。并在生成的 Authme 文件夹里的 config.yml
文件按照需求进行修改。但是务必需要调整这个选项:
#...
Hooks:
multiverse: true
bungeecord: true # ←
sendPlayerTo: 'YOUR_LOBBY' # ←
disableSocialSpy: false
useEssentialsMotd: false
#...
将 Hooks.bungeecord
设为 true
,并将 Hooks.sendPlayerTo
设为你的大厅服。这将使得玩家在验证成功后被传送到大厅服。
配置 BungeeCord 端
让我们回到代理端。打开 BungeeCord / Waterfall 目录下的 config.yml
文件,找到这一项:
forced_hosts:
离线验证服的域名 : 离线验证服的名称
正版验证服的域名 : 正版验证服的名称
比如:
forced_hosts:
mc.mkc.icu : offlineauth
pro.mkc.icu : multiauth
这将使得使用地址 mc.mkc.icu
连接到玩家将进入 offlineauth
服务器,pro.mkc.icu
地址将进入 multiauth
服务器。请注意,请确保你将 force_default_server
设为 false
!
接着在这里添加你的验证服务器:
servers:
multiauth:
motd: '阿巴巴'
address: localhost:25001 #地址
restricted: false
offlineauth:
motd: '阿巴巴'
address: localhost:25000 #地址
restricted: false
结束了吗?
你会发现在第一次登录时确实是成功的,玩家从大厅进入其他服务器后退出重新进入就不是大厅了,而是上次退出时的服务器。这个瑕疵可以通过安装插件来解决。一个曲线救国的方法是编写一个 Bungeecord 端插件检测玩家的验证状态,并主动将其传送到登录服,你也可以自行编写 Skript 脚本实现这一点。还有另外一个问题,即你需要提醒正版玩家在线登录前确保已在离线服务器上注册,防止被盗号,不过你也可以通过编写插件实现这一点。如果你需要基岩版支持,可以在安装 MultiLogin 的服务器上安装 Floodgate 解决。
以上就是正版/离线/外置/基岩的大致思路,还在实验当中,建议不要投入到生产环境中使用。以后可能还会写写另一个方法也就是我服务器现在使用的方法的博文。
发表回复