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

Player Kicked on Server Change #727

Closed
MacTh3Mac opened this issue Sep 22, 2023 · 35 comments
Closed

Player Kicked on Server Change #727

MacTh3Mac opened this issue Sep 22, 2023 · 35 comments

Comments

@MacTh3Mac
Copy link

MacTh3Mac commented Sep 22, 2023

Environment: Waterfall-1.20-537
Server: All Versions 1.12 through 1.20.1
Via-Version: 4.8.0
Via-Backwards: 4.8.0
Client Version: Only affects 1.20.2 Vanilla Minecraft Client

BungeeTabListPlus: Release and Build 114 from CI Server.

Upon attempting to change servers within a bungee network the following error is generated:

Screenshot 2023-09-22 at 19 56 21

Internal Exception: io.nettyhandler.codec.DecoderException: z: Non [a-z0-9/._-] character in path of location: minecraft: BTLP4625264d 00

This error occurs with or without the Bukkit Bridge installed.

This error is resolved by removing BTLP from Bungee.

No log entries made on either server or bungee.

Edit: added error in plain text to enable copy/paste or web search / crawling etc.

@cobrex1
Copy link

cobrex1 commented Sep 23, 2023

I also get the same error, using waterfall-537 & 538 also. If the client is on 1.20.1, no issues, but on 1.20.2 the error above occurs.

@gre3x
Copy link

gre3x commented Sep 23, 2023

Seems to be a more wide spread thing related to Bungee. I'm unsure if this would need a fix on plugin side or Bungee side: SpigotMC/BungeeCord#3519

@MacTh3Mac
Copy link
Author

Appears to be unresolved by:
SpigotMC/BungeeCord@0509303

@MacTh3Mac
Copy link
Author

Update when running SpigotMC/BungeeCord@f9b75c4

Error Changes to:
EncoderException: java.lang.IllegalArgumentException: Cannot get ID for packet class net.md_5.bungee.protocol.packet.Team in phase CONFIGURATION with direction TO_CLIENT @ io.netty.handler.codec.MessageToByteEncoder:125

Error on Waterfall 538 remains as per previous comments when opening issue.
Internal Exception: io.nettyhandler.codec.DecoderException: z: Non [a-z0-9/._-] character in path of location: minecraft: BTLP4625264d 00

@MacTh3Mac
Copy link
Author

Error Generated with BungeeCord:

https://pastebin.com/dUBUKpD8

@NoltoxGit
Copy link

I have the same problem.

@HippieBeak
Copy link

Looks like Bungee is suggesting that this might require a fix by BTLP rather than the Bungee side... SpigotMC/BungeeCord#3519 (comment)

@gre3x
Copy link

gre3x commented Sep 24, 2023

@CodeCrafter47 looks like md5 is saying that this requires a fix in BTLP SpigotMC/BungeeCord#3519 (comment)

@PrinceBunBun981
Copy link
Contributor

I remember this being mentioned on the Discord and thought to give a small update here, Code is aware of the issues with 1.20.2 and will be looking into it, I don't have an exact ETA though.

@andrewkm
Copy link

Same problem happening here @CodeCrafter47
https://i.imgur.com/kamuk6w.png

@Andre601
Copy link
Contributor

Tagging him won't make things faster or change them. He does see the issues and gets notified. Tagging him only wastes your time.

@andrewkm
Copy link

Tagging him won't make things faster or change them. He does see the issues and gets notified. Tagging him only wastes your time.

Typing out his name took me less than a second; my times not that valuable to consider a second wasted. Lol

@crumpkatrina
Copy link

We are also experiencing the same issue on our end.

@Phoenix616
Copy link

This is most likely because BLTP is either a) sending packets with the wrong IDs or b) sending them during the login or new configuration phase which of course doesn't support those. (Haven't further looked into this though)

@andfont
Copy link

andfont commented Sep 28, 2023

please! something new? He's throwing me out to the players, thanks!
although it is a temporary solution, greetings

@dynamitestudios
Copy link

Anybody have a workaround until this is fixed? (Except telling players to use 1.20.1, removing BTLP, or downgrading the server.)

@HippieBeak
Copy link

I’m probably going to have to switch over to TAB if this isn’t resolved soon… in the BTLP discord they made it seem like it’s not even a guarantee that this will be fixed… just that CodeCrafter “may” look into this

@Andre601
Copy link
Contributor

I’m probably going to have to switch over to TAB if this isn’t resolved soon… in the BTLP discord they made it seem like it’s not even a guarantee that this will be fixed… just that CodeCrafter “may” look into this

Curse of open source.
This project is maintained by one guy in his free time, which is not a lot and usually is used by by more important stuff.
You can't and shouldn't expect updates being made fast nor that it is maintained forever. This isn't a project managed by employees of a company paid for this stuff...

@chrismwiggs
Copy link

Curse of open source. This project is maintained by one guy in his free time, which is not a lot and usually is used by by more important stuff. You can't and shouldn't expect updates being made fast nor that it is maintained forever. This isn't a project managed by employees of a company paid for this stuff...

Came looking to see how likely it was that this issue would be looked at, to find this. If the project is abandoned, it would be nice to be marked as such. Not a demand or expectation of infinite support/service, just transparency is nice so when folks who depend on that work go to update, they know how to plan for the future.

Any chance of the dev or project lead commenting on this for clarity on even an intention to look at it? I get not having time to do it on demand but the communication is nice

@andrewkm
Copy link

andrewkm commented Sep 30, 2023

I’m probably going to have to switch over to TAB if this isn’t resolved soon… in the BTLP discord they made it seem like it’s not even a guarantee that this will be fixed… just that CodeCrafter “may” look into this

We’ve decided to just fork it privately and fix it ourselves along side a few other things we’ve wanted implemented for quite some time. May as well do so as well on your end. No use waiting if you need it quick. I'm sure eventually it'll be done here too.

@Andre601
Copy link
Contributor

Came looking to see how likely it was that this issue would be looked at, to find this. If the project is abandoned, it would be nice to be marked as such. Not a demand or expectation of infinite support/service, just transparency is nice so when folks who depend on that work go to update, they know how to plan for the future.

Any chance of the dev or project lead commenting on this for clarity on even an intention to look at it? I get not having time to do it on demand but the communication is nice

It's not abandoned (And I in fact never said this in my message). It's just the simple fact that the main (And only) dev of the project does not have any time to spent on this project. This usually also includes not having time to write any comments. But I can assure you that CodeCrafter knows about this issues and wants to look into them. He just can't affort the time necessary for all of this.

It's something most people forget all the time when using plugins like BTLP. That a free resource may not have countless people behind it working on it.

We’ve decided to just fork it privately and fix it ourselves along side a few other things we’ve wanted implemented for quite some time. May as well do so as well on your end. No use waiting if you need it quick. I'm sure eventually it'll be done here too.

Well, they may not have the knowledge? Just because you forked and fixed the problem doesn't mean other people have the knowledge to do so either...
Also, it would probably be a better move to also propose these fixes as a PR, as it could help fixing the issue faster, since CodeCrafter wouldn't need to spend time finding and fixing it himself and could instead just review the changes, maybe give some corrections and merge it if it is good.

@Kas-tle
Copy link
Contributor

Kas-tle commented Oct 1, 2023

Should be resolved with merge of #729 in latest update.

@MacTh3Mac
Copy link
Author

Latest Update Resolves kick errors but introduces new issue.

Tab list formatting is lost on Server Change, Doesn't show tab list designated to server. (issue on Bungeecord / waterfall latest)

Tested against:
BungeeCord: SpigotMC/BungeeCord@1ef4d27
Waterfall: PaperMC/Waterfall@ce48007
BTLP Version: 3.6.2 (Spigot Release) & BTLP 3.6.1-SNAPSHOT (https://ci.codecrafter47.de/job/BungeeTabListPlus/1141/)

@MacTh3Mac
Copy link
Author

Additional Info Ref: #727 (comment)

Correct Tab List is displayed when 1st Joining, Issue only occurs after Server Change.

@MacTh3Mac
Copy link
Author

Additional info Ref: #727 (comment)

This display issue affects 1.20.2 Clients Only. Lower Versions unaffected.

@andrewkm
Copy link

andrewkm commented Oct 1, 2023

Latest Update Resolves kick errors but introduces new issue.

Tab list formatting is lost on Server Change, Doesn't show tab list designated to server. (issue on Bungeecord / waterfall latest)

Tested against: BungeeCord: SpigotMC/BungeeCord@1ef4d27 Waterfall: PaperMC/Waterfall@ce48007 BTLP Version: 3.6.2 (Spigot Release) & BTLP 3.6.1-SNAPSHOT (https://ci.codecrafter47.de/job/BungeeTabListPlus/1141/)

Cannot reproduce.
Can you provide more information ,or an example.

@Phoenix616
Copy link

Phoenix616 commented Oct 2, 2023

While the kick seems fixed to me it wont display any players after server switch.

image

I only use one global tablist though, not a per-server one.

EDIT: To make it clear as an omission usually isn't: There is also no error in the log

@HippieBeak
Copy link

HippieBeak commented Oct 2, 2023

I can reproduce with the global tablist.

  • Login to a server with BTLP
  • Switch to another server using BTLP (at this point, the tablist should still be working)
  • Log out
  • You should see the below error in your Bungee console:
java.lang.NullPointerException: Cannot invoke "net.md_5.bungee.protocol.MinecraftEncoder.getProtocol()" because the return value of "io.netty.channel.ChannelPipeline.get(java.lang.Class)" is null
        at net.md_5.bungee.netty.ChannelWrapper.getEncodeProtocol(ChannelWrapper.java:51) ~[waterfall.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:4d5746a:544]
        at net.md_5.bungee.UserConnection.sendPacketQueued(UserConnection.java:194) ~[waterfall.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:4d5746a:544]
        at codecrafter47.bungeetablistplus.handler.NewTabOverlayHandler.sendPacket(NewTabOverlayHandler.java:187) ~[?:?]
        at codecrafter47.bungeetablistplus.handler.NewTabOverlayHandler.access$700(NewTabOverlayHandler.java:54) ~[?:?]
        at codecrafter47.bungeetablistplus.handler.NewTabOverlayHandler$CustomContentTabOverlayHandler.onDeactivated(NewTabOverlayHandler.java:701) ~[?:?]
        at codecrafter47.bungeetablistplus.handler.NewTabOverlayHandler$AbstractContentOperationModeHandler.invalidate(NewTabOverlayHandler.java:391) ~[?:?]
        at codecrafter47.bungeetablistplus.handler.NewTabOverlayHandler.update(NewTabOverlayHandler.java:354) ~[?:?]
        at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) ~[waterfall.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:4d5746a:544]
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166) ~[waterfall.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:4d5746a:544]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[waterfall.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:4d5746a:544]
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:413) ~[waterfall.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:4d5746a:544]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[waterfall.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:4d5746a:544]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[waterfall.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:4d5746a:544]
        at java.lang.Thread.run(Thread.java:833) [?:?]
  • Log back in, and repeat starting at step 1
  • When you switch servers, you will no longer appear in the tablist

@MacTh3Mac
Copy link
Author

Steps to reproduce: Join Bungee Network. (Correct tab List is Shown). in all client versions
Change Server to a server that should display either a server specific tab list or global tab list.
Tab list shown has players in wrong order, gaps, formatting is incorrect places, Only on client version 1.20.2

No errors generated in logs, Doesn't occur on Client Versions 1.20.1 or lower.

Below are 2 example tab lists, the issue is the same for global tablists as well as the server specific tablist as shown in the example below that is shown on our long-term hubs.

Is some of the formatting not making it to the client?

If it helps, Environment All Linux, multiple bungees with player data synced with redis-bungee (all on waterfall). I have also tested on a single non-load balanced and data shared bungee and the issue persists.

Tablist Shown on 1st Join
Clean Tablist

Tablist Shown after Server Change
After Server Change

I also have logs spammed with this error upon disconnect only.
https://pastebin.com/7jypXQ4N

Note the error is on final user proxy disconnect, not server change / join or otherwise. Log produced on Test Proxy running Bungeecord (not waterfall)

@CodeCrafter47
Copy link
Owner

Does this issue involve ViaVersion? If so, can the issue be fixed by installing ViaVersion on the backend servers only, that is not on the proxy?

@Kas-tle
Copy link
Contributor

Kas-tle commented Oct 2, 2023

We can resolve the error sent by @HippieBeak and @MacTh3Mac by checking if the connection is valid before queuing packets, but it seems that this error is not related to odd issues that occur after switching servers. Based on HippieBeak's note that it only occurs after leaving and rejoining, I suspect some data is somehow persisting in the packet queue after we terminate the connection and this leads to issues when a player rejoins until after proxy restart.

@MacTh3Mac
Copy link
Author

Does this issue involve ViaVersion? If so, can the issue be fixed by installing ViaVersion on the backend servers only, that is not on the proxy?

We have never used Via-Version on proxies, far too many bugs.

@MacTh3Mac
Copy link
Author

but it seems that this error is not related to odd issues that occur after switching servers. Based on HippieBeak's note that it only occurs after leaving and rejoining, I suspect some data is somehow persisting in the packet queue after we terminate the connection and this leads to issues when a player rejoins until after proxy restart.

The tab list display issues can be recreated on a fresh proxy, busy proxy, empty proxy. on 1st join (proxy) and rejoin (proxy without restart). It appears to be inherent in all situations using a 1.20.2 client. And only on subsequent servers. Primary connection irrespective of which backend server the player arrives on always displays the correct tab list. It's only after a backend server charge that all future tablists remain mis-displayed, including if you return back to the original connected backend server.

Feel free to hop around our network on a 1.20.2 client and the issue should become immediately apparent. Details in Screenshot in prior replies.

@HippieBeak
Copy link

I cannot reproduce it on first join.

@MacTh3Mac
Copy link
Author

Resolved By: a05bead

New Issues on incorrect display moved to new issue #731

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests