幾天來,我一直在嘗試如何檢測處于離線模式的玩家的帳戶是否已通過 Mojang 身份驗證。我為什么要這樣做?目前,我有一個基本的管理系統(tǒng),包括檢查 mojang 數(shù)據(jù)庫中是否存在玩家的昵稱,如果 setOnlineMode 設置為 true,否則設置為 false。系統(tǒng)允許顯示玩家的皮膚和他的 UUID 但問題是如果考慮離線的玩家使用相同的假名購買高級帳戶,他沒有他的皮膚或他的真實 UUID,因為 setOnlineMode 設置為 false防止其進度丟失。我的目標是制作一個系統(tǒng)來檢測離線用戶剛剛使用經(jīng)過身份驗證的 minecraft 帳戶登錄,以便服務器可以為他提供將進度自動轉(zhuǎn)移到新的真實 UUID 的系統(tǒng)。我做了一些研究,例如在這里嘗試,我刪除了在線模式條件以允許檢查播放器是否已通過身份驗證,然后在這里我刪除了如果播放器無效的斷開連接。這給了我一個美妙的錯誤。13:13:31 [GRAVE] [Arbi13_] -> UpstreamBridge - 遇到異常 io.netty.handler.codec.EncoderException:java.lang.IllegalArgumentException:無法獲取數(shù)據(jù)包類 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)
2 回答

慕田峪9158850
TA貢獻1794條經(jīng)驗 獲得超7個贊
您可能正在尋找這個:https : //www.spigotmc.org/resources/fastlogin.14153/
我還沒有使用它,但根據(jù)評論,它仍然可以在最新版本中使用。
此外,它是開源的,您可以查看代碼并了解它是如何完成的。

長風秋雁
TA貢獻1757條經(jīng)驗 獲得超7個贊
我認為這是不可能的,因為 Minecraft 沒有交換會話細節(jié)。我知道運行第二個代理的服務器為高級用戶啟用了在線模式,以處理導致“后面”相同 bukkit 服務器的會話詳細信息。
添加回答
舉報
0/150
提交
取消