Git Product home page Git Product logo

multilogin's Introduction

Hi there 👋

multilogin's People

Contributors

4o3f avatar becods avatar caamoe avatar github-actions[bot] avatar half-nothing avatar iceblues avatar ksqeib avatar ksqeib445 avatar lemon-miaow avatar mashirl avatar naturalselect avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

multilogin's Issues

盗版(无登录服务器)支持

服务器有盗版玩家,无登录服务器,还有PojavLauncher(手机上的Java版启动器,不支持外置登录)和基岩版(用Geyser连接至服务器)用户,所以盗版用户比较多
(保守估计不能/不会用正版/外置登录的玩家超过20%)
所以建议在所有服务器都验证失败后使用盗版登录(并且支持Velocity)
(如果可以的话)提供一个简单的登录系统防止他人使用账号

希望兼容Java11

服务端版本: paper-1.16.4-391
服务器架构: x86_64
服务器系统: Centos 7.8.2003
Java版本: OpenJDK 11.0.9.1

已测试在Java8中运行良好
BASE64Decoder已在Java9及更高版本中被移除,希望作者能够兼容一下Java11

log:

[08:38:55 INFO]: [MultiLogin] Enabling MultiLogin v1.0-BETA.11*
[08:38:55 ERROR]: Error occurred while enabling MultiLogin v1.0-BETA.11 (Is it up to date?)
java.lang.NoClassDefFoundError: sun/misc/BASE64Decoder
	at moe.caa.multilogin.core.MultiCore.<clinit>(MultiCore.java:23) ~[?:?]
	at moe.caa.multilogin.bukkit.MultiLogin.onEnable(MultiLogin.java:25) ~[?:?]
	at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[patched_1.16.4.jar:git-Paper-391]
	at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:380) ~[patched_1.16.4.jar:git-Paper-391]
	at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:483) ~[patched_1.16.4.jar:git-Paper-391]
	at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:501) ~[patched_1.16.4.jar:git-Paper-391]
	at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:415) ~[patched_1.16.4.jar:git-Paper-391]
	at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld(MinecraftServer.java:464) ~[patched_1.16.4.jar:git-Paper-391]
	at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:239) ~[patched_1.16.4.jar:git-Paper-391]
	at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:931) ~[patched_1.16.4.jar:git-Paper-391]
	at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:173) ~[patched_1.16.4.jar:git-Paper-391]
	at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.lang.ClassNotFoundException: sun.misc.BASE64Decoder
	at java.net.URLClassLoader.findClass(URLClassLoader.java:471) ~[?:?]
	at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:182) ~[patched_1.16.4.jar:git-Paper-391]
	at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:111) ~[patched_1.16.4.jar:git-Paper-391]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:589) ~[?:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?]
	... 12 more
[08:38:55 INFO]: [MultiLogin] Disabling MultiLogin v1.0-BETA.11
[08:38:55 ERROR]: Error occurred while disabling MultiLogin v1.0-BETA.11 (Is it up to date?)
java.lang.NoClassDefFoundError: Could not initialize class moe.caa.multilogin.core.MultiCore
	at moe.caa.multilogin.bukkit.MultiLogin.onDisable(MultiLogin.java:60) ~[?:?]
	at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:265) ~[patched_1.16.4.jar:git-Paper-391]
	at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:415) ~[patched_1.16.4.jar:git-Paper-391]
	at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:516) ~[patched_1.16.4.jar:git-Paper-391]
	at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:384) ~[patched_1.16.4.jar:git-Paper-391]
	at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:483) ~[patched_1.16.4.jar:git-Paper-391]
	at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:501) ~[patched_1.16.4.jar:git-Paper-391]
	at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:415) ~[patched_1.16.4.jar:git-Paper-391]
	at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld(MinecraftServer.java:464) ~[patched_1.16.4.jar:git-Paper-391]
	at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:239) ~[patched_1.16.4.jar:git-Paper-391]
	at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:931) ~[patched_1.16.4.jar:git-Paper-391]
	at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:173) ~[patched_1.16.4.jar:git-Paper-391]
	at java.lang.Thread.run(Thread.java:834) [?:?]

[Bug Report] Bungeecord 1.19 has api changes

Bug Description

00:10:36 [INFO] [MultiLogin] Authentication passed, login allowed. (user: x, in game uuid: x, online uuid: x, yggdrasil: official)
00:10:36 [SEVERE] [MultiLogin] An exception occurred at the end of processing login.
java.lang.NoClassDefFoundError: net/md_5/bungee/connection/LoginResult$Property
at fun.ksnb.multilogin.bungee.impl.BungeeUserLogin.generateLoginResult(BungeeUserLogin.java:64)
at fun.ksnb.multilogin.bungee.impl.BungeeUserLogin.finish(BungeeUserLogin.java:50)
at moe.caa.multilogin.core.auth.CombineAuthCore.doAuth(CombineAuthCore.java:83)
at fun.ksnb.multilogin.bungee.auth.MultiLoginEncryptionResponse.lambda$handle$0(MultiLoginEncryptionResponse.java:67)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.ClassNotFoundException: net.md_5.bungee.connection.LoginResult$Property
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 10 more

LoginResult.Property[] properties = new LoginResult.Property[values.size()];

Bungeecord version: CI Build 1644 https://ci.md-5.net/job/BungeeCord/1644/

MultiLogin Version

master branch (f73ddde)

System Architecture

linux/amd64

Configurations

  • default

Logs

No response

Steps to reproduce

  1. Download a recent bungeecord build
  2. Login with Multilogin

Affected area

  • I included all information required in the sections above
  • I made sure there are no duplicates of this report (Use Search)

[错误报告] 最新构建版有严重的性能问题

BUG描述

服务器版本为Purpur(build1640) - 1.19 (Java18)
multilogin插件疑似有严重的性能影响
测试时服务器均为1人
图1为不安装multilogin时的TPS与MSPT情况
image
图2为安装了multilogin后的情况,可见服务器TPS明显下降
image
image
https://spark.lucko.me/pjJ7LVwpqG

MultiLogin版本

Build_1654861664

系统架构

Windows/amd64

配置文件

原配置

日志

日志无任何报错

复现步骤

分别在安装和不按照multilogin的情况下开启服务器,然后使用spark查询服务器情况

确认一遍

  • 我已完成且认真地填写完了报告所需要的信息
  • 我确保没有重复的报告 (搜索一下)

[错误报告]

BUG描述

进入服务器提示 无效的个人信息公钥签名。请尝试重启游戏

[03:04:33 INFO]: Disconnecting com.mojang.authlib.GameProfile@5fe7480b[id=04f3e98c-92fd-3f42-afbe-8a91d926327c,name=FutureBadger623,properties={uploadableTextures=[com.mojang.authlib.properties.Property@65a356e4], textures=[com.mojang.authlib.properties.Property@6377831d]},legacy=false] (/127.0.0.1:58634): Invalid signature for profile public key.
Try restarting your game.
[03:04:33 INFO]: com.mojang.authlib.GameProfile@5fe7480b[id=04f3e98c-92fd-3f42-afbe-8a91d926327c,name=FutureBadger623,properties={uploadableTextures=[com.mojang.authlib.properties.Property@65a356e4], textures=[com.mojang.authlib.properties.Property@6377831d]},legacy=false] (/127.0.0.1:58634) lost connection: Invalid signature for profile public key.
Try restarting your game.

MultiLogin版本

0.3.15

系统架构

linux/amd64

配置文件

###################################

MultiLogin

--config

###################################

在这里,设置所有的 Yggdrasil 账户验证服务器。

services:

这是一个示例配置:

节点名称 'demo' 作为混合验证系统区分 Yggdrasil 验证服务器唯一性的凭据,设置好后请不要随意的去改动它,

随意的更改节点名称将会导致二次验证系统无法验明用户身份而拒绝用户的登入请求。

可以仿写此节点用来添加新的 Yggdrasil 账户验证服务器。

HLGSKIN:

# 启用该验证服务器。
# 值为 'false' 时将不添加该 Yggdrasil 账户验证服务器到混合登入系统中去,将拒绝一切使用该 Yggdrasil 账户验证服务器的玩家登入游戏。
# 默认值 'true'
enable: true

# 该账户验证服务器中的别称。
# 不用于父节点名称,此节点的值可以随意修改。
# 必填值,在 Bukkit 服务端中作为变量传递。
name: "和乐果皮肤站"

# Yggdrasil 账户验证服务器的基本属性和信息设置。
body:

  # Yggdrasil 账户验证服务器服务端 hasJoined 阶段部分验证请求链接设置。
  # 此节点必须指定完整的请求链接。
  # 其中 GET 请求中的占位变量 {username} 表示 username,占位变量 {serverId} 表示 serverId,
  #        占位变量 {passIpContent} 表示 passIpContent 节点所设置的内容。
  # 请求的 URL 对大小写敏感,设置需谨慎!
  # 一些例子:
  #      GET: "https://example.com/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"
  #      GET: "https://example.com/session/minecraft/hasJoined?username={username}&serverId={serverId}"
  #      POST: "https://example.com/session/minecraft/hasJoined"
  # 必填值
  url: "https://skin.heleguo.cn/api/yggdrasil/sessionserver/session/minecraft/hasJoined?username={username}&serverId={serverId}"

  # hasJoined 阶段使用 POST 请求的方式验证账户身份。
  # 绝大多数下, Yggdrasil 账户验证服务器 hasJoined 阶段都采用 GET 请求方式验证用户数据的,
  # 如果你不了解当前 Yggdrasil 验证流程的话,请勿擅自改动它。
  # 默认值 'false'
  postMode: false

  # hasJoined 阶段是否向 Yggdrasil 账户验证服务器传递用户 IP 信息,如果存在。
  # 默认值 'false'
  passIp: false

  # 设置 url 节点 {passIpContent} 变量内容,
  # 其中,变量 {ip} 为所获取到的 IP 信息。
  # 仅当 passIp 节点为 true 时此节点有效。
  # 请求的 URL 对大小写敏感,设置需谨慎!
  # 请留意字符串拼接的特殊值 '&' 和 ', '
  # 一些例子:
  #      GET: '&ip={ip}'
  #      POST: ', "ip":"{ip}"'
  # 默认值 '&ip={ip}'
  passIpContent: "&ip={ip}"

  # 设置 post 的请求内容。
  # 其中 POST 请求中的占位变量 {username} 表示 username,占位变量 {serverId} 表示 serverId,
  #        占位变量 {passIpContent} 表示 passIpContent 节点所设置的内容。
  # 请求的 URL 对大小写敏感,设置需谨慎!
  # 一些例子:
  #        '{"username":"{username}", "serverId":"{serverId}"{passIpContent}}'
  #        '{"username":"{username}", "serverId":"{serverId}"}'
  # 默认值 '{"username":"{username}", "serverId":"{serverId}"}'
  postContent: '{"username":"{username}", "serverId":"{serverId}"}'

# 设置玩家首次登入后游戏内的 UUID 生成规则
# 目前只支持以下值:
#   DEFAULT   - 使用 Yggdrasil 账户证服务器提供的在线 UUID
#   OFFLINE   - 自动生成离线 UUID
#   RANDOM    - 随机 UUID
# 请谨慎设置和修改此节点,避免增加日后维护的心智负担。
# 为避免触发 Paper 端的某些机制,强烈建议此值为 DEFAULT
# 默认值 'DEFAULT'
convUuid: DEFAULT

# 当玩家首次登入时分配到的 UUID 已被使用,自动更正到随机的 UUID。
# 请尽量保持此值为 true ,除非您了解后果是什么。
# 默认值 'true'
convRepeat: true

# 玩家允许设置的用户名正则。
# 若不匹配将会拒绝当前玩家的登入请求
# 如果此值留空或未设置,则应用根节点下 'nameAllowedRegular' 节点值。
# 默认值 ''
nameAllowedRegular: ''

# 是否为当前验证服务器单独开启白名单。
# 当全局白名单为 true 时,此节点强制为 true。
# 默认值: false
whitelist: false

# 设置占线登入机制,登入时游戏内存在有相同游戏内 UUID 的玩家时
# 若为 false 将把游戏内玩家踢出,允许验证中的玩家登入(原版默认)
# 若为 true 则拒绝当前的登入请求
# 默认值: false
refuseRepeatedLogin: false

# 验证错误重试次数
# 默认值: 1
authRetry: 1

# 皮肤修复规则,用来解决不同 Yggdrasil 账户验证服务器下的皮肤不可见问题。
#    比如使用 Minecraft 原版验证服务器的玩家无法看到使用第三方外置验证登入玩家的皮肤。
# 目前只支持设置以下值:
#   OFF       - 关闭这个功能
#   LOGIN     - 占用登入时间进行皮肤修复操作(修复时间过长会导致登入超时)
#   ASYNC     - 登入后修复(修复成功后需要重新连接服务器)
# 系统将会自动过滤掉皮肤源域名为 '*.minecraft.net' 的情况
# 皮肤修复服务器来自 'mineskin.org'
# 默认值 'OFF'
skinRestorer: OFF

# 皮肤修复错误重试次数
# 默认值: 2
skinRestorerRetry: 2

此节点代表 Minecraft 原版验证

official:
name: "正版"
body:
url: "https://sessionserver.mojang.com/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"

设置所有网络请求的超时时间

默认值 '10000'

servicesTimeOut: 10000

全局白名单开关

默认值 'true'

whitelist: false

玩家允许设置的用户名正则,不匹配将会拒绝登入请求。

当当前 Yggdrasil 账户验证服务器设置中对应设置节点存在值时,此节点对于该验证服务器无效。

默认值 '^[0-9a-zA-Z_]{1,16}$'

nameAllowedRegular: '^[0-9a-zA-Z_]{1,16}$'

插件数据的存放方式

sql:

数据库类型设置

目前至支持以下值:

H2

MYSQL

默认值 'H2'

backend: MYSQL

数据库地址

默认值 '127.0.0.1'

ip: '127.0.0.1'

数据库端口

默认值 '3306'

port: 3306

数据库用户名

默认值 'root'

username: '私密信息'

数据库密码

默认值 '12345'

password: '私密信息'

数据库名称

默认值 'multilogin'

database: '私密信息'

前缀

默认值 'multilogin'

prefix: 'multilogin'

日志

[03:13:45 WARN]: [Slimefun] Attempted to refresh skin cache, got this response: TimeoutException: null
[03:13:45 WARN]: [Slimefun] This usually means mojang.com is temporarily down or started to rate-limit this connection, nothing to worry about!
[03:14:19 INFO]: [MultiLogin] Authentication passed, login allowed. (user: FutureBadger623, in game uuid: 04f3e98c-92fd-3f42-afbe-8a91d926327c, online uuid: 04f3e98c-92fd-3f42-afbe-8a91d926327c, yggdrasil: HLGSKIN)
[03:14:19 INFO]: UUID of player FutureBadger623 is 04f3e98c-92fd-3f42-afbe-8a91d926327c
[03:14:19 ERROR]: Failed to verify Services signature
java.security.SignatureException: Signature length not correct: got 1 but was expecting 512
at sun.security.rsa.RSASignature.engineVerify(RSASignature.java:213) ~[?:?]
at java.security.Signature$Delegate.engineVerify(Signature.java:1435) ~[?:?]
at java.security.Signature.verify(Signature.java:789) ~[?:?]
at net.minecraft.util.SignatureValidator.verifySignature(SignatureValidator.java:26) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.util.SignatureValidator.lambda$from$3(SignatureValidator.java:47) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.util.SignatureValidator.validate(SignatureValidator.java:19) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.world.entity.player.ProfilePublicKey$Data.validateSignature(ProfilePublicKey.java:56) ~[?:?]
at net.minecraft.world.entity.player.ProfilePublicKey.createValidated(ProfilePublicKey.java:28) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.server.network.ServerLoginPacketListenerImpl.validatePublicKey(ServerLoginPacketListenerImpl.java:257) ~[?:?]
at net.minecraft.server.network.ServerLoginPacketListenerImpl.handleAcceptedLogin(ServerLoginPacketListenerImpl.java:180) ~[?:?]
at net.minecraft.server.network.ServerLoginPacketListenerImpl.tick(ServerLoginPacketListenerImpl.java:91) ~[?:?]
at net.minecraft.network.Connection.tick(Connection.java:568) ~[?:?]
at net.minecraft.server.network.ServerConnectionListener.tick(ServerConnectionListener.java:233) ~[?:?]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1600) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:451) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1432) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1203) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.server.MinecraftServer.lambda$spin$1(MinecraftServer.java:307) ~[mirai-1.19.2.jar:git-Mirai-23]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
[03:14:19 INFO]: Disconnecting com.mojang.authlib.GameProfile@696edb0b[id=04f3e98c-92fd-3f42-afbe-8a91d926327c,name=FutureBadger623,properties={uploadableTextures=[com.mojang.authlib.properties.Property@4d9a9bd3], textures=[com.mojang.authlib.properties.Property@7ed08d11]},legacy=false] (/127.0.0.1:53136): Invalid signature for profile public key.
Try restarting your game.
[03:14:19 ERROR]: Failed to verify Services signature
java.security.SignatureException: Signature length not correct: got 1 but was expecting 512
at sun.security.rsa.RSASignature.engineVerify(RSASignature.java:213) ~[?:?]
at java.security.Signature$Delegate.engineVerify(Signature.java:1435) ~[?:?]
at java.security.Signature.verify(Signature.java:789) ~[?:?]
at net.minecraft.util.SignatureValidator.verifySignature(SignatureValidator.java:26) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.util.SignatureValidator.lambda$from$3(SignatureValidator.java:47) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.util.SignatureValidator.validate(SignatureValidator.java:19) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.world.entity.player.ProfilePublicKey$Data.validateSignature(ProfilePublicKey.java:56) ~[?:?]
at net.minecraft.world.entity.player.ProfilePublicKey.createValidated(ProfilePublicKey.java:28) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.server.network.ServerLoginPacketListenerImpl.validatePublicKey(ServerLoginPacketListenerImpl.java:257) ~[?:?]
at net.minecraft.server.network.ServerLoginPacketListenerImpl.handleAcceptedLogin(ServerLoginPacketListenerImpl.java:180) ~[?:?]
at net.minecraft.server.network.ServerLoginPacketListenerImpl.tick(ServerLoginPacketListenerImpl.java:91) ~[?:?]
at net.minecraft.network.Connection.tick(Connection.java:579) ~[?:?]
at net.minecraft.server.network.ServerConnectionListener.tick(ServerConnectionListener.java:233) ~[?:?]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1600) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:451) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1432) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1203) ~[mirai-1.19.2.jar:git-Mirai-23]
at net.minecraft.server.MinecraftServer.lambda$spin$1(MinecraftServer.java:307) ~[mirai-1.19.2.jar:git-Mirai-23]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
[03:14:19 INFO]: Disconnecting com.mojang.authlib.GameProfile@696edb0b[id=04f3e98c-92fd-3f42-afbe-8a91d926327c,name=FutureBadger623,properties={uploadableTextures=[com.mojang.authlib.properties.Property@4d9a9bd3], textures=[com.mojang.authlib.properties.Property@7ed08d11]},legacy=false] (/127.0.0.1:53136): Invalid signature for profile public key.
Try restarting your game.
[03:14:19 INFO]: com.mojang.authlib.GameProfile@696edb0b[id=04f3e98c-92fd-3f42-afbe-8a91d926327c,name=FutureBadger623,properties={uploadableTextures=[com.mojang.authlib.properties.Property@4d9a9bd3], textures=[com.mojang.authlib.properties.Property@7ed08d11]},legacy=false] (/127.0.0.1:53136) lost connection: Invalid signature for profile public key.
Try restarting your game.

复现步骤

...

确认一遍

  • 我已完成且认真地填写完了报告所需要的信息
  • 我确保没有重复的报告 (搜索一下)

[问题] 想问下,这款插件支持java8吗?

描述功能请求

这款插件支持java8吗?
以后有支持java8的打算吗?

描述你考虑过的备选方案

No response

请确认此建议所影响的内容

  • 文档
  • 安装
  • 可扩展性
  • 安全
  • 用户体验
  • 测试和发布
  • 开发架构
  • 新的扩展
  • 其他

[错误报告] 使用Velocity最新版本无法进入服务器

BUG描述

使用最新版本velocity-3.1.2-SNAPSHOT-151,加入MultiLogin插件会导致无法进入服务器提示 连接中止 后台无任何报错

MultiLogin版本

0.3.14

系统架构

windows/amd64

配置文件

日志

No response

复现步骤

...

确认一遍

  • 我已完成且认真地填写完了报告所需要的信息
  • 我确保没有重复的报告 (搜索一下)

对Geyser的支持

如题,使用Geyser-Spigot并用PE端连接服务器时,无论使用正版账号还是外置皮肤站账号,均会提示无效登陆信息
当添加authlib java agent时,指定外置皮肤站yggdrasil。使用外置登陆信息可以进入,但正版登陆信息依然无法登陆

[错误报告] 关于用littleskin皮肤站无法加入服务器显示“登陆错误:无效会话”

BUG描述

我使用MultiLogin v0.3.15插件加入1.18.2Spigot服务器,同时加入了CatSeedLogin-1.4.0和ProtocolLib插件,想要实现在同一个服务器中正版用户和外置登录(littleskin)用户共存并可互相看见对方的皮肤。在按照示例填写关于littleskin各参数并按照提示打开服务器正版验证后,使用外置登录(littleskin)进入此服务器,提示“登陆错误:无效会话”即因无法通过正版验证而被拒绝进入服务器,导致问题产生。希望您尽快解决并给予答复和解决方案。

MultiLogin版本

MultiLogin v0.3.15

系统架构

windows/amd64

配置文件

###################################

MultiLogin

--config

###################################

在这里,设置所有的 Yggdrasil 账户验证服务器。

services:

这是一个示例配置:

节点名称 'demo' 作为混合验证系统区分 Yggdrasil 验证服务器唯一性的凭据,设置好后请不要随意的去改动它,

随意的更改节点名称将会导致二次验证系统无法验明用户身份而拒绝用户的登入请求。

可以仿写此节点用来添加新的 Yggdrasil 账户验证服务器。

demo:

# 启用该验证服务器。
# 值为 'false' 时将不添加该 Yggdrasil 账户验证服务器到混合登入系统中去,将拒绝一切使用该 Yggdrasil 账户验证服务器的玩家登入游戏。
# 默认值 'true'
enable: true

# 该账户验证服务器中的别称。
# 不用于父节点名称,此节点的值可以随意修改。
# 必填值,在 Bukkit 服务端中作为变量传递。
name: "Demo Yggdrasil"

# Yggdrasil 账户验证服务器的基本属性和信息设置。
body:

  # Yggdrasil 账户验证服务器服务端 hasJoined 阶段部分验证请求链接设置。
  # 此节点必须指定完整的请求链接。
  # 其中 GET 请求中的占位变量 {username} 表示 username,占位变量 {serverId} 表示 serverId,
  #        占位变量 {passIpContent} 表示 passIpContent 节点所设置的内容。
  # 请求的 URL 对大小写敏感,设置需谨慎!
  # 一些例子:
  #      GET: "https://example.com/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"
  #      GET: "https://example.com/session/minecraft/hasJoined?username={username}&serverId={serverId}"
  #      POST: "https://example.com/session/minecraft/hasJoined"
  # 必填值
  url: "https://littleskin.cn/api/yggdrasil/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"

  # hasJoined 阶段使用 POST 请求的方式验证账户身份。
  # 绝大多数下, Yggdrasil 账户验证服务器 hasJoined 阶段都采用 GET 请求方式验证用户数据的,
  # 如果你不了解当前 Yggdrasil 验证流程的话,请勿擅自改动它。
  # 默认值 'false'
  postMode: false

  # hasJoined 阶段是否向 Yggdrasil 账户验证服务器传递用户 IP 信息,如果存在。
  # 默认值 'false'
  passIp: false

  # 设置 url 节点 {passIpContent} 变量内容,
  # 其中,变量 {ip} 为所获取到的 IP 信息。
  # 仅当 passIp 节点为 true 时此节点有效。
  # 请求的 URL 对大小写敏感,设置需谨慎!
  # 请留意字符串拼接的特殊值 '&' 和 ', '
  # 一些例子:
  #      GET: '&ip={ip}'
  #      POST: ', "ip":"{ip}"'
  # 默认值 '&ip={ip}'
  passIpContent: "&ip={ip}"

  # 设置 post 的请求内容。
  # 其中 POST 请求中的占位变量 {username} 表示 username,占位变量 {serverId} 表示 serverId,
  #        占位变量 {passIpContent} 表示 passIpContent 节点所设置的内容。
  # 请求的 URL 对大小写敏感,设置需谨慎!
  # 一些例子:
  #        '{"username":"{username}", "serverId":"{serverId}"{passIpContent}}'
  #        '{"username":"{username}", "serverId":"{serverId}"}'
  # 默认值 '{"username":"{username}", "serverId":"{serverId}"}'
  postContent: '{"username":"{username}", "serverId":"{serverId}"}'

# 设置玩家首次登入后游戏内的 UUID 生成规则
# 目前只支持以下值:
#   DEFAULT   - 使用 Yggdrasil 账户证服务器提供的在线 UUID
#   OFFLINE   - 自动生成离线 UUID
#   RANDOM    - 随机 UUID
# 请谨慎设置和修改此节点,避免增加日后维护的心智负担。
# 为避免触发 Paper 端的某些机制,强烈建议此值为 DEFAULT
# 默认值 'DEFAULT'
convUuid: DEFAULT

# 当玩家首次登入时分配到的 UUID 已被使用,自动更正到随机的 UUID。
# 请尽量保持此值为 true ,除非您了解后果是什么。
# 默认值 'true'
convRepeat: true

# 玩家允许设置的用户名正则。
# 若不匹配将会拒绝当前玩家的登入请求
# 如果此值留空或未设置,则应用根节点下 'nameAllowedRegular' 节点值。
# 默认值 ''
nameAllowedRegular: ''

# 是否为当前验证服务器单独开启白名单。
# 当全局白名单为 true 时,此节点强制为 true。
# 默认值: false
whitelist: false

# 设置占线登入机制,登入时游戏内存在有相同游戏内 UUID 的玩家时
# 若为 false 将把游戏内玩家踢出,允许验证中的玩家登入(原版默认)
# 若为 true 则拒绝当前的登入请求
# 默认值: false
refuseRepeatedLogin: false

# 验证错误重试次数
# 默认值: 1
authRetry: 10

# 皮肤修复规则,用来解决不同 Yggdrasil 账户验证服务器下的皮肤不可见问题。
#    比如使用 Minecraft 原版验证服务器的玩家无法看到使用第三方外置验证登入玩家的皮肤。
# 目前只支持设置以下值:
#   OFF       - 关闭这个功能
#   LOGIN     - 占用登入时间进行皮肤修复操作(修复时间过长会导致登入超时)
#   ASYNC     - 登入后修复(修复成功后需要重新连接服务器)
# 系统将会自动过滤掉皮肤源域名为 '*.minecraft.net' 的情况
# 皮肤修复服务器来自 'mineskin.org'
# 默认值 'OFF'
skinRestorer: LOGIN

# 皮肤修复错误重试次数
# 默认值: 2
skinRestorerRetry: 5

此节点代表 Minecraft 原版验证

official:
name: "正版"
body:
url: "https://sessionserver.mojang.com/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"

设置所有网络请求的超时时间

默认值 '10000'

servicesTimeOut: 10000

全局白名单开关

默认值 'true'

whitelist: false

玩家允许设置的用户名正则,不匹配将会拒绝登入请求。

当当前 Yggdrasil 账户验证服务器设置中对应设置节点存在值时,此节点对于该验证服务器无效。

默认值 '^[0-9a-zA-Z_]{1,16}$'

nameAllowedRegular: '^[0-9a-zA-Z_]{1,16}$'

插件数据的存放方式

sql:

数据库类型设置

目前至支持以下值:

H2

MYSQL

默认值 'H2'

backend: H2

数据库地址

默认值 '127.0.0.1'

ip: '127.0.0.1'

数据库端口

默认值 '3306'

port: 3306

数据库用户名

默认值 'root'

username: 'root'

数据库密码

默认值 '12345'

password: '12345'

数据库名称

默认值 'multilogin'

database: 'multilogin'

前缀

默认值 'multilogin'

prefix: 'multilogin'

日志

[10:45:34] [Server thread/INFO]: [MultiLogin] Enabling MultiLogin v0.3.15
[10:45:34] [Server thread/INFO]: [MultiLogin] 加载文件: config.yml
[10:45:34] [Server thread/INFO]: [MultiLogin] 添加 Yggdrasil 账户验证服务器 Demo Yggdrasil(demo)。
[10:45:34] [Server thread/INFO]: [MultiLogin] 添加 Yggdrasil 账户验证服务器 正版(official)。
[10:45:34] [Server thread/INFO]: [MultiLogin] 成功连接到 H2 数据库
[10:45:35] [Server thread/INFO]: [MultiLogin] 插件加载完毕
[10:45:35] [Server thread/INFO]: [CatSeedLogin] Enabling CatSeedLogin v1.4.0-SNAPSHOT
[10:45:35] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
[10:45:35] [Server thread/INFO]: Done (8.834s)! For help, type "help"
[10:45:35] [Craft Scheduler Thread - 0/INFO]: [CatSeedLogin] 缓存加载 3 个数据
[10:46:45] [Server thread/INFO]: com.mojang.authlib.GameProfile@342d863b[id=,name=Domnick_JYH,properties={},legacy=false] (/127.0.0.1:59158) lost connection: Disconnected

复现步骤

...

确认一遍

  • 我已完成且认真地填写完了报告所需要的信息
  • 我确保没有重复的报告 (搜索一下)

希望能够支持 Velocity

希望能够支持 Velocity
我知道这个可能会造成较大工作量,但是 Velocity 在性能和资源使用方面仍然遥遥领先于 Bungeecord ,并且使用者越来越多,因此我诚挚的希望能够支持 Velocity
如果此建议被驳回,我可以理解,毕竟 Velocity 使用了新的 API,并且作为新生的软件所提供的文档详细度是不能与 Bungeecord 这种老牌所相比的,如果要支持那就等同于增加了插件开发和维护的成本

Config已经关闭了白名单但是玩家仍然需要白名单才能登陆

`services:
official:
name: "正版"
body:
url: "https://sessionserver.mojang.com/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"
whitelist: false

blessingSkin:
name: "Blessing Skin"
body:
url: "https://skin.prinzeugen.net/api/yggdrasil/sessionserver/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"
postMode: false
passIp: false
passIpContent: "&ip={ip}"
postContent: '{"username":"{username}", "serverId":"{serverId}"}'
whitelist: false
whitelist: false
convUuid: DEFAULT
convRepeat: true
nameAllowedRegular: ''
refuseRepeatedLogin: false
authRetry: 1
skinRestorer: Off
skinRestorerRetry: 2`

配置文件如上
即便关闭了白名单,玩家仍然需要白名单来进入游戏,否则就会显示
(TKP3M7EV4NCD5 6$30SJ_L
但是查看log的时候log没有显示任何报错和问题

`[2022-04-27 - 16:02:57] [Server thread - INFO]: 加载文件: config.yml

[2022-04-27 - 16:02:57] [Server thread - INFO]: 添加 Yggdrasil 账户验证服务器 正版(official)。

[2022-04-27 - 16:02:57] [Server thread - INFO]: 添加 Yggdrasil 账户验证服务器 Blessing Skin(blessingSkin)。

[2022-04-27 - 16:02:57] [Server thread - DEBUG]: Database url(H2): jdbc:h2:/data/mc/public/plugins/MultiLogin/multilogin;TRACE_LEVEL_FILE=0;TRACE_LEVEL_SYSTEM_OUT=0

[2022-04-27 - 16:02:58] [Server thread - INFO]: 成功连接到 H2 数据库
[2022-04-27 - 16:03:01] [Server thread - DEBUG]: bStats enabled
[2022-04-27 - 16:03:01] [Server thread - INFO]: 插件加载完毕
[2022-04-27 - 16:03:36] [MultiLogin Authenticator #1 - DEBUG]: Reading data from https://skin.prinzeugen.net/api/yggdrasil/sessionserver/session/minecraft/hasJoined?username=Bac2Reality&serverId=-3043f0841fbe6a47a49b14bcbfc16e6354e60e8e

[2022-04-27 - 16:03:38] [MultiLogin Authenticator #1 - DEBUG]: Response: {"id":"0c8484be934d3ac6807bef61a4e22516","name":"Bac2Reality","properties":[{"name":"textures","value":"eyJ0aW1lc3RhbXAiOjE2NTEwNDY2MTc4MTcsInByb2ZpbGVJZCI6IjBjODQ4NGJlOTM0ZDNhYzY4MDdiZWY2MWE0ZTIyNTE2IiwicHJvZmlsZU5hbWUiOiJCYWMyUmVhbGl0eSIsImlzUHVibGljIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHBzOi8vc2tpbi5wcmluLnN0dWRpby90ZXh0dXJlcy9mNWFkYjUyZGQ3NjJmNmRkODU5MzkxMDIxNjdjZjY0MDc0MTIzOWQ4YTM3NDk4ZTcwNjU0MzdkYTAxNzU0NjkzIiwibWV0YWRhdGEiOnsibW9kZWwiOiJzbGltIn19fSwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWV9","signature":"X6OS67MpGOpr+M9owQkFbwHOHIiQ7u3AnLyYEbIj83O+1ObpxiOVE18mxkconlY4JPKFPjndoV0mah1/vz0fCpe/bta9f8z2377e2fV3LzsssNMIL+S+YoEpcjfbXWK5INUr3GFVdl9QQg5PleyABPtC1rPiGscyct1Zd5c3kW9FYMP4oa7M79YuqhT7vxdHPClZse/r2hDJActJ7GKegOTPfbGcjau995eFKSuskjkWZ5KFMtVkfbxw6AZh52/OujBpiFLpTmSrLrPsZtSpzsSS3Y3pfBU6Gu5qaROsfTgqdiK3noLbbuJctZlHSE3UVcu769RSsAOgYHP+C8nq8tdOybW++7QhdfIhtvBLJjmXpjIimoFB5XVFBA5lD0r7ITDajJumz37zkLxD5OQhi9JmpriRCJrRTr/0e/iY0baYih7ujBuvDbhUgqocyTyMYTApvhNaYcjPE6AUXyi1yseSJ79Cz8PkrAwnVJy/HThnnuiR0Nm7IEoePLHhcPn0esVsYbtJUzr8vdy15ZcWbm05muqhXnK8WXQldgUN9q4p9G6939lJPBcoeaBJEXLzDo/Zq0gULrnzveyCNuepUJ/m8XpIVA26AudGeltU+LhiwPK+4GKG0DlHRCXnICIFs4+SWn+aRhZZrXllNxzDB6JXSKpl6v56XgbXSRNNeW8="}]}. (https://skin.prinzeugen.net/api/yggdrasil/sessionserver/session/minecraft/hasJoined?username=Bac2Reality&serverId=-3043f0841fbe6a47a49b14bcbfc16e6354e60e8e)

[2022-04-27 - 16:07:03] [MultiLogin Async #1 - DEBUG]: receive:
[2022-04-27 - 16:07:03] [MultiLogin Async #1 - DEBUG]: bStats submit success`

[错误报告] BC端 无法使用除正版登录以外的登录方式

BUG描述

正版可以直接进入游戏
YggdrasilOfficial 和 统一通行证 均无法进入游戏
image

MultiLogin版本

MultiLogin v0.3.13

服务端版本

travertine-1.16-191.jar

系统架构

centos 7 / amd64 | zulu JDK 11.54.25

配置文件

###################################
#       MultiLogin
#              --config
###################################

# 在这里,设置所有的 Yggdrasil 账户验证服务器。
services:

  # 这是一个示例配置:
  # 节点名称 'demo' 作为混合验证系统区分 Yggdrasil 验证服务器唯一性的凭据,设置好后请不要随意的去改动它,
  # 随意的更改节点名称将会导致二次验证系统无法验明用户身份而拒绝用户的登入请求。
  # 可以仿写此节点用来添加新的 Yggdrasil 账户验证服务器。
  demo:

    # 启用该验证服务器。
    # 值为 'false' 时将不添加该 Yggdrasil 账户验证服务器到混合登入系统中去,将拒绝一切使用该 Yggdrasil 账户验证服务器的玩家登入游戏。
    # 默认值 'true'
    enable: true

    # 该账户验证服务器中的别称。
    # 不用于父节点名称,此节点的值可以随意修改。
    # 必填值,在 Bukkit 服务端中作为变量传递。
    name: "Yggdrasil"

    # Yggdrasil 账户验证服务器的基本属性和信息设置。
    body:

      # Yggdrasil 账户验证服务器服务端 hasJoined 阶段部分验证请求链接设置。
      # 此节点必须指定完整的请求链接。
      # 其中 GET 请求中的占位变量 {username} 表示 username,占位变量 {serverId} 表示 serverId,
      #        占位变量 {passIpContent} 表示 passIpContent 节点所设置的内容。
      # 请求的 URL 对大小写敏感,设置需谨慎!
      # 一些例子:
      #      GET: "https://example.com/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"
      #      GET: "https://example.com/session/minecraft/hasJoined?username={username}&serverId={serverId}"
      #      POST: "https://example.com/session/minecraft/hasJoined"
      # 必填值
      url: "https://skins.域名.fun/api/yggdrasil/sessionserver/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"

      # hasJoined 阶段使用 POST 请求的方式验证账户身份。
      # 绝大多数下, Yggdrasil 账户验证服务器 hasJoined 阶段都采用 GET 请求方式验证用户数据的,
      # 如果你不了解当前 Yggdrasil 验证流程的话,请勿擅自改动它。
      # 默认值 'false'
      postMode: false

      # hasJoined 阶段是否向 Yggdrasil 账户验证服务器传递用户 IP 信息,如果存在。
      # 默认值 'false'
      passIp: false

      # 设置 url 节点 {passIpContent} 变量内容,
      # 其中,变量 {ip} 为所获取到的 IP 信息。
      # 仅当 passIp 节点为 true 时此节点有效。
      # 请求的 URL 对大小写敏感,设置需谨慎!
      # 请留意字符串拼接的特殊值 '&' 和 ', '
      # 一些例子:
      #      GET: '&ip={ip}'
      #      POST: ', "ip":"{ip}"'
      # 默认值 '&ip={ip}'
      passIpContent: "&ip={ip}"

      # 设置 post 的请求内容。
      # 其中 POST 请求中的占位变量 {username} 表示 username,占位变量 {serverId} 表示 serverId,
      #        占位变量 {passIpContent} 表示 passIpContent 节点所设置的内容。
      # 请求的 URL 对大小写敏感,设置需谨慎!
      # 一些例子:
      #        '{"username":"{username}", "serverId":"{serverId}"{passIpContent}}'
      #        '{"username":"{username}", "serverId":"{serverId}"}'
      # 默认值 '{"username":"{username}", "serverId":"{serverId}"}'
      postContent: '{"username":"{username}", "serverId":"{serverId}"}'

    # 设置玩家首次登入后游戏内的 UUID 生成规则
    # 目前只支持以下值:
    #   DEFAULT   - 使用 Yggdrasil 账户证服务器提供的在线 UUID
    #   OFFLINE   - 自动生成离线 UUID
    #   RANDOM    - 随机 UUID
    # 请谨慎设置和修改此节点,避免增加日后维护的心智负担。
    # 为避免触发 Paper 端的某些机制,强烈建议此值为 DEFAULT
    # 默认值 'DEFAULT'
    convUuid: DEFAULT

    # 当玩家首次登入时分配到的 UUID 已被使用,自动更正到随机的 UUID。
    # 请尽量保持此值为 true ,除非您了解后果是什么。
    # 默认值 'true'
    convRepeat: true

    # 玩家允许设置的用户名正则。
    # 若不匹配将会拒绝当前玩家的登入请求
    # 如果此值留空或未设置,则应用根节点下 'nameAllowedRegular' 节点值。
    # 默认值 ''
    nameAllowedRegular: ''

    # 是否为当前验证服务器单独开启白名单。
    # 当全局白名单为 true 时,此节点强制为 true。
    # 默认值: false
    whitelist: false

    # 设置占线登入机制,登入时游戏内存在有相同游戏内 UUID 的玩家时
    # 若为 false 将把游戏内玩家踢出,允许验证中的玩家登入(原版默认)
    # 若为 true 则拒绝当前的登入请求
    # 默认值: false
    refuseRepeatedLogin: true

    # 验证错误重试次数
    # 默认值: 1
    authRetry: 1

    # 皮肤修复规则,用来解决不同 Yggdrasil 账户验证服务器下的皮肤不可见问题。
    #    比如使用 Minecraft 原版验证服务器的玩家无法看到使用第三方外置验证登入玩家的皮肤。
    # 目前只支持设置以下值:
    #   OFF       - 关闭这个功能
    #   LOGIN     - 占用登入时间进行皮肤修复操作(修复时间过长会导致登入超时)
    #   ASYNC     - 登入后修复(修复成功后需要重新连接服务器)
    # 系统将会自动过滤掉皮肤源域名为 '*.minecraft.net' 的情况
    # 皮肤修复服务器来自 'mineskin.org'
    # 默认值 'OFF'
    skinRestorer: ASYNC

    # 皮肤修复错误重试次数
    # 默认值: 2
    skinRestorerRetry: 2

  # 此节点代表 Minecraft 原版验证
  official:
    name: "正版"
    body:
      url: "https://sessionserver.mojang.com/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"
  nide8:
    name: "统一通行证"
    body:
    # 假设当前服务器 UID 为 {uid}
      url: "https://auth2.nide8.com:233/7098f99d065e11e99250525400000000/sessionserver/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"


# 设置所有网络请求的超时时间
# 默认值 '10000'
servicesTimeOut: 10000

# 全局白名单开关
# 默认值 'true'
whitelist: false

# 玩家允许设置的用户名正则,不匹配将会拒绝登入请求。
# 当当前 Yggdrasil 账户验证服务器设置中对应设置节点存在值时,此节点对于该验证服务器无效。
# 默认值 '^[0-9a-zA-Z_]{1,16}$'
nameAllowedRegular: '^[0-9a-zA-Z_]{1,16}$'

# 插件数据的存放方式
sql:

  # 数据库类型设置
  # 目前至支持以下值:
  # H2
  # MYSQL
  # 默认值 'H2'
  backend: MYSQL

  # 数据库地址
  # 默认值 '127.0.0.1'
  ip: '127.0.0.1'

  # 数据库端口
  # 默认值 '3306'
  port: 3306

  # 数据库用户名
  # 默认值 'root'
  username: '用户名'

  # 数据库密码
  # 默认值 '12345'
  password: '密码'

  # 数据库名称
  # 默认值 'multilogin'
  database: '数据库'

  # 前缀
  # 默认值 'multilogin'
  prefix: 'multilogin'

日志

没有明显的错误

*** Hey! This build is potentially outdated :( ***
*** Please check for a new build from https://papermc.io/downloads ***
*** Should this build be outdated, you will get NO support for it. ***
*** Server will start in 10 seconds ***
[00:15:44 INFO]: Using mbed TLS based native cipher.
[00:15:44 INFO]: Using zlib based native compressor.
[00:15:44 INFO]: Enabled Travertine version git:Travertine-Bootstrap:1.16-R0.5-SNAPSHOT:fd9bd60:191
[00:15:44 INFO]: Not on Windows, attempting to use enhanced EpollEventLoop
[00:15:44 INFO]: Epoll is working, utilising it!
[00:15:44 INFO]: Discovered module: ModuleSpec(name=cmd_alert, file=modules/cmd_alert.jar, provider=JenkinsModuleSource())
[00:15:44 INFO]: Discovered module: ModuleSpec(name=cmd_find, file=modules/cmd_find.jar, provider=JenkinsModuleSource())
[00:15:44 INFO]: Discovered module: ModuleSpec(name=cmd_list, file=modules/cmd_list.jar, provider=JenkinsModuleSource())
[00:15:44 INFO]: Discovered module: ModuleSpec(name=cmd_send, file=modules/cmd_send.jar, provider=JenkinsModuleSource())
[00:15:44 INFO]: Discovered module: ModuleSpec(name=cmd_server, file=modules/cmd_server.jar, provider=JenkinsModuleSource())
[00:15:44 INFO]: Discovered module: ModuleSpec(name=reconnect_yaml, file=modules/reconnect_yaml.jar, provider=JenkinsModuleSource())
[00:15:44 INFO]: Loaded plugin reconnect_yaml version git:reconnect_yaml:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:45 INFO]: Loaded plugin LuckPerms version 5.4.15 by Luck
[00:15:45 INFO]: Loaded plugin MiaoChat version 2.0.0 by 喵♂呜
[00:15:45 INFO]: Loaded plugin cmd_list version git:cmd_list:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:45 INFO] [MultiLogin]: Loading libraries...
[00:15:47 INFO]: Loaded plugin MultiLogin version 0.3.13 by ksqeib, CaaMoe
[00:15:47 INFO]: Loaded plugin cmd_find version git:cmd_find:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:47 INFO] [MiraiMC]: Verifying maven-metadata-net.mamoe.mirai-core-all.xml
[00:15:47 INFO] [MiraiMC]: Verifying mirai-core-all-2.11.0-M2.2.jar
[00:15:48 INFO] [MiraiMC]: Loading library mirai-core-all-2.11.0-M2.2.jar
WARNING: Illegal reflective access by me.dreamvoid.miraimc.internal.URLClassLoaderAccess$Reflection (file:/www/wwwroot/mc/S0r/BC/plugins/MiraiMC-Bungee.jar) to method java.net.URLClassLoader.addURL(java.net.URL)
[00:15:48 INFO]: Loaded plugin MiraiMC version 1.6 by DreamVoid
[00:15:48 INFO]: Loaded plugin ColorMOTD version 1.5.3 by andylizi
[00:15:48 INFO]: Loaded plugin HECore version 0.0.2 by Hellmessage
[00:15:48 INFO]: Loaded plugin cmd_server version git:cmd_server:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:48 INFO]: Loaded plugin cmd_alert version git:cmd_alert:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:48 INFO]: Loaded plugin yuanluServerDo version 1.1.7 by yuanlu
[00:15:48 INFO]: Loaded plugin cmd_send version git:cmd_send:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:48 INFO]: Loaded plugin BungeeTabListPlus version 3.4.4 by CodeCrafter47
[00:15:48 INFO]: Loaded plugin Chat2QQ version 1.5 by DreamVoid
[00:15:48 WARN]: Forced host server pvp is not defined
[00:15:48 INFO]: Enabled plugin reconnect_yaml version git:reconnect_yaml:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:48 INFO]:         __    
[00:15:48 INFO]:   |    |__)   LuckPerms v5.4.15
[00:15:48 INFO]:   |___ |      Running on BungeeCord - Travertine
[00:15:48 INFO]: 
[00:15:48 INFO] [LuckPerms]: Loading configuration...
[00:15:48 INFO] [LuckPerms]: Loading storage provider... [MYSQL]
[00:15:48 INFO] [me.lucko.luckperms.lib.hikari.HikariDataSource]: luckperms-hikari - Starting...
[00:15:49 INFO] [me.lucko.luckperms.lib.hikari.HikariDataSource]: luckperms-hikari - Start completed.
[00:15:49 INFO] [LuckPerms]: Loading messaging service... [SQL]
[00:15:49 INFO] [LuckPerms]: Loading internal permission managers...
[00:15:49 INFO] [LuckPerms]: Performing initial data load...
[00:15:49 INFO] [LuckPerms]: Successfully enabled. (took 1476ms)
[00:15:49 INFO]: Enabled plugin LuckPerms version 5.4.15 by Luck
[00:15:49 INFO] [MiaoChat]: 注意: 通过BC转发的聊天信息将不会在控制台显示 仅客户端可见!
[00:15:49 INFO]: Enabled plugin MiaoChat version 2.0.0 by 喵♂呜
[00:15:49 INFO]: Enabled plugin cmd_list version git:cmd_list:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:59 INFO] [MultiLogin]: 加载文件: config.yml
[00:16:00 INFO] [MultiLogin]: 加载文件: message.properties
[00:16:00 INFO] [MultiLogin]: 添加 Yggdrasil 账户验证服务器 Yggdrasil(demo)。
[00:16:00 INFO] [MultiLogin]: 添加 Yggdrasil 账户验证服务器 正版(official)。
[00:16:00 INFO] [MultiLogin]: 添加 Yggdrasil 账户验证服务器 统一通行证(nide8)。
[00:16:00 INFO] [moe.caa.multilogin.lib.com.zaxxer.hikari.HikariDataSource]: HikariPool-1 - Starting...
[00:16:00 INFO] [moe.caa.multilogin.lib.com.zaxxer.hikari.HikariDataSource]: HikariPool-1 - Start completed.
[00:16:00 INFO] [MultiLogin]: 成功连接到 MYSQL 数据库
[00:16:00 INFO] [MultiLogin]: 插件加载完毕
[00:16:00 INFO]: Enabled plugin MultiLogin version 0.3.13 by ksqeib, CaaMoe
[00:16:00 INFO]: Enabled plugin cmd_find version git:cmd_find:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:16:00 INFO] [MiraiMC]: Mirai working dir: default
[00:16:00 INFO] [MiraiMC]: Starting Mirai-Events listener.
[00:16:00 INFO] [MiraiMC]: Registering commands.
[00:16:00 INFO] [MiraiMC]: Loading auto-login file.
[00:16:00 INFO] [MiraiMC]: Initializing SQLite database.
[00:16:00 INFO] [MiraiMC]: [AutoLogin] Starting auto login task.
[00:16:00 INFO] [MiraiMC]: [AutoLogin] Auto login bot account: 503384825 Protocol: ANDROID_PHONE
[00:16:00 INFO] [MiraiMC]: 登录新的机器人账号: 删, 协议: ANDROID_PHONE
[00:16:00 INFO] [MiraiMC]: Initializing bStats metrics.
[00:16:00 WARN] [MiraiMC]: 确保您正在使用开源的MiraiMC插件,未知来源的插件可能会盗取您的账号!
[00:16:00 WARN] [MiraiMC]: 请始终从Github或作者指定的其他途径下载插件: https://github.com/DreamVoid/MiraiMC
[00:16:00 INFO] [MiraiMC]: All tasks done. Welcome to use MiraiMC!
[00:16:00 INFO]: Enabled plugin MiraiMC version 1.6 by DreamVoid
[00:16:00 INFO] [MiraiMC]: Checking update...
[00:16:00 INFO] [ColorMOTD]: ColorMOTD v1.5.3 开始加载...
[00:16:00 INFO] [ColorMOTD]: │├正在载入配置文件..
[00:16:00 INFO] [ColorMOTD]: │├正在加载图标...
[00:16:00 INFO] [ColorMOTD]: ││├成功加载图标"1.png"
[00:16:00 INFO] [ColorMOTD]: ││├找不到维护模式下的图标"serviceModeIcon.png",将使用正常状态下的图标
[00:16:00 INFO] [ColorMOTD]: ├您在配置文件里禁止了更新提示,那记得经常去发布贴检查有没有新版本哦~
[00:16:00 INFO] [ColorMOTD]: ├正在注册MOTD监听器...
[00:16:00 INFO] [ColorMOTD]: ColorMOTD v1.5.3加载完成,用时66毫秒
[00:16:00 INFO]: Enabled plugin ColorMOTD version 1.5.3 by andylizi
[00:16:00 INFO] [HECore]: ┍ HECore
[00:16:00 INFO] [HECore]: ┝ 地狱核心
[00:16:00 INFO] [HECore]: ┝ 
[00:16:00 INFO] [HECore]: ┝ 作者:删
[00:16:00 INFO] [HECore]: ┝ 创作: 删
[00:16:00 INFO] [HECore]: ┝ 官方网站:删
[00:16:00 INFO] [HECore]: ┝ 官方交流群: 删
[00:16:00 INFO] [HECore]: ┝ 
[00:16:00 INFO] [HECore]: ┝ 当前版本: v0.0.2
[00:16:00 INFO] [HECore]: ┝ 已为最新版本,无需更新
[00:16:00 INFO] [HECore]: ┝ 
[00:16:00 INFO] [HECore]: ┕ 地狱核心部署完成
[00:16:00 INFO]: Enabled plugin HECore version 0.0.2 by Hellmessage
[00:16:00 INFO]: Enabled plugin cmd_server version git:cmd_server:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:16:00 INFO]: Enabled plugin cmd_alert version git:cmd_alert:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:16:00 INFO] [yuanluServerDo]: 元路跨服操作插件-启动(bungee)
[00:16:00 INFO]: Enabled plugin yuanluServerDo version 1.1.7 by yuanlu
[00:16:00 INFO]: Enabled plugin cmd_send version git:cmd_send:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:16:00 INFO]: Enabled plugin BungeeTabListPlus version 3.4.4 by CodeCrafter47
[00:16:00 INFO]: Enabled plugin Chat2QQ version 1.5 by DreamVoid
[00:16:00 INFO]: Listening on /0.0.0.0:25577
[00:16:01 INFO] [MiraiMC]: 你使用的是最新版本
[00:16:01 INFO] [MiraiMC]: Server list: 220.194.118.230:80, 157.148.54.249:443, 116.128.169.237:80, 111.206.99.88:443, 123.125.0.194:80, 59.83.208.163:14000, 112.65.195.55:443, 157.148.54.141:8080, msfwifi.3g.qq.com:8080, 123.125.0.224:80.
[00:16:02 INFO] [MiraiMC]: Loaded account secrets from local cache.
[00:16:02 INFO] [MiraiMC]: ECDH key is valid.
[00:16:02 INFO] [MiraiMC]: Saved account secrets to local cache for fast login.
[00:16:02 INFO] [MiraiMC]: Login successful.
[00:16:02 INFO] [MiraiMC]: Server time updated, serverTime: 1649175362, diff: 0ms=0.0s
[00:16:02 INFO] [MiraiMC]: Syncing friend message history...
[00:16:02 INFO] [MiraiMC]: Start loading friend list...
[00:16:02 INFO] [MiraiMC]: Start loading stranger list...
[00:16:02 INFO] [MiraiMC]: Successfully loaded stranger list: 0 in total
[00:16:02 INFO] [MiraiMC]: Syncing friend message history: Success.
[00:16:02 INFO] [MiraiMC]: No OtherClient online.
[00:16:02 INFO] [MiraiMC]: Start loading group list...
[00:16:02 INFO] [MiraiMC]: Successfully loaded friend list: 3 in total
[00:16:02 INFO] [MiraiMC]: Successfully loaded group list: 2 in total.
[00:16:02 INFO] [MiraiMC]: Scheduled refresh login session in 19d 23h 55min 0.0s.
[00:16:02 INFO] [MiraiMC]: Scheduled key refresh in 23h 55min 0.0s.
[00:16:02 INFO] [MiraiMC]: Bot login successful.
[00:16:02 INFO] [MiraiMC]: 艾兜(删) 登录成功
[00:16:16 INFO]: [/113.128.133.64:25673] <-> InitialHandler has connected
[00:16:21 INFO]: [/113.128.133.64:25678] <-> InitialHandler has connected

复现步骤

1.正常操作(应该是没有问题),他就是不行(好气啊)
2.客户端版本是1.7.10
3.BC端插件
image

4.子服务器没有开启正版验证,确定是BC端出现的问题,因为子服务器并没有收到玩家进入游戏的事件

5.如果还需要补充什么请告诉,我会补充的
...

确认一遍

  • 我已完成且认真地填写完了报告所需要的信息
  • 我确保没有重复的报告 (搜索一下)

[错误报告] 1.19 插件无法初始化

BUG描述

[18:45:59 ERROR]: [MultiLogin] A FATAL ERROR WAS ENCOUNTERED WHILE INITIALIZING THE PLUGIN.
java.lang.NoSuchFieldException: com.mojang.authlib.minecraft.MinecraftSessionService
at moe.caa.multilogin.core.util.ReflectUtil.getField(ReflectUtil.java:60) ~[?:?]
at moe.caa.multilogin.bukkit.main.MultiLoginBukkitPluginBootstrap.initService(MultiLoginBukkitPluginBootstrap.java:80) ~[?:?]
at moe.caa.multilogin.core.main.MultiCore.init0(MultiCore.java:119) ~[?:?]
at moe.caa.multilogin.core.main.MultiCore.init(MultiCore.java:82) ~[?:?]
at moe.caa.multilogin.bukkit.main.MultiLoginBukkitPluginBootstrap.onEnable(MultiLoginBukkitPluginBootstrap.java:55) ~[?:?]
at moe.caa.multilogin.bukkit.loader.main.MultiLoginBukkitLoader.onEnable(MultiLoginBukkitLoader.java:39) ~[MultiLogin-Bukkit-Build_1654851756.jar:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[paper-api-1.19-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[paper-api-1.19-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:536) ~[paper-api-1.19-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_19_R1.CraftServer.enablePlugin(CraftServer.java:554) ~[paper-1.19.jar:git-Paper-"02b5ec4"]
at org.bukkit.craftbukkit.v1_19_R1.CraftServer.enablePlugins(CraftServer.java:468) ~[paper-1.19.jar:git-Paper-"02b5ec4"]
at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:633) ~[paper-1.19.jar:git-Paper-"02b5ec4"]
at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:419) ~[paper-1.19.jar:git-Paper-"02b5ec4"]
at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:306) ~[paper-1.19.jar:git-Paper-"02b5ec4"]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1121) ~[paper-1.19.jar:git-Paper-"02b5ec4"]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:302) ~[paper-1.19.jar:git-Paper-"02b5ec4"]
at java.lang.Thread.run(Thread.java:833) ~[?:?]

MultiLogin版本

vBuild_1654851755

系统架构

Windows/amd64

配置文件

无修改配置文件

日志

   现在时间为18:42:42.64   今天是2022/06/10 周五

============================================================
服务器 正在启动... [重启次数: 1]

WARNING: Using incubator modules: jdk.incubator.vector
Applying patches
Starting org.bukkit.craftbukkit.Main
System Info: Java 17 (Java HotSpot(TM) 64-Bit Server VM 17.0.1+12-LTS-39) Host: Windows 10 10.0 (amd64)
Loading libraries, please wait...
[18:45:35 INFO]: Building unoptimized datafixer
[18:45:37 INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[18:45:39 INFO]: Loaded 7 recipes
[18:45:40 INFO]: Starting minecraft server version 1.19
[18:45:40 INFO]: Loading properties
[18:45:40 INFO]: This server is running Paper version git-Paper-"02b5ec4" (MC: 1.19) (Implementing API version 1.19-R0.1-SNAPSHOT) (Git: 02b5ec4 on dev/1.19)
[18:45:40 INFO]: Server Ping Player Sample Count: 12
[18:45:40 INFO]: Using 4 threads for Netty based IO
[18:45:40 INFO]: Default game type: SURVIVAL
[18:45:40 INFO]: Generating keypair

[18:45:40 INFO]: Starting Minecraft server on *:25565
[18:45:40 INFO]: Using default channel type
[18:45:40 INFO]: Paper: Using Java 11 compression from Velocity.
[18:45:40 INFO]: Paper: Using Java cipher from Velocity.
[18:45:41 INFO]: [MultiLogin] Loading MultiLogin vBuild_1654851755
[18:45:41 INFO]: [MultiLogin] Loading libraries...
[18:45:43 INFO]: Server permissions file permissions.yml is empty, ignoring it
[18:45:43 INFO]: Preparing level "world"
[18:45:43 ERROR]: Could not set generator for default world 'world': Plugin 'WaterWorld' does not exist
[18:45:43 INFO]: Preparing start region for dimension minecraft:overworld
[18:45:44 INFO]: Time elapsed: 77 ms
[18:45:44 INFO]: [MultiLogin] Enabling MultiLogin vBuild_1654851755
[18:45:44 WARN]: [MultiLogin] #################################################
[18:45:44 WARN]: [MultiLogin] #
[18:45:44 WARN]: [MultiLogin] # 您正在使用的版本为不受支持的自动构建版本
[18:45:44 WARN]: [MultiLogin] # 可能会包含一些恶性 BUG
[18:45:44 WARN]: [MultiLogin] #
[18:45:44 WARN]: [MultiLogin] # Build Time: Fri Jun 10 17:02:36 GMT+08:00 2022
[18:45:44 WARN]: [MultiLogin] # Version : Build_1654851756
[18:45:44 WARN]: [MultiLogin] ################################################
[18:45:44 WARN]: [MultiLogin] 服务器将在 15 秒后继续启动
[18:45:44 INFO]: [MultiLogin] 联网检查的最新版本为 0.3, 当前版本为 Build_1654851755, 请注意及时更新。
[18:45:59 INFO]: [MultiLogin] 加载文件: config.yml
[18:45:59 INFO]: [MultiLogin] 添加 Yggdrasil 账户验证服务器 Demo Yggdrasil(demo), 但未启用它。
[18:45:59 INFO]: [MultiLogin] 添加 Yggdrasil 账户验证服务器 正版(official)。
[18:45:59 INFO]: [MultiLogin] 成功连接到 H2 数据库
[18:45:59 ERROR]: [MultiLogin] A FATAL ERROR WAS ENCOUNTERED WHILE INITIALIZING THE PLUGIN.
java.lang.NoSuchFieldException: com.mojang.authlib.minecraft.MinecraftSessionService
at moe.caa.multilogin.core.util.ReflectUtil.getField(ReflectUtil.java:60) ~[?:?]
at moe.caa.multilogin.bukkit.main.MultiLoginBukkitPluginBootstrap.initService(MultiLoginBukkitPluginBootstrap.java:80) ~[?:?]
at moe.caa.multilogin.core.main.MultiCore.init0(MultiCore.java:119) ~[?:?]
at moe.caa.multilogin.core.main.MultiCore.init(MultiCore.java:82) ~[?:?]
at moe.caa.multilogin.bukkit.main.MultiLoginBukkitPluginBootstrap.onEnable(MultiLoginBukkitPluginBootstrap.java:55) ~[?:?]
at moe.caa.multilogin.bukkit.loader.main.MultiLoginBukkitLoader.onEnable(MultiLoginBukkitLoader.java:39) ~[MultiLogin-Bukkit-Build_1654851756.jar:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[paper-api-1.19-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[paper-api-1.19-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:536) ~[paper-api-1.19-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_19_R1.CraftServer.enablePlugin(CraftServer.java:554) ~[paper-1.19.jar:git-Paper-"02b5ec4"]
at org.bukkit.craftbukkit.v1_19_R1.CraftServer.enablePlugins(CraftServer.java:468) ~[paper-1.19.jar:git-Paper-"02b5ec4"]
at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:633) ~[paper-1.19.jar:git-Paper-"02b5ec4"]
at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:419) ~[paper-1.19.jar:git-Paper-"02b5ec4"]
at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:306) ~[paper-1.19.jar:git-Paper-"02b5ec4"]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1121) ~[paper-1.19.jar:git-Paper-"02b5ec4"]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:302) ~[paper-1.19.jar:git-Paper-"02b5ec4"]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
[18:45:59 INFO]: Running delayed init tasks
[18:45:59 INFO]: Done (19.144s)! For help, type "help"
[18:45:59 INFO]: Stopping server
[18:45:59 INFO]: [MultiLogin] Disabling MultiLogin vBuild_1654851755
[18:45:59 INFO]: Saving players
[18:45:59 INFO]: Saving worlds
[18:45:59 INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld
[18:45:59 INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved
[18:45:59 INFO]: ThreadedAnvilChunkStorage: All dimensions are saved
[18:45:59 INFO]: Flushing Chunk IO

复现步骤

下载https://purpurmc.org/downloads/1.19中的最新服务端文件
安装multilogin插件
启动服务器
等待此报错出现后,服务器会停止

确认一遍

  • 我已完成且认真地填写完了报告所需要的信息
  • 我确保没有重复的报告 (搜索一下)

对于BC分支的致命错误

BUG描述

无法启动,报错

MultiLogin版本

从0.3.15往前的更多版本

系统架构

linux/amd64

配置文件

全默认

日志

A FATAL ERROR WAS ENCOUNTERED WHILE INITIALIZING THE PLUGIN.

java.lang.ClassCastException: gnu.trove.map.hash.TIntObjectHashMap cannot be cast to [Ljava.lang.Object;
at fun.ksnb.multilogin.bungee.main.MultiLoginBungeePluginBootstrap.initService(MultiLoginBungeePluginBootstrap.java:79)
at moe.caa.multilogin.core.main.MultiCore.init0(MultiCore.java:119)
at moe.caa.multilogin.core.main.MultiCore.init(MultiCore.java:82)
at fun.ksnb.multilogin.bungee.main.MultiLoginBungeePluginBootstrap.onEnable(MultiLoginBungeePluginBootstrap.java:54)
at fun.ksnb.multilogin.bungee.loader.main.MultiLoginBungeeLoader.onEnable(MultiLoginBungeeLoader.java:35)
at net.md_5.bungee.api.plugin.PluginManager.enablePlugins(PluginManager.java:265)
at net.md_5.bungee.BungeeCord.start(BungeeCord.java:294)
at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:118)
at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15)

复现步骤

我使用的并不是原版的BC,它是来自BC的一个分支,向下兼容了1.7X
地址:https://github.com/HexagonMC/BungeeCord/releases,使用的版本为V280
不需要进行任何操作,只要把插件丢进plugins,它就一定会报错,并且导致整个服务器关闭

确认一遍

  • 我已完成且认真地填写完了报告所需要的信息
  • 我确保没有重复的报告 (搜索一下)

[Bug Report] 不兼容 authlib-injector 1.2.0

Bug Description

当用户使用 authlib-injector 1.2.0 的客户端,进入使用 MultiLogin 的 1.19+ 服务器时,会报 Invalid signature for profile public key. Try restarting your game. 错误。

细节请参考 authlib-injector v1.2.0 Release Notes 以及 yushijinhun/authlib-injector#158。authlib-injector 为了应对 Minecraft 1.19 的聊天消息签名机制,在 v1.2.0 版本中会向服务端发送一个随机生成的 Profile Key,以及内容为一个零字节的数字签名,代码实现参考此处。服务端校验 Profile Key 的签名时,不论内容如何,校验结果应始终通过,代码实现参考此处

这一改动将消除聊天消息中的感叹号,并且将允许服务端开启 enforce-secure-profile,以消除进入服务器时聊天消息可能被修改的警告。

但因为不论服务端是否启用 enforce-secure-profile,只要客户端发送了 Profile Key,服务端始终会校验其数字签名,并且在签名无效的情况下将会断开链接。因此,服务端必须使用措施绕过签名校验。对于使用 authlib-injector 的服务端,将版本升级到 v1.2.0 即可;而对于使用 MultiLogin 的服务端,目前 MultiLogin 暂不支持此功能。

MultiLogin Version

All versions

System Architecture

All architectures

Configurations

N/A

Logs

No response

Steps to reproduce

No response

Affected area

  • I included all information required in the sections above
  • I made sure there are no duplicates of this report (Use Search)

[建议] 请问可否增加对BC的fork版本HexagonMC 增加支持

描述功能请求

现版本无法支持HexagonMC,会在启动时显示出现错,然后关服

18:44:03 [INFO] [MultiLogin] 添加 Yggdrasil 账户验证服务器 Demo Yggdrasil(demo), 但未启用它。
18:44:03 [INFO] [MultiLogin] 添加 Yggdrasil 账户验证服务器 正版(official)。
18:44:03 [INFO] [MultiLogin] 成功连接到 H2 数据库
18:44:03 [SEVERE] [MultiLogin] A FATAL ERROR WAS ENCOUNTERED WHILE INITIALIZING THE PLUGIN.
java.lang.ClassCastException: class gnu.trove.map.hash.TIntObjectHashMap cannot be cast to class [Ljava.lang.Object; (gnu.trove.map.hash.TIntObjectHashMap is in unnamed module of loader 'app'; [Ljava.lang.Object; is in module java.base of loader 'bootstrap')
    at fun.ksnb.multilogin.bungee.main.MultiLoginBungeePluginBootstrap.initService(MultiLoginBungeePluginBootstrap.java:79)
    at moe.caa.multilogin.core.main.MultiCore.init0(MultiCore.java:119)
    at moe.caa.multilogin.core.main.MultiCore.init(MultiCore.java:82)
    at fun.ksnb.multilogin.bungee.main.MultiLoginBungeePluginBootstrap.onEnable(MultiLoginBungeePluginBootstrap.java:54)
    at fun.ksnb.multilogin.bungee.loader.main.MultiLoginBungeeLoader.onEnable(MultiLoginBungeeLoader.java:35)
    at net.md_5.bungee.api.plugin.PluginManager.enablePlugins(PluginManager.java:250)
    at net.md_5.bungee.BungeeCord.start(BungeeCord.java:294)
    at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:113)
    at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15)
18:44:03 [INFO] WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
18:44:03 [INFO] Enabled plugin MultiLogin version 0.3.13 by ksqeib, CaaMoe

描述你考虑过的备选方案

①将服务端更换为Velocity,但他有缺陷,插件生态太不完善了
②子服内使用bukkit的插件,但是透过BC的转发后,登录信息会显示离线用户

请确认此建议所影响的内容

  • 文档
  • 安装
  • 可扩展性
  • 安全
  • 用户体验
  • 测试和发布
  • 开发架构
  • 新的扩展
  • 其他

[建议] 增加http或者socks5代理

描述功能请求

希望可以增加代理支援 例如将玩家请求途径本地的socks5服务器转发,减少出现因为网路问题验证失败的问题

描述你考虑过的备选方案

No response

请确认此建议所影响的内容

  • 文档
  • 安装
  • 可扩展性
  • 安全
  • 用户体验
  • 测试和发布
  • 开发架构
  • 新的扩展
  • 其他

一个令人误解的 input

描述功能请求

xxxxx@ubuntu:~java -jar MultiLogin-DataUpgrade-1.0.jar
The config.yml file could not be found.
You need to create the input folder in the program's sibling directory, and then put the old files into it, Try again.

描述方面容易误解
或许 input 文件夹可以特别标注一下

描述你考虑过的备选方案

把插件放到插件配置文件夹的父目录
直接进行读取
我是觉得挺**的这话做法

请确认此建议所影响的内容

  • 文档
  • 安装
  • 可扩展性
  • 安全
  • 用户体验
  • 测试和发布
  • 开发架构
  • 新的扩展
  • 其他

[错误报告]

BUG描述

QQ截图20220509151804

MultiLogin版本

MultiLogin-Velocity-0.3.14

系统架构

velocity-3.1.2-SNAPSHOT-136
windows server 2022

配置文件

velocity.zip
这个是我的速度配置
插件本身无修改,直接装入的

日志

latest.log

复现步骤

1.装入MultiLogin插件
2.报错
3.回车关闭
...

确认一遍

  • 我已完成且认真地填写完了报告所需要的信息
  • 我确保没有重复的报告 (搜索一下)

velocity每次登录后台都会报错

velocity:3.1.1
velocity用的Hotspot构建的JDK11
MineCraft版本:1.12.2
用了官方服务器和sponge测试,不论是微软登入还是Yggdrasil,客户端连接后均会报以下错误:(从插件log里截的)

[2021-12-15 - 21:31:07] [Netty NIO Worker #10 - ERROR]: Exception during assignment.
java.lang.ClassCastException: Cannot cast com.velocitypowered.proxy.connection.client.LoginInboundConnection to com.velocitypowered.proxy.connection.client.InitialInboundConnection
	at java.lang.Class.cast(Class.java:3889) ~[?:?]
	at fun.ksnb.multilogin.velocity.auth.MultiLoginEncryptionResponse.getValues(MultiLoginEncryptionResponse.java:120) [MultiLogin-2374552369195948043-MultiLogin-Velocity.JarFile.jar:?]
	at fun.ksnb.multilogin.velocity.auth.MultiLoginEncryptionResponse.handle(MultiLoginEncryptionResponse.java:69) [MultiLogin-2374552369195948043-MultiLogin-Velocity.JarFile.jar:?]
	at com.velocitypowered.proxy.connection.MinecraftConnection.channelRead(MinecraftConnection.java:142) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [velocity.jar:3.1.1]
	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:89) [velocity.jar:3.1.1]
	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.channelRead(MinecraftDecoder.java:58) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [velocity.jar:3.1.1]
	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [velocity.jar:3.1.1]
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) [velocity.jar:3.1.1]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [velocity.jar:3.1.1]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [velocity.jar:3.1.1]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [velocity.jar:3.1.1]
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) [velocity.jar:3.1.1]
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) [velocity.jar:3.1.1]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) [velocity.jar:3.1.1]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) [velocity.jar:3.1.1]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) [velocity.jar:3.1.1]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [velocity.jar:3.1.1]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [velocity.jar:3.1.1]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [velocity.jar:3.1.1]
	at java.lang.Thread.run(Thread.java:833) [?:?]

以及

[2021-12-15 - 21:29:08] [Netty NIO Worker #3 - ERROR]: Exception during assignment.
java.lang.ClassCastException: Cannot cast com.velocitypowered.proxy.connection.client.LoginInboundConnection to com.velocitypowered.proxy.connection.client.InitialInboundConnection
	at java.lang.Class.cast(Class.java:3889) ~[?:?]
	at fun.ksnb.multilogin.velocity.auth.MultiLoginEncryptionResponse.getValues(MultiLoginEncryptionResponse.java:120) [MultiLogin-2374552369195948043-MultiLogin-Velocity.JarFile.jar:?]
	at fun.ksnb.multilogin.velocity.auth.MultiLoginEncryptionResponse.handle(MultiLoginEncryptionResponse.java:69) [MultiLogin-2374552369195948043-MultiLogin-Velocity.JarFile.jar:?]
	at com.velocitypowered.proxy.connection.MinecraftConnection.channelRead(MinecraftConnection.java:142) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [velocity.jar:3.1.1]
	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:89) [velocity.jar:3.1.1]
	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.channelRead(MinecraftDecoder.java:58) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [velocity.jar:3.1.1]
	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [velocity.jar:3.1.1]
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) [velocity.jar:3.1.1]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [velocity.jar:3.1.1]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [velocity.jar:3.1.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [velocity.jar:3.1.1]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [velocity.jar:3.1.1]
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) [velocity.jar:3.1.1]
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) [velocity.jar:3.1.1]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) [velocity.jar:3.1.1]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) [velocity.jar:3.1.1]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) [velocity.jar:3.1.1]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [velocity.jar:3.1.1]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [velocity.jar:3.1.1]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [velocity.jar:3.1.1]
	at java.lang.Thread.run(Thread.java:833) [?:?]

补充:velocity把ip转发换成None试过但是没有改善
在这个报错之后会出现验证账号的log是可以正常登陆的,只是相同id的情况下不会出现拒绝登录提示,而是会登陆超时

[Bug Report] where is fabric 1.19 version

Bug Description

[Bug Report] where is fabric 1.19 version

MultiLogin Version

latest

System Architecture

windows

Configurations

where is fabric 1.19 version

Logs

where is fabric 1.19 version

Steps to reproduce

where is fabric 1.19 version

Affected area

  • I included all information required in the sections above
  • I made sure there are no duplicates of this report (Use Search)

[Question] How to configure message.properties?

I apologize for possible spelling errors.

Describe feature request
The instructions say to create a message.properties file. I created it, but how do I set it up? I would like to translate the plugin into Russian or English.

Describe the alternatives you have considered
No response

Please confirm what this suggestion affects

  • Documentation
  • Install
  • Scalability
  • Safety
  • user experience
  • test and release
  • Development Architecture
  • new extension
  • other

[错误报告] 正版用户登入时提示Failed to verify username

BUG描述

用默认配置启动1.18.2版本Paper服务端后,使用1.18.2-forged客户端和正版账号进入服务器时报错,提示Failed to verify username

后附服务端日志与插件目录下的日志。

MultiLogin版本

0.3.12

系统架构

windows/amd64

配置文件

###################################

MultiLogin

--config

###################################

在这里,设置所有的 Yggdrasil 账户验证服务器。

services:

这是一个示例配置:

节点名称 'demo' 作为混合验证系统区分 Yggdrasil 验证服务器唯一性的凭据,设置好后请不要随意的去改动它,

随意的更改节点名称将会导致二次验证系统无法验明用户身份而拒绝用户的登入请求。

可以仿写此节点用来添加新的 Yggdrasil 账户验证服务器。

demo:

# 启用该验证服务器。
# 值为 'false' 时将不添加该 Yggdrasil 账户验证服务器到混合登入系统中去,将拒绝一切使用该 Yggdrasil 账户验证服务器的玩家登入游戏。
# 默认值 'true'
enable: false

# 该账户验证服务器中的别称。
# 不用于父节点名称,此节点的值可以随意修改。
# 必填值,在 Bukkit 服务端中作为变量传递。
name: "Demo Yggdrasil"

# Yggdrasil 账户验证服务器的基本属性和信息设置。
body:

  # Yggdrasil 账户验证服务器服务端 hasJoined 阶段部分验证请求链接设置。
  # 此节点必须指定完整的请求链接。
  # 其中 GET 请求中的占位变量 {username} 表示 username,占位变量 {serverId} 表示 serverId,
  #        占位变量 {passIpContent} 表示 passIpContent 节点所设置的内容。
  # 请求的 URL 对大小写敏感,设置需谨慎!
  # 一些例子:
  #      GET: "https://example.com/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"
  #      GET: "https://example.com/session/minecraft/hasJoined?username={username}&serverId={serverId}"
  #      POST: "https://example.com/session/minecraft/hasJoined"
  # 必填值
  url: "https://example.com/session/minecraft/hasJoined?username={username}&serverId={serverId}"

  # hasJoined 阶段使用 POST 请求的方式验证账户身份。
  # 绝大多数下, Yggdrasil 账户验证服务器 hasJoined 阶段都采用 GET 请求方式验证用户数据的,
  # 如果你不了解当前 Yggdrasil 验证流程的话,请勿擅自改动它。
  # 默认值 'false'
  postMode: false

  # hasJoined 阶段是否向 Yggdrasil 账户验证服务器传递用户 IP 信息,如果存在。
  # 默认值 'false'
  passIp: false

  # 设置 url 节点 {passIpContent} 变量内容,
  # 其中,变量 {ip} 为所获取到的 IP 信息。
  # 仅当 passIp 节点为 true 时此节点有效。
  # 请求的 URL 对大小写敏感,设置需谨慎!
  # 请留意字符串拼接的特殊值 '&' 和 ', '
  # 一些例子:
  #      GET: '&ip={ip}'
  #      POST: ', "ip":"{ip}"'
  # 默认值 '&ip={ip}'
  passIpContent: "&ip={ip}"

  # 设置 post 的请求内容。
  # 其中 POST 请求中的占位变量 {username} 表示 username,占位变量 {serverId} 表示 serverId,
  #        占位变量 {passIpContent} 表示 passIpContent 节点所设置的内容。
  # 请求的 URL 对大小写敏感,设置需谨慎!
  # 一些例子:
  #        '{"username":"{username}", "serverId":"{serverId}"{passIpContent}}'
  #        '{"username":"{username}", "serverId":"{serverId}"}'
  # 默认值 '{"username":"{username}", "serverId":"{serverId}"}'
  postContent: '{"username":"{username}", "serverId":"{serverId}"}'

# 设置玩家首次登入后游戏内的 UUID 生成规则
# 目前只支持以下值:
#   DEFAULT   - 使用 Yggdrasil 账户证服务器提供的在线 UUID
#   OFFLINE   - 自动生成离线 UUID
#   RANDOM    - 随机 UUID
# 请谨慎设置和修改此节点,避免增加日后维护的心智负担。
# 为避免触发 Paper 端的某些机制,强烈建议此值为 DEFAULT
# 默认值 'DEFAULT'
convUuid: DEFAULT

# 当玩家首次登入时分配到的 UUID 已被使用,自动更正到随机的 UUID。
# 请尽量保持此值为 true ,除非您了解后果是什么。
# 默认值 'true'
convRepeat: true

# 玩家允许设置的用户名正则。
# 若不匹配将会拒绝当前玩家的登入请求
# 如果此值留空或未设置,则应用根节点下 'nameAllowedRegular' 节点值。
# 默认值 ''
nameAllowedRegular: ''

# 是否为当前验证服务器单独开启白名单。
# 当全局白名单为 true 时,此节点强制为 true。
# 默认值: false
whitelist: false

# 设置占线登入机制,登入时游戏内存在有相同游戏内 UUID 的玩家时
# 若为 false 将把游戏内玩家踢出,允许验证中的玩家登入(原版默认)
# 若为 true 则拒绝当前的登入请求
# 默认值: false
refuseRepeatedLogin: false

# 验证错误重试次数
# 默认值: 1
authRetry: 1

# 皮肤修复规则,用来解决不同 Yggdrasil 账户验证服务器下的皮肤不可见问题。
#    比如使用 Minecraft 原版验证服务器的玩家无法看到使用第三方外置验证登入玩家的皮肤。
# 目前只支持设置以下值:
#   OFF       - 关闭这个功能
#   LOGIN     - 占用登入时间进行皮肤修复操作(修复时间过长会导致登入超时)
#   ASYNC     - 登入后修复(修复成功后需要重新连接服务器)
# 系统将会自动过滤掉皮肤源域名为 '*.minecraft.net' 的情况
# 皮肤修复服务器来自 'mineskin.org'
# 默认值 'OFF'
skinRestorer: OFF

# 皮肤修复错误重试次数
# 默认值: 2
skinRestorerRetry: 2

此节点代表 Minecraft 原版验证

official:
name: "正版"
body:
url: "https://sessionserver.mojang.com/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"

设置所有网络请求的超时时间

默认值 '10000'

servicesTimeOut: 10000

全局白名单开关

默认值 'true'

whitelist: true

玩家允许设置的用户名正则,不匹配将会拒绝登入请求。

当当前 Yggdrasil 账户验证服务器设置中对应设置节点存在值时,此节点对于该验证服务器无效。

默认值 '^[0-9a-zA-Z_]{1,16}$'

nameAllowedRegular: '^[0-9a-zA-Z_]{1,16}$'

插件数据的存放方式

sql:

数据库类型设置

目前至支持以下值:

H2

MYSQL

默认值 'H2'

backend: H2

数据库地址

默认值 '127.0.0.1'

ip: '127.0.0.1'

数据库端口

默认值 '3306'

port: 3306

数据库用户名

默认值 'root'

username: 'root'

数据库密码

默认值 '12345'

password: '12345'

数据库名称

默认值 'multilogin'

database: 'multilogin'

前缀

默认值 'multilogin'

prefix: 'multilogin'

日志

服务端日志(插件日志见下文):

[18:55:38 INFO]: Disconnecting com.mojang.authlib.GameProfile@3f5bcdb2[id=ffffffff-ffff-ffff-ffff-ffffffffffff,name=QyInvoLing,properties={},legacy=false] (/127.0.0.1:59086): Failed to verify username!
[18:55:38 WARN]: Exception verifying QyInvoLing
java.lang.IllegalArgumentException: Name and ID cannot both be blank
at com.mojang.authlib.GameProfile.(GameProfile.java:26) ~[authlib-3.3.39.jar:?]
at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillGameProfile(YggdrasilMinecraftSessionService.java:200) ~[authlib-3.3.39.jar:?]
at com.destroystokyo.paper.profile.PaperMinecraftSessionService.fillGameProfile(PaperMinecraftSessionService.java:38) ~[paper-1.18.2.jar:git-Paper-267]
at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillProfileProperties(YggdrasilMinecraftSessionService.java:187) ~[authlib-3.3.39.jar:?]
at com.destroystokyo.paper.profile.PaperMinecraftSessionService.fillProfileProperties(PaperMinecraftSessionService.java:31) ~[paper-1.18.2.jar:git-Paper-267]
at moe.caa.multilogin.bukkit.auth.MultiLoginYggdrasilMinecraftSessionService.fillProfileProperties(MultiLoginYggdrasilMinecraftSessionService.java:49) ~[?:?]
at com.destroystokyo.paper.profile.CraftPlayerProfile.complete(CraftPlayerProfile.java:229) ~[paper-1.18.2.jar:git-Paper-267]
at com.destroystokyo.paper.profile.CraftPlayerProfile.complete(CraftPlayerProfile.java:223) ~[paper-1.18.2.jar:git-Paper-267]
at net.minecraft.server.network.ServerLoginPacketListenerImpl$LoginHandler.fireEvents(ServerLoginPacketListenerImpl.java:401) ~[?:?]
at net.minecraft.server.network.ServerLoginPacketListenerImpl$2.run(ServerLoginPacketListenerImpl.java:339) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
[18:55:38 INFO]: com.mojang.authlib.GameProfile@3f5bcdb2[id=ffffffff-ffff-ffff-ffff-ffffffffffff,name=QyInvoLing,properties={},legacy=false] (/127.0.0.1:59086) lost connection: Failed to verify username!

插件日志:
[2022-03-29 - 18:55:17] [Server thread - INFO]: 加载文件: config.yml
[2022-03-29 - 18:55:17] [Server thread - INFO]: 添加 Yggdrasil 账户验证服务器 Demo Yggdrasil(demo), 但未启用它。
[2022-03-29 - 18:55:17] [Server thread - INFO]: 添加 Yggdrasil 账户验证服务器 正版(official)。
[2022-03-29 - 18:55:17] [Server thread - DEBUG]: Database url(H2): jdbc:h2:D:\Server1.18\plugins\MultiLogin/multilogin;TRACE_LEVEL_FILE=0;TRACE_LEVEL_SYSTEM_OUT=0
[2022-03-29 - 18:55:17] [Server thread - INFO]: 成功连接到 H2 数据库
[2022-03-29 - 18:55:17] [Server thread - DEBUG]: bStats enabled
[2022-03-29 - 18:55:17] [Server thread - INFO]: 插件加载完毕
[2022-03-29 - 18:55:37] [MultiLogin Authenticator #1 - DEBUG]: Reading data from https://sessionserver.mojang.com/session/minecraft/hasJoined?username=QyInvoLing&serverId=36a2108724180527de428354df48edb6db87fc53
[2022-03-29 - 18:55:38] [MultiLogin Authenticator #1 - DEBUG]: Response: {
"id" : "589a1318c1694465a57a8b0c82b0e625",
"name" : "QyInvoLing",
"properties" : [ {
"name" : "textures",
"value" : "ewogICJ0aW1lc3RhbXAiIDogMTY0ODU1MTMzNjg1MiwKICAicHJvZmlsZUlkIiA6ICI1ODlhMTMxOGMxNjk0NDY1YTU3YThiMGM4MmIwZTYyNSIsCiAgInByb2ZpbGVOYW1lIiA6ICJReUludm9MaW5nIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzU0OTIxM2I1NzRlZjEwMjhlYmIwNDFjZGJhMTk1MTgzNzA0OGU3NDc3MmIwYTI1NTZlNjQ5OGEzZmM2ZDU4NTUiLAogICAgICAibWV0YWRhdGEiIDogewogICAgICAgICJtb2RlbCIgOiAic2xpbSIKICAgICAgfQogICAgfSwKICAgICJDQVBFIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8yMzQwYzBlMDNkZDI0YTExYjE1YThiMzNjMmE3ZTllMzJhYmIyMDUxYjI0ODFkMGJhN2RlZmQ2MzVjYTdhOTMzIgogICAgfQogIH0KfQ==",
"signature" : "tpVcq11+JpfYjpPZ3DRSwOB55ACu9/AqSRxJ8OFdoxjGHJ2AOH08lYARrSfxIp6XI7HNpizUFvyeNedLRusowOwKjZM8nhnhvjM6r3w5colGekP4EobKPEG8B580E7O4DHzsTlxCCQSyyqpZZJWlZIJZgkQUoi8tgfSbfwKmHAHIK0UwLV80hhuuiYXHm5hmOV0Nc6fjs7tjmAmUMsh6AZtOLbstFzKhWds2JaGGntRL6o3WAxzk8T2wcIdYzKn+DZK1vIzI0H7QztuhfzvegB9dG+C8/099d9cVyWudVjqi0suQzjkWkTS/pGVzp0WpoyRciPBKZfL1AgoXY3mQyhB387lhkd324WkmSXBq1/5eaeEhRAXFiSalOGuYJp2X55+L280XU2roF3LPwWJYL2bz8vY+R2hG/6zrJbhKg8zJ+WBHud9Ik2l/xOh2NtXlYYP6QGO8ZUtxWhnyCWEbmHNAADhrM6Glo4r2jVNyNrSYJndKRbJrsY6SsKx8u+8abKYn5wIj1F95adxDKzmv/wAi7VU/S679vRv2x3VbZr35FooTG3wpXWHXmSuhNFXHqPGLokZIGOUKwI/gCUKj9kos8dwOyqLCPq2vy1g1caI20jdFia21oOAv9Wbx98Bqhr6lq9iAgvIfsQnQlxRKnlCY4ue1l2reDrQx+IS+dtQ="
} ]
}. (https://sessionserver.mojang.com/session/minecraft/hasJoined?username=QyInvoLing&serverId=36a2108724180527de428354df48edb6db87fc53)

复现步骤

1.启动服务端和客户端
2.客户端尝试连接服务端
3.服务端报错
...

确认一遍

  • 我已完成且认真地填写完了报告所需要的信息
  • 我确保没有重复的报告 (搜索一下)

[建议] 关于对geyser支持

描述功能请求

我使用了geyser-spigot来搭建双版本互联,以及使用了multilogin,但是我发现如果geyser想走第三方登录必须侧挂authlib,我设置完成后发现基岩版使用geyser登录时可以使用第三方的账号进行登录,但是如果正版Java玩家想使用基岩版登录时会被告知[此服务器需要一个付费的java账号]

描述你考虑过的备选方案

No response

请确认此建议所影响的内容

  • 文档
  • 安装
  • 可扩展性
  • 安全
  • 用户体验
  • 测试和发布
  • 开发架构
  • 新的扩展
  • 其他

[错误报告] 不兼容1.19.2

BUG描述

当1.19.2版本的外置登录玩家说话时,1.19.2版本正版登录玩家将会掉线并提示"聊天消息验证失败"
NRUTEWLM}WE5IHG$6NQ1X](https://user-images.githubusercontent.com/77864650/186324097-8222de1e-2b44-4696-b289-2cea20fd6d17.png) 后台截图 ![XDA2WWS5N WI)IJNT4(TA

注意:使用外置登录和正版登录玩家的聊天前缀不会显示[Not Secure],而使用1.19.1登陆的玩家、基岩版玩家以及开启BakaXL禁用聊天举报的1.19.2玩家聊天前缀则会显示,当外置登录玩家说话时这些玩家不会掉线。

MultiLogin版本

v0.3.16

系统架构

linux/amd64

配置文件

PasteBin

日志

image
此外无报错日志

复现步骤

1.1.19.2外置登录玩家和正版登录玩家同时进入服务器
2.1.19.2外置登录玩家说话
3.1.19.2正版登录玩家被强制退出游戏并提示“聊天消息验证失败”
...

确认一遍

  • 我已完成且认真地填写完了报告所需要的信息
  • 我确保没有重复的报告 (搜索一下)

[错误报告] 无法在 Velocity 上运行

BUG描述

服务器中除了MultiLogin还有Geyser和Floodgate
服务端版本:Velocity #195

MultiLogin版本

0.5.1

系统架构

windows/amd64

配置文件

#####################################################################
#
#     配置文件格式为 ‘YAML’,推荐使用 Visual Studio Code 浏览和编辑。
#          前往 ‘https://yaml.org/’ 查阅 YAML 配置语法
#
#           除了布尔值和整数、浮点数之外的配置,请使用引号包裹起来。
#
#    BUG REPORTS:   https://github.com/CaaMoe/MultiLogin/issues
#####################################################################

# 开启插件 DEBUG 日志。
#
# 此选项将会把插件内所有 DEBUG 日志转换成 INFO 日志。
# 默认值 false
debug: false

# 开启更新检查
#
# 插件将半天进行一次更新检查
# 默认值 true
checkUpdate: true

# 强制使用此登录
#
# 即强制使用 MultiLogin 来登录游戏。
# 默认值 true
forceUseLogin: true

# 全局禁用重名检查
#
# 默认值 false
disableDuplicateNamesCheck: false

# 插件数据设置
sql:

  # 数据库类型设置
  #
  # 请使用以下值:
  #   H2
  #   MYSQL
  # 默认值 ‘H2’
  backend: 'H2'

  # 数据库访问地址
  #
  # 默认值 ‘127.0.0.1’
  ip: 127.0.0.1

  # 端口
  #
  # 默认值 ‘3306’
  port: 3306

  # 用户名
  #
  # 默认值 ‘root’
  username: root

  # 访问密码
  #
  # 默认值 ‘root’
  password: root

  # 数据库名称
  #
  # 默认值 ‘multilogin’
  database: multilogin

  # 使用的数据表前缀。
  #
  # 使用时将会补充后缀符号 ‘_’
  # 请不要随意更改它,否则数据将消失
  # 默认值 ‘multilogin’
  tablePrefix: multilogin

  # 高级设定,指定连接 URL
  #
  # 默认值 ’‘
  connectUrl: ''

日志

[22:40:21] [main/INFO]: Booting up Velocity 3.1.2-SNAPSHOT (git-9cbaeb7b-b195)...
[22:40:21] [main/INFO]: Loading localizations...
[22:40:22] [main/INFO]: Connections will use NIO channels, Java compression, Java ciphers
[22:40:22] [main/INFO]: Loading plugins...
[22:40:23] [main/INFO]: 启动 Floodgate,耗时424ms
[22:40:23] [main/INFO]: Loaded plugin floodgate 2.2.0-SNAPSHOT (b73-4f36112) by GeyserMC
[22:40:23] [main/INFO]: Loaded plugin geyser 2.1.0-SNAPSHOT (git-master-247edc6) by GeyserMC
[22:40:23] [main/INFO]: Loaded plugin multilogin 0.5.1 by ksqeib445, Becods, CaaMoe, ksqeib
[22:40:24] [main/INFO]: Loaded 3 plugins
[22:40:24] [Velocity Async Event Executor - #0/WARN]: The server channel initializer has been replaced by java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[22:40:24] [Velocity Async Event Executor - #0/WARN]: The backend channel initializer has been replaced by java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[22:40:25] [Velocity Async Event Executor - #0/INFO]: 正在加载插件...
[22:40:25] [Velocity Async Event Executor - #0/INFO]: 已加载 0 个插件
[22:40:25] [Velocity Async Event Executor - #0/INFO]: Cover: examples/littleskin.yml
[22:40:25] [Velocity Async Event Executor - #0/INFO]: Cover: examples/offical.yml
[22:40:25] [Velocity Async Event Executor - #0/INFO]: Cover: examples/template_cn.yml
[22:40:25] [Velocity Async Event Executor - #0/INFO]: Add a yggdrasil service with id 0 and name Unnamed.
[22:40:25] [Velocity Async Event Executor - #0/INFO]: Add a yggdrasil service with id 1 and name Unnamed.
[22:40:25] [Velocity Async Event Executor - #0/INFO]: Added 2 Yggdrasil services.
[22:40:26] [Velocity Async Event Executor - #0/INFO]: Loaded, using MultiLogin v0.5.1 on Velocity - 3.1.2-SNAPSHOT (git-9cbaeb7b-b195)
[22:40:26] [Velocity Async Event Executor - #0/ERROR]: An exception was encountered while loading the plugin.
java.lang.NoClassDefFoundError: com/velocitypowered/proxy/protocol/packet/chat/PlayerChat
	at java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
	at java.lang.ClassLoader.defineClass(ClassLoader.java:1012) ~[?:?]
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[?:?]
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:524) ~[?:?]
	at java.net.URLClassLoader$1.run(URLClassLoader.java:427) ~[?:?]
	at java.net.URLClassLoader$1.run(URLClassLoader.java:421) ~[?:?]
	at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
	at java.net.URLClassLoader.findClass(URLClassLoader.java:420) ~[?:?]
	at moe.caa.multilogin.loader.classloader.PriorURLClassLoader.loadClass(PriorURLClassLoader.java:35) ~[?:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
	at moe.caa.multilogin.velocity.injector.VelocityInjector.inject(VelocityInjector.java:34) ~[?:?]
	at fun.ksnb.multilogin.velocity.main.MultiLoginVelocity.onInitialize(MultiLoginVelocity.java:58) ~[?:?]
	at fun.ksnb.multilogin.velocity.main.Lmbda$5.execute(Unknown Source) ~[?:?]
	at com.velocitypowered.proxy.event.UntargetedEventHandler$VoidHandler.lambda$buildHandler$0(UntargetedEventHandler.java:47) ~[Velocity.jar:3.1.2-SNAPSHOT (git-9cbaeb7b-b195)]
	at com.velocitypowered.proxy.event.VelocityEventManager.fire(VelocityEventManager.java:598) ~[Velocity.jar:3.1.2-SNAPSHOT (git-9cbaeb7b-b195)]
	at com.velocitypowered.proxy.event.VelocityEventManager.lambda$fire$5(VelocityEventManager.java:479) ~[Velocity.jar:3.1.2-SNAPSHOT (git-9cbaeb7b-b195)]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.ClassNotFoundException: com.velocitypowered.proxy.protocol.packet.chat.PlayerChat
	at java.net.URLClassLoader.findClass(URLClassLoader.java:445) ~[?:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:587) ~[?:?]
	at moe.caa.multilogin.loader.classloader.PriorURLClassLoader.loadClass(PriorURLClassLoader.java:43) ~[?:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
	... 19 more
[22:40:26] [Thread-1/INFO]: Shutting down the proxy...
[22:40:26] [Velocity Async Event Executor - #1/INFO]: Geyser关闭中
[22:40:26] [Velocity Async Event Executor - #1/ERROR]: Couldn't pass ProxyShutdownEvent to geyser
java.lang.NullPointerException: Cannot invoke "java.util.concurrent.ScheduledExecutorService.shutdown()" because "this.scheduledThread" is null
	at org.geysermc.geyser.GeyserImpl.shutdown(GeyserImpl.java:544) ~[?:?]
	at org.geysermc.geyser.platform.velocity.GeyserVelocityPlugin.onDisable(GeyserVelocityPlugin.java:190) ~[?:?]
	at org.geysermc.geyser.platform.velocity.GeyserVelocityPlugin.onShutdown(GeyserVelocityPlugin.java:224) ~[?:?]
	at org.geysermc.geyser.platform.velocity.Lmbda$4.execute(Unknown Source) ~[?:?]
	at com.velocitypowered.proxy.event.UntargetedEventHandler$VoidHandler.lambda$buildHandler$0(UntargetedEventHandler.java:47) ~[Velocity.jar:3.1.2-SNAPSHOT (git-9cbaeb7b-b195)]
	at com.velocitypowered.proxy.event.VelocityEventManager.fire(VelocityEventManager.java:598) ~[Velocity.jar:3.1.2-SNAPSHOT (git-9cbaeb7b-b195)]
	at com.velocitypowered.proxy.event.VelocityEventManager.lambda$fire$5(VelocityEventManager.java:479) ~[Velocity.jar:3.1.2-SNAPSHOT (git-9cbaeb7b-b195)]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]

复现步骤

  1. 把插件丢进去
  2. 等待
  3. 崩溃

确认一遍

  • 我已完成且认真地填写完了报告所需要的信息
  • 我确保没有重复的报告 (搜索一下)

[建议] 上传至Modrinth

描述功能请求

Modrinth对国内用户来说较为友好

描述你考虑过的备选方案

No response

请确认此建议所影响的内容

  • 文档
  • 安装
  • 可扩展性
  • 安全
  • 用户体验
  • 测试和发布
  • 开发架构
  • 新的扩展
  • 其他

无法使用互通

Bug Description

因为互通它是需要关闭正版验证的,但是。插件没有正版验证又无法运行,导致他俩压根没法同时存在
只要能想办法,让他俩能共存,或者能在不开正版验证的状态下启动。

MultiLogin Version

3.15

System Architecture

windows

Configurations

1.19 互通插件 ess

Logs

No response

Steps to reproduce

...

Affected area

  • I included all information required in the sections above
  • I made sure there are no duplicates of this report (Use Search)

[Bug Report]

Bug Description

进行启动时在下载界面卡了好久

MultiLogin Version

0.5.1

System Architecture

linux、amd64

Configurations

首次启动

Logs

No response

Steps to reproduce

...

Affected area

  • I included all information required in the sections above
  • I made sure there are no duplicates of this report (Use Search)

[建议] 配置说明

描述功能请求

wiki的配置说明没看懂,按着设置了运行不起来,有没有配置文件的范本?

描述你考虑过的备选方案

No response

请确认此建议所影响的内容

  • 文档
  • 安装
  • 可扩展性
  • 安全
  • 用户体验
  • 测试和发布
  • 开发架构
  • 新的扩展
  • 其他

do you know a unified pass alternative for usa or that does not require qq and what version is for 1.18.2 velocity

Bug Description

do you know a unified pass alternative for usa or that does not require qq and what version is for 1.18.2 velocity

MultiLogin Version

do you know a unified pass alternative for usa or that does not require qq and what version is for 1.18.2 velocity

System Architecture

do you know a unified pass alternative for usa or that does not require qq and what version is for 1.18.2 velocity

Configurations

do you know a unified pass alternative for usa or that does not require qq and what version is for 1.18.2 velocity

Logs

do you know a unified pass alternative for usa or that does not require qq and what version is for 1.18.2 velocity

Steps to reproduce

do you know a unified pass alternative for usa or that does not require qq and what version is for 1.18.2 velocity

Affected area

  • I included all information required in the sections above
  • I made sure there are no duplicates of this report (Use Search)

[错误报告] authlib验证的玩家聊天会导致正版验证玩家退出

BUG描述

authlib验证的玩家聊天会导致正版验证玩家退出,退出时显示“聊天信息验证失败”。
服务端为purpur-1.19.2-1845.jar

MultiLogin版本

v0.5.1

系统架构

linux/amd64

配置文件

正版

id: 2
name: '正版验证'
hasJoined:
official: { }

authlib

id: 3
name: 'LittleSkin'
hasJoined:
blessingSkin:
apiRoot: 'https://littleskin.cn/api/yggdrasil'

id: 1
name: 'SkiesWorldSkin'
hasJoined:
blessingSkin:
apiRoot: 'https://skin.skiesworld.com/api/yggdrasil'

日志

退出端玩家日志:

[15:31:35] [Render thread/INFO]: [CHAT] <Shao_Xiu> 蕊哥再试试
[15:31:40] [Render thread/INFO]: Minimap session finalized.
[15:31:40] [Render thread/INFO]: Finalizing world map session...
[15:31:40] [Thread-2/INFO]: World map force-cleaned!
[15:31:40] [Render thread/INFO]: World map session finalized.
[15:32:32] [Render thread/INFO]: Stopping!

服务端相关日志:

[15:31:35] [Async Chat Thread - #20/INFO]: [Not Secure] <Shao_Xiu> 蕊哥再试试
[15:31:40] [Async Chat Thread - #20/INFO]: =-=
[15:31:40] [Server thread/INFO]: Shao_Xiu lost connection: Disconnected
[15:31:40] [Server thread/INFO]: Shao_Xiu left the game

复现步骤

1.一个authlib验证的玩家与一个正版玩家登入服务器
2.前者在游戏内打字聊天
3.后者退出游戏并显示“聊天消息验证失败”

确认一遍

  • 我已完成且认真地填写完了报告所需要的信息
  • 我确保没有重复的报告 (搜索一下)

[错误报告] 1.19中无法正常使用

BUG描述

image
直接提示,连接中止,但我用外置登录直接进入服务器是可以进入的
奇怪的是控制台并没有输出日志
应该是 velocity 用了新的密钥执行标准,但我已设置为false但依旧没有任何用。
我也在那边提问了(只使用外置登录的场景)
PaperMC/Velocity#755

MultiLogin版本

0.3.14

系统架构

linux/amd64

配置文件

###################################
#       MultiLogin
#              --config
###################################

# 在这里,设置所有的 Yggdrasil 账户验证服务器。
services:

  # 这是一个示例配置:
  # 节点名称 'demo' 作为混合验证系统区分 Yggdrasil 验证服务器唯一性的凭据,设置好后请不要随意的去改动它,
  # 随意的更改节点名称将会导致二次验证系统无法验明用户身份而拒绝用户的登入请求。
  # 可以仿写此节点用来添加新的 Yggdrasil 账户验证服务器。
  VlssuSkin:

    # 启用该验证服务器。
    # 值为 'false' 时将不添加该 Yggdrasil 账户验证服务器到混合登入系统中去,将拒绝一切使用该 Yggdrasil 账户验证服务器的玩家登入游戏。
    # 默认值 'true'
    enable: true

    # 该账户验证服务器中的别称。
    # 不用于父节点名称,此节点的值可以随意修改。
    # 必填值,在 Bukkit 服务端中作为变量传递。
    name: "VLssuSkin.cn"

    # Yggdrasil 账户验证服务器的基本属性和信息设置。
    body:

      # Yggdrasil 账户验证服务器服务端 hasJoined 阶段部分验证请求链接设置。
      # 此节点必须指定完整的请求链接。
      # 其中 GET 请求中的占位变量 {username} 表示 username,占位变量 {serverId} 表示 serverId,
      #        占位变量 {passIpContent} 表示 passIpContent 节点所设置的内容。
      # 请求的 URL 对大小写敏感,设置需谨慎!
      # 一些例子:
      #      GET: "https://example.com/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"
      #      GET: "https://example.com/session/minecraft/hasJoined?username={username}&serverId={serverId}"
      #      POST: "https://example.com/session/minecraft/hasJoined"
      # 必填值
      url: "https://skin.vlssu.com/api/yggdrasil/sessionserver/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"

      # hasJoined 阶段使用 POST 请求的方式验证账户身份。
      # 绝大多数下, Yggdrasil 账户验证服务器 hasJoined 阶段都采用 GET 请求方式验证用户数据的,
      # 如果你不了解当前 Yggdrasil 验证流程的话,请勿擅自改动它。
      # 默认值 'false'
      postMode: false

      # hasJoined 阶段是否向 Yggdrasil 账户验证服务器传递用户 IP 信息,如果存在。
      # 默认值 'false'
      passIp: true

      # 设置 url 节点 {passIpContent} 变量内容,
      # 其中,变量 {ip} 为所获取到的 IP 信息。
      # 仅当 passIp 节点为 true 时此节点有效。
      # 请求的 URL 对大小写敏感,设置需谨慎!
      # 请留意字符串拼接的特殊值 '&' 和 ', '
      # 一些例子:
      #      GET: '&ip={ip}'
      #      POST: ', "ip":"{ip}"'
      # 默认值 '&ip={ip}'
      passIpContent: "&ip={ip}"

      # 设置 post 的请求内容。
      # 其中 POST 请求中的占位变量 {username} 表示 username,占位变量 {serverId} 表示 serverId,
      #        占位变量 {passIpContent} 表示 passIpContent 节点所设置的内容。
      # 请求的 URL 对大小写敏感,设置需谨慎!
      # 一些例子:
      #        '{"username":"{username}", "serverId":"{serverId}"{passIpContent}}'
      #        '{"username":"{username}", "serverId":"{serverId}"}'
      # 默认值 '{"username":"{username}", "serverId":"{serverId}"}'
      postContent: '{"username":"{username}", "serverId":"{serverId}"}'

    # 设置玩家首次登入后游戏内的 UUID 生成规则
    # 目前只支持以下值:
    #   DEFAULT   - 使用 Yggdrasil 账户证服务器提供的在线 UUID
    #   OFFLINE   - 自动生成离线 UUID
    #   RANDOM    - 随机 UUID
    # 请谨慎设置和修改此节点,避免增加日后维护的心智负担。
    # 为避免触发 Paper 端的某些机制,强烈建议此值为 DEFAULT
    # 默认值 'DEFAULT'
    convUuid: DEFAULT

    # 当玩家首次登入时分配到的 UUID 已被使用,自动更正到随机的 UUID。
    # 请尽量保持此值为 true ,除非您了解后果是什么。
    # 默认值 'true'
    convRepeat: true

    # 玩家允许设置的用户名正则。
    # 若不匹配将会拒绝当前玩家的登入请求
    # 如果此值留空或未设置,则应用根节点下 'nameAllowedRegular' 节点值。
    # 默认值 ''
    nameAllowedRegular: ''

    # 是否为当前验证服务器单独开启白名单。
    # 当全局白名单为 true 时,此节点强制为 true。
    # 默认值: false
    whitelist: false

    # 设置占线登入机制,登入时游戏内存在有相同游戏内 UUID 的玩家时
    # 若为 false 将把游戏内玩家踢出,允许验证中的玩家登入(原版默认)
    # 若为 true 则拒绝当前的登入请求
    # 默认值: false
    refuseRepeatedLogin: false

    # 验证错误重试次数
    # 默认值: 1
    authRetry: 2

    # 皮肤修复规则,用来解决不同 Yggdrasil 账户验证服务器下的皮肤不可见问题。
    #    比如使用 Minecraft 原版验证服务器的玩家无法看到使用第三方外置验证登入玩家的皮肤。
    # 目前只支持设置以下值:
    #   OFF       - 关闭这个功能
    #   LOGIN     - 占用登入时间进行皮肤修复操作(修复时间过长会导致登入超时)
    #   ASYNC     - 登入后修复(修复成功后需要重新连接服务器)
    # 系统将会自动过滤掉皮肤源域名为 '*.minecraft.net' 的情况
    # 皮肤修复服务器来自 'mineskin.org'
    # 默认值 'OFF'
    skinRestorer: ASYNC

    # 皮肤修复错误重试次数
    # 默认值: 2
    skinRestorerRetry: 2

  womadao:

    # 启用该验证服务器。
    # 值为 'false' 时将不添加该 Yggdrasil 账户验证服务器到混合登入系统中去,将拒绝一切使用该 Yggdrasil 账户验证服务器的玩家登入游戏。
    # 默认值 'true'
    enable: false

    # 该账户验证服务器中的别称。
    # 不用于父节点名称,此节点的值可以随意修改。
    # 必填值,在 Bukkit 服务端中作为变量传递。
    name: "skin.womadao.top"

    # Yggdrasil 账户验证服务器的基本属性和信息设置。
    body:

      # Yggdrasil 账户验证服务器服务端 hasJoined 阶段部分验证请求链接设置。
      # 此节点必须指定完整的请求链接。
      # 其中 GET 请求中的占位变量 {username} 表示 username,占位变量 {serverId} 表示 serverId,
      #        占位变量 {passIpContent} 表示 passIpContent 节点所设置的内容。
      # 请求的 URL 对大小写敏感,设置需谨慎!
      # 一些例子:
      #      GET: "https://example.com/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"
      #      GET: "https://example.com/session/minecraft/hasJoined?username={username}&serverId={serverId}"
      #      POST: "https://example.com/session/minecraft/hasJoined"
      # 必填值
      url: "https://skin.womadao.top/api/yggdrasil/sessionserver/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"

      # hasJoined 阶段使用 POST 请求的方式验证账户身份。
      # 绝大多数下, Yggdrasil 账户验证服务器 hasJoined 阶段都采用 GET 请求方式验证用户数据的,
      # 如果你不了解当前 Yggdrasil 验证流程的话,请勿擅自改动它。
      # 默认值 'false'
      postMode: false

      # hasJoined 阶段是否向 Yggdrasil 账户验证服务器传递用户 IP 信息,如果存在。
      # 默认值 'false'
      passIp: true

      # 设置 url 节点 {passIpContent} 变量内容,
      # 其中,变量 {ip} 为所获取到的 IP 信息。
      # 仅当 passIp 节点为 true 时此节点有效。
      # 请求的 URL 对大小写敏感,设置需谨慎!
      # 请留意字符串拼接的特殊值 '&' 和 ', '
      # 一些例子:
      #      GET: '&ip={ip}'
      #      POST: ', "ip":"{ip}"'
      # 默认值 '&ip={ip}'
      passIpContent: "&ip={ip}"

      # 设置 post 的请求内容。
      # 其中 POST 请求中的占位变量 {username} 表示 username,占位变量 {serverId} 表示 serverId,
      #        占位变量 {passIpContent} 表示 passIpContent 节点所设置的内容。
      # 请求的 URL 对大小写敏感,设置需谨慎!
      # 一些例子:
      #        '{"username":"{username}", "serverId":"{serverId}"{passIpContent}}'
      #        '{"username":"{username}", "serverId":"{serverId}"}'
      # 默认值 '{"username":"{username}", "serverId":"{serverId}"}'
      postContent: '{"username":"{username}", "serverId":"{serverId}"}'

    # 设置玩家首次登入后游戏内的 UUID 生成规则
    # 目前只支持以下值:
    #   DEFAULT   - 使用 Yggdrasil 账户证服务器提供的在线 UUID
    #   OFFLINE   - 自动生成离线 UUID
    #   RANDOM    - 随机 UUID
    # 请谨慎设置和修改此节点,避免增加日后维护的心智负担。
    # 为避免触发 Paper 端的某些机制,强烈建议此值为 DEFAULT
    # 默认值 'DEFAULT'
    convUuid: DEFAULT

    # 当玩家首次登入时分配到的 UUID 已被使用,自动更正到随机的 UUID。
    # 请尽量保持此值为 true ,除非您了解后果是什么。
    # 默认值 'true'
    convRepeat: true

    # 玩家允许设置的用户名正则。
    # 若不匹配将会拒绝当前玩家的登入请求
    # 如果此值留空或未设置,则应用根节点下 'nameAllowedRegular' 节点值。
    # 默认值 ''
    nameAllowedRegular: ''

    # 是否为当前验证服务器单独开启白名单。
    # 当全局白名单为 true 时,此节点强制为 true。
    # 默认值: false
    whitelist: false

    # 设置占线登入机制,登入时游戏内存在有相同游戏内 UUID 的玩家时
    # 若为 false 将把游戏内玩家踢出,允许验证中的玩家登入(原版默认)
    # 若为 true 则拒绝当前的登入请求
    # 默认值: false
    refuseRepeatedLogin: false

    # 验证错误重试次数
    # 默认值: 1
    authRetry: 2

    # 皮肤修复规则,用来解决不同 Yggdrasil 账户验证服务器下的皮肤不可见问题。
    #    比如使用 Minecraft 原版验证服务器的玩家无法看到使用第三方外置验证登入玩家的皮肤。
    # 目前只支持设置以下值:
    #   OFF       - 关闭这个功能
    #   LOGIN     - 占用登入时间进行皮肤修复操作(修复时间过长会导致登入超时)
    #   ASYNC     - 登入后修复(修复成功后需要重新连接服务器)
    # 系统将会自动过滤掉皮肤源域名为 '*.minecraft.net' 的情况
    # 皮肤修复服务器来自 'mineskin.org'
    # 默认值 'OFF'
    skinRestorer: ASYNC

    # 皮肤修复错误重试次数
    # 默认值: 2
    skinRestorerRetry: 2

  # 此节点代表 Minecraft 原版验证
  official:
    name: "MoJang正版"
    body:
      url: "https://sessionserver.mojang.com/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"

# 设置所有网络请求的超时时间
# 默认值 '10000'
servicesTimeOut: 10000

# 全局白名单开关
# 默认值 'true'
whitelist: false

# 玩家允许设置的用户名正则,不匹配将会拒绝登入请求。
# 当当前 Yggdrasil 账户验证服务器设置中对应设置节点存在值时,此节点对于该验证服务器无效。
# 默认值 '^[0-9a-zA-Z_]{1,16}$'
nameAllowedRegular: '^[0-9a-zA-Z_]{1,16}$'

  # 前缀
  # 默认值 'multilogin'
  prefix: 'multilogin'

日志

[2022-06-19 - 13:21:17] [Velocity Async Event Executor - #0 - INFO]: 加载文件: config.yml
[2022-06-19 - 13:21:17] [Velocity Async Event Executor - #0 - INFO]: 添加 Yggdrasil 账户验证服务器 VLssuSkin.cn(VlssuSkin)。
[2022-06-19 - 13:21:17] [Velocity Async Event Executor - #0 - INFO]: 添加 Yggdrasil 账户验证服务器 skin.womadao.top(womadao), 但未启用它。
[2022-06-19 - 13:21:17] [Velocity Async Event Executor - #0 - INFO]: 添加 Yggdrasil 账户验证服务器 MoJang正版(official)。
[2022-06-19 - 13:21:17] [Velocity Async Event Executor - #0 - DEBUG]: Database url(H2): jdbc:h2:/data/www/mcsmanager/server/server_core/velocity/plugins/multilogin/multilogin;TRACE_LEVEL_FILE=0;TRACE_LEVEL_SYSTEM_OUT=0
[2022-06-19 - 13:21:17] [Velocity Async Event Executor - #0 - INFO]: 成功连接到 H2 数据库
[2022-06-19 - 13:21:18] [Velocity Async Event Executor - #0 - DEBUG]: bStats enabled
[2022-06-19 - 13:21:18] [Velocity Async Event Executor - #0 - INFO]: 插件加载完毕
[2022-06-19 - 13:28:20] [MultiLogin Async #1 - DEBUG]: bStats submit error
java.io.IOException: Server returned HTTP response code: 429 for URL: https://bStats.org/submitData/bukkit
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1997) ~[?:?]
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589) ~[?:?]
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:224) ~[?:?]
	at moe.caa.multilogin.core.main.MetricsLite.sendData(MetricsLite.java:186) ~[?:?]
	at moe.caa.multilogin.core.main.MetricsLite.senDataWithRetry(MetricsLite.java:148) ~[?:?]
	at moe.caa.multilogin.core.main.MetricsLite.submitData(MetricsLite.java:135) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
	at java.lang.Thread.run(Thread.java:833) [?:?]
[2022-06-19 - 13:35:21] [MultiLogin Async #2 - DEBUG]: receive:
[2022-06-19 - 13:35:21] [MultiLogin Async #2 - DEBUG]: bStats submit success

复现步骤

  1. 使用 velocity-3.1.2-SNAPSHOT-154.jar
  2. 使用1.18.2或1.19进入

确认一遍

  • 我已完成且认真地填写完了报告所需要的信息
  • 我确保没有重复的报告 (搜索一下)

[Bug Report] Incorrect display of Russian letters

Bug Description

When using Russian letters in the UTF-8 or OEM 866 encoded message.properties file, the letters are displayed as �a??? �eKOTOKOPOLb�a ???????? ? ???? ??! or ╚уЁюъ KOTOKOPOLb фюсртыхэ т схы√щ ёяшёюъ! instead of Игрок KOTOKOPOLb добавлен в белый список!.

MultiLogin Version

The license check from Microsoft and from the site Ely.by is used.

System Architecture

windows/amd64

Configurations

services:
official:
name: "Minecraft official"
body:
url: "https://sessionserver.mojang.com/session/minecraft/hasJoined?username={username}&serverId={serverId}"

elyby:
enable: true
name: "Ely.by version"
body:
url: "https://authserver.ely.by/session/hasJoined?username={username}&serverId={serverId}"
postMode: false
passIp: false
passIpContent: "&ip={ip}"
postContent: '{"username":"{username}", "serverId":"{serverId}"'
convUuid: DEFAULT
convRepeat: false
nameAllowedRegular: ''
whitelist: false
refuseRepeatedLogin: true
authRetry: 3
skinRestorer: OFF
skinRestorerRetry: 2

servicesTimeOut: 10000
whitelist: true
nameAllowedRegular: '^[0-9a-zA-Z_]{1,16}$'

sql:
backend: H2
ip: '127.0.0.1'
port: 3306
username: @@@@@@
password: @@@@@@@
database: 'multilogin'
prefix: 'multilogin'

Logs

No response

Steps to reproduce

  1. Changing the message.properties file
  2. Saving a file
  3. Plugin reload or server restart

Affected area

  • I included all information required in the sections above
  • I made sure there are no duplicates of this report (Use Search)

[错误报告] 无法读取配置文件?

BUG描述

java版本为 jdk-18.0.2
bc端为 waterfall-1.19-500.jar
插件为 MultiLogin-Bungee-0.5.1.jar
配置文件并未修改 仅配置了services文件夹下 三个Yggdrasil Service 配置文件

启动后插件报错无法读取文件

MultiLogin版本

Bungee-0.5.1

系统架构

windows/amd64

配置文件

#####################################################################

配置文件格式为 ‘YAML’,推荐使用 Visual Studio Code 浏览和编辑。

前往 ‘https://yaml.org/’ 查阅 YAML 配置语法

除了布尔值和整数、浮点数之外的配置,请使用引号包裹起来。

BUG REPORTS: https://github.com/CaaMoe/MultiLogin/issues

#####################################################################

开启插件 DEBUG 日志。

此选项将会把插件内所有 DEBUG 日志转换成 INFO 日志。

默认值 false

debug: false

开启更新检查

插件将半天进行一次更新检查

默认值 true

checkUpdate: true

强制使用此登录

即强制使用 MultiLogin 来登录游戏。

默认值 true

forceUseLogin: true

全局禁用重名检查

默认值 false

disableDuplicateNamesCheck: false

插件数据设置

sql:

数据库类型设置

请使用以下值:

H2

MYSQL

默认值 ‘H2’

backend: 'H2'

数据库访问地址

默认值 ‘127.0.0.1’

ip: 127.0.0.1

端口

默认值 ‘3306’

port: 3306

用户名

默认值 ‘root’

username: root

访问密码

默认值 ‘root’

password: root

数据库名称

默认值 ‘multilogin’

database: multilogin

使用的数据表前缀。

使用时将会补充后缀符号 ‘_’

请不要随意更改它,否则数据将消失

默认值 ‘multilogin’

tablePrefix: multilogin

高级设定,指定连接 URL

默认值 ’‘

connectUrl: ''

日志

[12:37:48 INFO] [MultiLogin]: Cover: examples/littleskin.yml
[12:37:48 INFO] [MultiLogin]: Cover: examples/offical.yml
[12:37:48 INFO] [MultiLogin]: Cover: examples/template_cn.yml
[12:37:48 ERROR] [MultiLogin]: null
moe.caa.multilogin.core.configuration.ConfException: Unable to read Yggdrasil config under file plugins\MultiLogin\services\offical.yml
at moe.caa.multilogin.core.configuration.PluginConfig.lambda$reload$0(PluginConfig.java:89) ~[?:?]
at java.util.Iterator.forEachRemaining(Iterator.java:133) ~[?:?]
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845) ~[?:?]
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) ~[?:?]
at moe.caa.multilogin.core.configuration.PluginConfig.reload(PluginConfig.java:84) ~[?:?]
at moe.caa.multilogin.core.main.MultiCore.load(MultiCore.java:84) ~[?:?]
at fun.ksnb.multilogin.bungee.main.MultiLoginBungee.onEnable(MultiLoginBungee.java:43) ~[?:?]
at net.md_5.bungee.api.plugin.PluginManager.enablePlugins(PluginManager.java:315) ~[waterfall-1.19-500.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:42d9c68:500]
at net.md_5.bungee.BungeeCord.start(BungeeCord.java:290) ~[waterfall-1.19-500.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:42d9c68:500]
at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:67) ~[waterfall-1.19-500.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:42d9c68:500]
at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15) ~[waterfall-1.19-500.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:42d9c68:500]
Caused by: moe.caa.multilogin.core.configuration.ConfException: Yggdrasil id -1 is out of bounds, The value can only be between 0 and 127.
at moe.caa.multilogin.core.configuration.yggdrasil.YggdrasilServiceConfig.checkValid(YggdrasilServiceConfig.java:74) ~[?:?]
at moe.caa.multilogin.core.configuration.yggdrasil.YggdrasilServiceConfig.read(YggdrasilServiceConfig.java:62) ~[?:?]
at moe.caa.multilogin.core.configuration.PluginConfig.lambda$reload$0(PluginConfig.java:87) ~[?:?]
... 10 more
[12:37:48 ERROR] [MultiLogin]: null
moe.caa.multilogin.core.configuration.ConfException: Unable to read Yggdrasil config under file plugins\MultiLogin\services\template_cn.yml
at moe.caa.multilogin.core.configuration.PluginConfig.lambda$reload$0(PluginConfig.java:89) ~[?:?]
at java.util.Iterator.forEachRemaining(Iterator.java:133) ~[?:?]
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845) ~[?:?]
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) ~[?:?]
at moe.caa.multilogin.core.configuration.PluginConfig.reload(PluginConfig.java:84) ~[?:?]
at moe.caa.multilogin.core.main.MultiCore.load(MultiCore.java:84) ~[?:?]
at fun.ksnb.multilogin.bungee.main.MultiLoginBungee.onEnable(MultiLoginBungee.java:43) ~[?:?]
at net.md_5.bungee.api.plugin.PluginManager.enablePlugins(PluginManager.java:315) ~[waterfall-1.19-500.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:42d9c68:500]
at net.md_5.bungee.BungeeCord.start(BungeeCord.java:290) ~[waterfall-1.19-500.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:42d9c68:500]
at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:67) ~[waterfall-1.19-500.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:42d9c68:500]
at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15) ~[waterfall-1.19-500.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:42d9c68:500]
Caused by: moe.caa.multilogin.core.configuration.ConfException: There can only be one, blessingSkin, official and custom.
at moe.caa.multilogin.core.configuration.yggdrasil.hasjoined.HasJoinedConfig.getHasJoinedConfig(HasJoinedConfig.java:33) ~[?:?]
at moe.caa.multilogin.core.configuration.yggdrasil.YggdrasilServiceConfig.read(YggdrasilServiceConfig.java:47) ~[?:?]
at moe.caa.multilogin.core.configuration.PluginConfig.lambda$reload$0(PluginConfig.java:87) ~[?:?]
... 10 more
[12:37:48 ERROR] [MultiLogin]: null
moe.caa.multilogin.core.configuration.ConfException: Unable to read Yggdrasil config under file plugins\MultiLogin\services\wdgm.yml
at moe.caa.multilogin.core.configuration.PluginConfig.lambda$reload$0(PluginConfig.java:89) ~[?:?]
at java.util.Iterator.forEachRemaining(Iterator.java:133) ~[?:?]
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845) ~[?:?]
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) ~[?:?]
at moe.caa.multilogin.core.configuration.PluginConfig.reload(PluginConfig.java:84) ~[?:?]
at moe.caa.multilogin.core.main.MultiCore.load(MultiCore.java:84) ~[?:?]
at fun.ksnb.multilogin.bungee.main.MultiLoginBungee.onEnable(MultiLoginBungee.java:43) ~[?:?]
at net.md_5.bungee.api.plugin.PluginManager.enablePlugins(PluginManager.java:315) ~[waterfall-1.19-500.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:42d9c68:500]
at net.md_5.bungee.BungeeCord.start(BungeeCord.java:290) ~[waterfall-1.19-500.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:42d9c68:500]
at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:67) ~[waterfall-1.19-500.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:42d9c68:500]
at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15) ~[waterfall-1.19-500.jar:git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:42d9c68:500]
Caused by: moe.caa.multilogin.core.configuration.ConfException: Yggdrasil id -1 is out of bounds, The value can only be between 0 and 127.
at moe.caa.multilogin.core.configuration.yggdrasil.YggdrasilServiceConfig.checkValid(YggdrasilServiceConfig.java:74) ~[?:?]
at moe.caa.multilogin.core.configuration.yggdrasil.YggdrasilServiceConfig.read(YggdrasilServiceConfig.java:62) ~[?:?]
at moe.caa.multilogin.core.configuration.PluginConfig.lambda$reload$0(PluginConfig.java:87) ~[?:?]
... 10 more
[12:37:48 WARN] [MultiLogin]: The server has not added any yggdrasil service, which will prevent all players from logging in.
[12:37:49 INFO] [MultiLogin]: Loaded, using MultiLogin v0.5.1 on Waterfall - git:Waterfall-Bootstrap:1.19-R0.1-SNAPSHOT:42d9c68:500
[12:37:49 INFO]: Enabled plugin MultiLogin version 0.5.1 by ksqeib445, Becods, CaaMoe, ksqeib

复现步骤

...

确认一遍

  • 我已完成且认真地填写完了报告所需要的信息
  • 我确保没有重复的报告 (搜索一下)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.