几天来,我一直在尝试如何检测处于离线模式的玩家的帐户是否已通过 Mojang 身份验证。
我为什么要这样做?
目前,我有一个基本的管理系统,包括检查 mojang 数据库中是否存在玩家的昵称,如果 setOnlineMode 设置为 true,否则设置为 false。系统允许显示玩家的皮肤和他的 UUID 但问题是如果考虑离线的玩家使用相同的假名购买高级帐户,他没有他的皮肤或他的真实 UUID,因为 setOnlineMode 设置为 false防止其进度丢失。我的目标是制作一个系统来检测离线用户刚刚使用经过身份验证的 minecraft 帐户登录,以便服务器可以为他提供将进度自动转移到新的真实 UUID 的系统。
我做了一些研究,例如在这里尝试,我删除了在线模式条件以允许检查播放器是否已通过身份验证,然后在这里我删除了如果播放器无效的断开连接。这给了我一个美妙的错误。
13:13:31 [GRAVE] [Arbi13_] -> UpstreamBridge - 遇到异常 io.netty.handler.codec.EncoderException:java.lang.IllegalArgumentException:无法获取数据包类 net.md_5.bungee.protocol.packet.SetCompression 的 ID在与方向 TO_CLIENT 的阶段 GAME
在 io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:125)
在 io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738)
在 io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:801)
在 io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:814)
在 io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:794)
在 io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1066)
在 io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:305)
在 net.md_5.bungee.netty.ChannelWrapper.write(ChannelWrapper.java:60)
在 net.md_5.bungee.UserConnection$1.sendPacket(UserConnection.java:148)
在 net.md_5.bungee.UserConnection.setCompressionThreshold(UserConnection.java:697)
在 net.md_5.bungee.connection.InitialHandler$6$1.run(InitialHandler.java:523)
慕田峪9158850
长风秋雁
相关分类