Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

User#getConnectionState() issue. #1170

Closed
Souipi opened this issue Mar 19, 2025 · 2 comments
Closed

User#getConnectionState() issue. #1170

Souipi opened this issue Mar 19, 2025 · 2 comments
Labels
bug Something isn't working

Comments

@Souipi
Copy link

Souipi commented Mar 19, 2025

Describe the bug
User#getConnectionState() is throwing an IAE.

Software brand
1.21.4-212-main@bb1beda

Plugins
Bukkit plugins (7):

  • Apollo-Bukkit (1.1.6), LuckPerms (5.4.156), MyCore (1.3.46-SNAPSHOT), TwentyOneTest (1.0.0.22-SNAPSHOT), ViaBackwards (5.2.1), ViaRewind (4.0.4), ViaVersion (5.2.1)

How To Reproduce

@Override
public void onPacketSend(PacketSendEvent event) {
    if (event.getPacketType() == PacketType.Login.Server.LOGIN_SUCCESS) {
        event.getUser().getConnectionState();
    }
}

Expected behavior
Should return the current User connection state.

Additional context

[05:28:29 WARN]: [net.myentrainement.mycore.shaded.packetevents.api.PacketEventsAPI] PacketEvents caught an unhandled exception while calling your listener.
java.lang.IllegalArgumentException: Can't get common connection state: LOGIN != CONFIGURATION
        at common-1.3.46-SNAPSHOT.jar/net.myentrainement.mycore.shaded.packetevents.api.protocol.player.User.getConnectionState(User.java:101) ~[common-1.3.46-SNAPSHOT.jar:?]
        at common-1.3.46-SNAPSHOT.jar/net.myentrainement.mycore.listeners.packet.PlayerJoinQuit.onPacketSend(PlayerJoinQuit.java:49) ~[common-1.3.46-SNAPSHOT.jar:?]
        at common-1.3.46-SNAPSHOT.jar/net.myentrainement.mycore.shaded.packetevents.api.event.PacketSendEvent.call(PacketSendEvent.java:51) ~[common-1.3.46-SNAPSHOT.jar:?]
        at common-1.3.46-SNAPSHOT.jar/net.myentrainement.mycore.shaded.packetevents.api.event.EventManager.callEvent(EventManager.java:84) ~[common-1.3.46-SNAPSHOT.jar:?]
        at common-1.3.46-SNAPSHOT.jar/net.myentrainement.mycore.shaded.packetevents.api.util.PacketEventsImplHelper.handleClientBoundPacket(PacketEventsImplHelper.java:61) ~[common-1.3.46-SNAPSHOT.jar:?]
        at common-1.3.46-SNAPSHOT.jar/net.myentrainement.mycore.shaded.packetevents.impl.injector.handlers.PacketEventsEncoder.handleClientBoundPacket(PacketEventsEncoder.java:88) ~[common-1.3.46-SNAPSHOT.jar:?]
        at common-1.3.46-SNAPSHOT.jar/net.myentrainement.mycore.shaded.packetevents.impl.injector.handlers.PacketEventsEncoder.encode(PacketEventsEncoder.java:73) ~[common-1.3.46-SNAPSHOT.jar:?]
        at common-1.3.46-SNAPSHOT.jar/net.myentrainement.mycore.shaded.packetevents.impl.injector.handlers.PacketEventsEncoder.encode(PacketEventsEncoder.java:52) ~[common-1.3.46-SNAPSHOT.jar:?]
        at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:90) ~[netty-codec-4.1.115.Final.jar:4.1.115.Final]
        at common-1.3.46-SNAPSHOT.jar/net.myentrainement.mycore.shaded.packetevents.impl.injector.handlers.PacketEventsEncoder.write(PacketEventsEncoder.java:107) ~[common-1.3.46-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:893) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:113) ~[netty-codec-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:893) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.ChannelOutboundHandlerAdapter.write(ChannelOutboundHandlerAdapter.java:113) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at net.minecraft.network.Connection$2.write(Connection.java:728) ~[paper-1.21.4.jar:1.21.4-212-bb1beda]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:893) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:956) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:982) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:950) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:1000) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:974) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:305) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at net.minecraft.network.Connection.doSendPacket(Connection.java:492) ~[paper-1.21.4.jar:1.21.4-212-bb1beda]
        at net.minecraft.network.Connection.lambda$sendPacket$13(Connection.java:479) ~[paper-1.21.4.jar:1.21.4-212-bb1beda]
        at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) ~[netty-common-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166) ~[netty-common-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) ~[netty-common-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:405) ~[netty-transport-classes-epoll-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.115.Final.jar:4.1.115.Final]
        at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
@Souipi Souipi added the bug Something isn't working label Mar 19, 2025
@Souipi
Copy link
Author

Souipi commented Mar 19, 2025

I forgot to mention that i was in 1.8.8 and not in 1.20.4. Update: I have the same issue in 1.20.4

@booky10
Copy link
Collaborator

booky10 commented Mar 19, 2025

In versions after 1.20.2 (only the server version is relevant here), the connection states may not always match between encoder and decoder, so User#getConnectionState may sometimes throw an exception
You can use either User#getDecoderState/User#getEncoderState or ProtocolPacketEvent#getConnectionState

This issue sadly can't be fixed because of how the minecraft protocol works since 1.20.2
I've added a javadoc comment in 91730fdb4693450f50dc8412673640f2773a45a0 which should make this more clear

@booky10 booky10 closed this as not planned Won't fix, can't repro, duplicate, stale Mar 19, 2025
booky10 added a commit that referenced this issue Mar 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants