-
Notifications
You must be signed in to change notification settings - Fork 57
Home
CaaMoe edited this page Sep 5, 2022
·
24 revisions
此 猫踢螺钉
是一款服务端插件,功能是让您的服务器能够支持正版与多种外置登录共存,用来连通两个或多个外置认证服务器下的玩家,让他们能在一起玩。
MultiLogin 不需要更改 JVM
启动参数,也没有必须安装的前置插件依赖, 在联网的环境下将合适的版本拖动至 plugins
文件夹下即可使用。 初次使用将会花费一些时间来下载缺失的依赖文件。
hasJoined:
official:{}
hasJoined:
blessingSkin:
# 假设当前 Blessing Skin 的 Yggdrasil api 地址为 {url}
apiRoot: {url}
hasJoined:
custom:
url: ""
method: 'GET'
ipContent: ""
postContent: ""
指令 | 权限 | 说明 |
---|---|---|
command.multilogin.tab.complete | 指令补全时所需的权限 | |
/multilogin reload | command.multilogin.reload | 重载插件配置和语言文件 |
/multilogin eraseUsername <username> | command.multilogin.eraseusername | 清除用户名占用 |
/multilogin list | command.multilogin.list | 返回带验证方式的在线玩家列表 |
/multilogin confirm | command.multilogin.confirm | 确认当前风险操作 |
/multilogin search login byName <username> | command.multilogin.search.login.byname | 以用户名查询所有可能的登录方式 |
/multilogin search login byInGameUUID <inGameUUID> | command.multilogin.search.login.byingameuuid | 以游戏内uuid查询所有可能的登录方式 |
/multilogin search inGameUUID byName <username> | command.multilogin.search.ingameuuid.byname | 以用户名查询游戏内uuid |
/multilogin search inGameUUID byProfile <yggdrasilId> <onlineUUID> | command.multilogin.search.ingameuuid.byprofile | 以在线档案查询游戏内uuid |
/multilogin search current <username> | command.multilogin.search.current | 以用户名查询在线玩家的登录方式 |
/multilogin user merge byName <yggdrasilId> <onlineUUID> <username> | command.multilogin.merge.byname | 通过用户名来合并指定游戏档案 |
/multilogin user merge byInGameUUID <yggdrasilId> <onlineUUID> <inGameUUID> | command.multilogin.merge.byingameuuid | 通过游戏内uuid来合并指定游戏档案 |
/multilogin user mergeMe byName <username> | command.multilogin.mergeme.byname | 通过用户名来合并当前游戏档案 |
/multilogin user mergeMe byInGameUUID <inGameUUID> | command.multilogin.mergeme.byingameuuid | 通过游戏内uuid来合并当前游戏档案 |
/multilogin remove priflle <yggdrasilId> <onlineUUID> | command.multilogin.remove.profile | 移除一份在线游戏档案 |
/multilogin whitelist add <username> | command.multilogin.whitelist.add | 缓冲白名单添加 |
/multilogin whitelist remove <username> | command.multilogin.whitelist.remove | 缓冲白名单移除 |
/multilogin whitelist permanent add <yggdrasilId> <onlineUUID> | command.multilogin.whitelist.permanent.add | 指定白名单添加 |
/multilogin whitelist permanent remove <yggdrasilId> <onlineUUID> | command.multilogin.permanent.remove | 指定白名单移除 |
Yggdrasil 是 Minecraft Java 使用的账户认证方案,专门用来处理 Minecraft 的账号验证的请求;而外置登录,可以说是仿照 Yggdrasil 这套系统为非溢价玩家提供像正版一样的账号安全登录的体验。
由于第三方 Yggdrasil 之间不存在任何联系,共存后难免会有以下问题
- 重名:
众所周知,正常的服务器内是不可能出现 username 一模一样的两个玩家同时游戏的, 但是多外置的环境下打破了这个限制,而几乎所有的 Minecraft Server 都是以玩家的 uuid 作为主键处理和存取玩家数据的,所以不会对重复的 username 做出限制,即在服务器中就可能出现两个 uuid 不同但是 username 相同的玩家同时游戏。 而相同的 username 会导致一些命令中的玩家选择器发生异常或故障,也有可能导致一些第三方组件的崩溃,而他的实现成本非常低,是个不可忽视的大问题。 - uuid 碰撞:
几乎所有的 Minecraft Server 都是以玩家的 uuid 作为主键处理和存取玩家数据的,所以 Yggdrasil 给玩家分配的 uuid 是绝对不可能重复的,但是在多外置的环境下打破了这个限制。 虽然 uuid 碰撞的概率相当的低,但也不是不可能的事情,并且一旦出现 uuid 碰撞,就很有可能能造成毁灭性的后果,并且原因还及难排查。这并不是一般的服务器维护者能承受得住的。。。 - 皮肤问题:
由于原版的安全机制,会对即将在客户端中显示的材质进行签名检查,在多外置的情况下,由于每个外置服务商几乎都不可能提供他们的数字签名密钥,所以难免会存在一些显示上的问题, 即不同外置登录下的玩家都不能看到对方的皮肤。这听起来是没什么大不了的事情,但还是多外置共存下最难解决的问题之一。 - 失效的 Mojang API:
由于多外置共存,Mojang API 它有可能帮倒忙,在以 username 检索玩家的在线 uuid 时将会变得异常困难,并且还可能获取不到正确的结果。典型的就是原版基于 uuid 的白名单系统。 在多外置的环境下它将失效,达不到预期的使用效果。 - 无效的聊天签名:\
...
待编辑