SIGMA-L / PlayerRoleChecker

MinecraftアカウントとDiscordアカウントを連携する為のプラグインです。
https://prc-mc.net
GNU General Public License v3.0
5 stars 2 forks source link

bug: 未認証のプレイヤーがログインするとエラーが出力される #13

Closed wacch closed 1 year ago

wacch commented 1 year ago

PlayerRoleCheckerConnector-4.22にて未認証のプレイヤーがログインすると以下のエラーが出力され、認証コードを確認することができません。認証済みのプレイヤーには影響はありません。 PlayerRoleCheckerとPlayerRoleCheckerConnectorを同一環境に導入しています。

環境 Minecraft: Purpur1.19.2 git-1858 Plugins: PlayerRoleChecker4.22-no-mysql PlayerRoleCheckerConnector4.22-no-mysql DiscordVersion: Stable 196098 (47dfda7), Host 1.0.9013 (32266)

出力

[19:36:48] [User Authenticator #2/WARN]: net.dv8tion.jda.api.exceptions.ErrorResponseException: 10007: Unknown Member
[19:36:48] [User Authenticator #2/WARN]:    at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.internal.requests.RestActionImpl.complete(RestActionImpl.java:230)
[19:36:48] [User Authenticator #2/WARN]:    at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.internal.requests.DeferredRestAction.complete(DeferredRestAction.java:182)
[19:36:48] [User Authenticator #2/WARN]:    at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.api.requests.RestAction.complete(RestAction.java:632)
[19:36:48] [User Authenticator #2/WARN]:    at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.klnetwork.playerrolecheckerconnector.event.JoinEvent.isJoin(JoinEvent.java:63)
[19:36:48] [User Authenticator #2/WARN]:    at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.klnetwork.playerrolecheckerconnector.event.JoinEvent.onPreLoginEvent(JoinEvent.java:42)
[19:36:48] [User Authenticator #2/WARN]:    at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.klnetwork.playerrolechecker.api.data.JoinManager.lambda$onAsyncPlayerJoinEvent$0(JoinManager.java:30)
[19:36:48] [User Authenticator #2/WARN]:    at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
[19:36:48] [User Authenticator #2/WARN]:    at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.klnetwork.playerrolechecker.api.data.JoinManager.onAsyncPlayerJoinEvent(JoinManager.java:28)
[19:36:48] [User Authenticator #2/WARN]:    at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor78.execute(Unknown Source)
[19:36:48] [User Authenticator #2/WARN]:    at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77)
[19:36:48] [User Authenticator #2/WARN]:    at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:76)
[19:36:48] [User Authenticator #2/WARN]:    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70)
[19:36:48] [User Authenticator #2/WARN]:    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:678)
[19:36:48] [User Authenticator #2/WARN]:    at net.minecraft.server.network.LoginListener$LoginHandler.fireEvents(LoginListener.java:433)
[19:36:48] [User Authenticator #2/WARN]:    at net.minecraft.server.network.LoginListener$2.run(LoginListener.java:377)
[19:36:48] [User Authenticator #2/WARN]:    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[19:36:48] [User Authenticator #2/WARN]:    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[19:36:48] [User Authenticator #2/WARN]:    at java.base/java.lang.Thread.run(Thread.java:833)
[19:36:48] [User Authenticator #2/WARN]: Caused by: net.dv8tion.jda.api.exceptions.ContextException
[19:36:48] [User Authenticator #2/WARN]:    at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.api.exceptions.ContextException.here(ContextException.java:54)
[19:36:48] [User Authenticator #2/WARN]:    at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.api.requests.Request.<init>(Request.java:73)
[19:36:48] [User Authenticator #2/WARN]:    at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.api.requests.RestFuture.<init>(RestFuture.java:36)
[19:36:48] [User Authenticator #2/WARN]:    at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.internal.requests.RestActionImpl.submit(RestActionImpl.java:212)
[19:36:48] [User Authenticator #2/WARN]:    at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.internal.requests.RestActionImpl.complete(RestActionImpl.java:222)
[19:36:48] [User Authenticator #2/WARN]:    ... 17 more
[19:36:48] [User Authenticator #2/INFO]: Disconnecting com.mojang.authlib.GameProfile@1cb48772[id=UUID,name=MCID,properties={textures=[com.mojang.authlib.properties.Property@37a31fe8]},legacy=false] (/IP): エラーが発生しました。
管理者に報告してください。
[19:36:48] [Server thread/INFO]: com.mojang.authlib.GameProfile@1cb48772[id=UUID,name=MCID,properties={textures=[com.mojang.authlib.properties.Property@37a31fe8]},legacy=false] (/IP) lost connection: エラーが発生しました。
管理者に報告してください。
KoutaChan commented 1 year ago

対応が遅くなりすいませんでした 恐らくJDAの問題なのでzipファイルの中に入っているjarファイルで試してみてください packed.zip

KoutaChan commented 1 year ago

エラー内容を見直しましたが、登録しているユーザーが抜けていませんか?(通常debugをtrueにしない限りエラーは出ないはずですが、falseにしている場合は教えてください。)

もしそうだったら抜けているユーザーに対して別のエラーメッセージを送るように修正したほうがいいですか?

wacch commented 1 year ago

デバッグはtrueに設定しています。 登録するユーザーはDiscordサーバーにきちんと入っている状態でこのエラーが出ます。どうやら全員に出るようではなく、一部のプレイヤーに出る問題かもしれませんし(プラグイン更新前に他のプレイヤーが認証に成功していました)、Discordもしくはマインクラフトサーバーがわの一時的な障害の可能性もあります。 現状はひとまずプラグインを更新して、認証ができるか確認するところです。

wacch commented 1 year ago

追加情報ですが、認証しようとしたプレイヤーはJE版です。逆に異常発生後にログインに成功したプレイヤーはBE版でした。他に必要な情報がある場合は教えてもらえれば都度提供します。

KoutaChan commented 1 year ago

エラーが再度発生するなら、教えてください。 微調整してみます

wacch commented 1 year ago

おまたせしました 更新版で再度確認しましたが、同様の問題が発生しますね...(エラー内容は同じですが一応末尾に共有します) そしておそらく特定の個人にのみ起こっている問題である可能性が高いです

Discordサーバに入り直してもらったりもしましたが、効果なしですね ニックネームも関係ないようです

どのような情報が問題の解決に必要かわからないので、必要であれば教えていただけると助かります。

[17:08:19 WARN]: net.dv8tion.jda.api.exceptions.ErrorResponseException: 10007: Unknown Member
[17:08:19 WARN]:        at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.internal.requests.RestActionImpl.complete(RestActionImpl.java:227)
[17:08:19 WARN]:        at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.internal.requests.DeferredRestAction.complete(DeferredRestAction.java:182)
[17:08:19 WARN]:        at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.api.requests.RestAction.complete(RestAction.java:632)
[17:08:19 WARN]:        at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.klnetwork.playerrolecheckerconnector.event.JoinEvent.isJoin(JoinEvent.java:63)
[17:08:19 WARN]:        at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.klnetwork.playerrolecheckerconnector.event.JoinEvent.onPreLoginEvent(JoinEvent.java:42)
[17:08:19 WARN]:        at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.klnetwork.playerrolechecker.api.data.JoinManager.lambda$onAsyncPlayerJoinEvent$0(JoinManager.java:30)
[17:08:19 WARN]:        at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
[17:08:19 WARN]:        at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.klnetwork.playerrolechecker.api.data.JoinManager.onAsyncPlayerJoinEvent(JoinManager.java:28)
[17:08:19 WARN]:        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor75.execute(Unknown Source)
[17:08:19 WARN]:        at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77)
[17:08:19 WARN]:        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:76)
[17:08:19 WARN]:        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70)
[17:08:19 WARN]:        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:678)
[17:08:19 WARN]:        at net.minecraft.server.network.LoginListener$LoginHandler.fireEvents(LoginListener.java:433)
[17:08:19 WARN]:        at net.minecraft.server.network.LoginListener$2.run(LoginListener.java:377)
[17:08:19 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[17:08:19 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[17:08:19 WARN]:        at java.base/java.lang.Thread.run(Thread.java:833)
[17:08:19 WARN]: Caused by: net.dv8tion.jda.api.exceptions.ContextException
[17:08:19 WARN]:        at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.api.exceptions.ContextException.here(ContextException.java:54)
[17:08:19 WARN]:        at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.api.requests.Request.<init>(Request.java:72)
[17:08:19 WARN]:        at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.api.requests.RestFuture.<init>(RestFuture.java:35)
[17:08:19 WARN]:        at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.internal.requests.RestActionImpl.submit(RestActionImpl.java:209)
[17:08:19 WARN]:        at PlayerRoleCheckerConnector-4.22-no-mysql.jar//net.dv8tion.jda.internal.requests.RestActionImpl.complete(RestActionImpl.java:219)
[17:08:19 WARN]:        ... 17 more
KoutaChan commented 1 year ago

一応確認なんですが GuildIDとかは設定してますか?

KoutaChan commented 1 year ago

特定の個人ならSQL関係もあやしいですが...

wacch commented 1 year ago

DBは後ほど確認してみます

wacch commented 1 year ago

原因が判明しました。

エラー内容を見直しましたが、登録しているユーザーが抜けていませんか? 結論から言いますとこれが原因です。

今回認証を行おうとしていたユーザーが過去に別のDiscordアカウントで認証を行なっていたようで、その後Discrordサーバーからは抜けてしまったのですが、別のアカウントで再度Discordサーバーに入り、認証をしようとしたためにこの問題が発生したようです。 レコードの削除は行なっていおらず、かつMinecraftのアカウントは同一のものを使用していたようです。

完全に別の人物だと思っていたので、この事実に気がつくことができませんでした。なので、プラグインの問題ではありませんでした。大変お騒がせしました...