LuckPerms

LuckPerms

41.4k Downloads

PluginMessaging: Expected a com.google.gson.JsonObject but was com.google.gson.JsonPrimitive (Velocity + Fabric)

Schmazda opened this issue ยท 8 comments

commented

Description

Whenever I change a users permissions using /lpv user permission set i get kicked by the fabric server because of Internal Exception: com.google.gson.JsonSyntaxException: Expected a com.google.gson.JsonObject but was com.google.gson.JsonPrimitive
It works the other way around though, so when i use /lp user permssion set the proxy syncs without any problems

Reproduction Steps

Install the latest version of Velocity
Install LuckPerms for Velocity
Install Fabric 1.18.1
Install LuckPerms for Fabric
configure Velocity to redirect to Fabric
Configure both instances as stated here and here to use MySQL and Plugin Messaging Channels to communicate with each other

Expected Behaviour

Fabric should sync permissions with Velocity without throwing an exception

Server Details

Velocity 3.1.2-SNAPSHOT-136
Minecraft 1.18.1 with Fabric Loader 0.13.3 and fabric-api-0.46.6+1.18

LuckPerms Version

v.5.4.18

Logs and Configs

The full stacktrace can be found here

The full server log can be found here

My LuckPerms Fabric Config can be found here

My LuckPerms Velocity Config can be found here

Here is the output of lp info and here is the output of lpv info

Extra Details

No response

commented

Ok I think that should fix it. (you only need to update the Fabric server, not the proxy)

commented

In my test, without fabricproxy also throw exception.
I think this issue is caused by proxy side, not related fabricproxy.

server.log (execute lpv networksync on proxy):

[15:04:04] [main/INFO]: Loading Minecraft 1.18.2 with Fabric Loader 0.13.3
[15:04:04] [main/INFO]: Loading 37 mods:
	- fabric 0.51.1+1.18.2
	- fabric-api-base 0.4.4+d7c144a860 via fabric
	- fabric-api-lookup-api-v1 1.6.0+2373a54560 via fabric
	- fabric-biome-api-v1 8.0.4+7b0f312660 via fabric
	- fabric-command-api-v1 1.1.9+d7c144a860 via fabric
	- fabric-commands-v0 0.2.8+b4f4f6cd60 via fabric
	- fabric-containers-v0 0.1.21+d7c144a860 via fabric
	- fabric-content-registries-v0 3.0.3+d82b939260 via fabric
	- fabric-convention-tags-v1 1.0.1+474e4f7960 via fabric
	- fabric-crash-report-info-v1 0.1.11+3ac43d9560 via fabric
	- fabric-dimensions-v1 2.1.17+2540745460 via fabric
	- fabric-entity-events-v1 1.4.8+d7c144a860 via fabric
	- fabric-events-interaction-v0 0.4.19+d7c144a860 via fabric
	- fabric-events-lifecycle-v0 0.2.14+d7c144a860 via fabric
	- fabric-game-rule-api-v1 1.0.13+d7c144a860 via fabric
	- fabric-item-api-v1 1.4.0+4457765560 via fabric
	- fabric-item-groups-v0 0.3.11+91896a4960 via fabric
	- fabric-lifecycle-events-v1 2.0.3+2d83e92c60 via fabric
	- fabric-loot-tables-v1 1.0.11+d7c144a860 via fabric
	- fabric-mining-level-api-v1 2.1.0+81ea5b3c60 via fabric
	- fabric-networking-api-v1 1.0.21+d882b91560 via fabric
	- fabric-networking-v0 0.3.8+b4f4f6cd60 via fabric
	- fabric-object-builder-api-v1 2.1.0+fe4ddef060 via fabric
	- fabric-particles-v1 0.2.12+526dc1ac60 via fabric
	- fabric-permissions-api-v0 0.1-SNAPSHOT via luckperms
	- fabric-registry-sync-v0 0.9.8+0d9ab37260 via fabric
	- fabric-rendering-data-attachment-v1 0.3.7+d7c144a860 via fabric
	- fabric-rendering-fluids-v1 2.0.2+54e5b2ec60 via fabric
	- fabric-resource-conditions-api-v1 2.0.3+91b7aa6660 via fabric
	- fabric-resource-loader-v0 0.4.18+2de5574560 via fabric
	- fabric-screen-handler-api-v1 1.2.0+1f6558e860 via fabric
	- fabric-transfer-api-v1 1.6.0+2373a54560 via fabric
	- fabric-transitive-access-wideners-v1 1.0.0+bd8a4a1860 via fabric
	- fabricloader 0.13.3
	- java 17
	- luckperms 5.4.18
	- minecraft 1.18.2
[15:04:04] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=file:/C:/Users/james/Desktop/FP/Fabric/libraries/net/fabricmc/sponge-mixin/0.11.2+mixin.0.8.5/sponge-mixin-0.11.2+mixin.0.8.5.jar Service=Knot/Fabric Env=SERVER
[15:04:05] [main/INFO]: Compatibility level set to JAVA_16
[15:04:15] [main/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[15:04:19] [main/WARN]: Ambiguity between arguments [teleport, location] and [teleport, destination] with inputs: [0.1 -0.5 .9, 0 0 0]
[15:04:19] [main/WARN]: Ambiguity between arguments [teleport, location] and [teleport, targets] with inputs: [0.1 -0.5 .9, 0 0 0]
[15:04:19] [main/WARN]: Ambiguity between arguments [teleport, destination] and [teleport, targets] with inputs: [Player, 0123, @e, dd12be42-52a9-4a91-a8a1-11c01849e498]
[15:04:19] [main/WARN]: Ambiguity between arguments [teleport, targets] and [teleport, destination] with inputs: [Player, 0123, dd12be42-52a9-4a91-a8a1-11c01849e498]
[15:04:19] [main/WARN]: Ambiguity between arguments [teleport, targets, location] and [teleport, targets, destination] with inputs: [0.1 -0.5 .9, 0 0 0]
[15:04:20] [Worker-Main-27/INFO]: Loaded 7 recipes
[15:04:20] [Worker-Main-27/INFO]: Loaded 1141 advancements
[15:04:22] [main/INFO]: Applied 0 biome modifications to 0 of 61 new biomes in 10.37 ms
[15:04:22] [Server thread/INFO]:         __    
[15:04:22] [Server thread/INFO]:   |    |__)   LuckPerms v5.4.18
[15:04:22] [Server thread/INFO]:   |___ |      Running on Fabric - [email protected]+1.18.2
[15:04:22] [Server thread/INFO]: 
[15:04:22] [Server thread/INFO]: Loading configuration...
[15:04:23] [Server thread/INFO]: Loading storage provider... [MONGODB]
[15:04:23] [Server thread/INFO]: Cluster created with settings {hosts=[10.121.35.13:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms'}
[15:04:23] [Server thread/INFO]: Loading messaging service... [PLUGINMSG]
[15:04:23] [Server thread/INFO]: Loading internal permission managers...
[15:04:23] [Server thread/INFO]: Performing initial data load...
[15:04:23] [cluster-ClusterId{value='6264f677c0a3281dc9c784b3', description='null'}-10.121.35.13:27017/INFO]: Opened connection [connectionId{localValue:2, serverValue:84}] to 10.121.35.13:27017
[15:04:23] [cluster-rtt-ClusterId{value='6264f677c0a3281dc9c784b3', description='null'}-10.121.35.13:27017/INFO]: Opened connection [connectionId{localValue:1, serverValue:85}] to 10.121.35.13:27017
[15:04:23] [cluster-ClusterId{value='6264f677c0a3281dc9c784b3', description='null'}-10.121.35.13:27017/INFO]: Monitor thread successfully connected to server with description ServerDescription{address=10.121.35.13:27017, type=STANDALONE, state=CONNECTED, ok=true, minWireVersion=0, maxWireVersion=8, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=121850500}
[15:04:23] [luckperms-worker-4/INFO]: Opened connection [connectionId{localValue:3, serverValue:86}] to 10.121.35.13:27017
[15:04:24] [Server thread/INFO]: Successfully enabled. (took 1340ms)
[15:04:24] [Server thread/INFO]: Starting minecraft server version 1.18.2
[15:04:24] [Server thread/INFO]: Loading properties
[15:04:24] [Server thread/INFO]: Default game type: SURVIVAL
[15:04:24] [Server thread/INFO]: Generating keypair
[15:04:24] [Server thread/INFO]: Starting Minecraft server on *:25565
[15:04:24] [Server thread/INFO]: Using default channel type
[15:04:25] [Server thread/WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!
[15:04:25] [Server thread/WARN]: The server will make no attempt to authenticate usernames. Beware.
[15:04:25] [Server thread/WARN]: While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.
[15:04:25] [Server thread/WARN]: To change this, set "online-mode" to "true" in the server.properties file.
[15:04:25] [Server thread/INFO]: Preparing level "world"
[15:04:25] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld
[15:04:26] [Worker-Main-24/INFO]: Preparing spawn area: 0%
[15:04:26] [Worker-Main-19/INFO]: Preparing spawn area: 0%
[15:04:26] [Worker-Main-21/INFO]: Preparing spawn area: 0%
[15:04:26] [Worker-Main-28/INFO]: Preparing spawn area: 0%
[15:04:27] [Worker-Main-28/INFO]: Preparing spawn area: 0%
[15:04:27] [Worker-Main-20/INFO]: Preparing spawn area: 0%
[15:04:28] [Worker-Main-22/INFO]: Preparing spawn area: 0%
[15:04:28] [Worker-Main-21/INFO]: Preparing spawn area: 0%
[15:04:29] [Worker-Main-18/INFO]: Preparing spawn area: 6%
[15:04:30] [Worker-Main-29/INFO]: Preparing spawn area: 6%
[15:04:30] [Worker-Main-16/INFO]: Preparing spawn area: 15%
[15:04:30] [Worker-Main-24/INFO]: Preparing spawn area: 49%
[15:04:31] [Worker-Main-16/INFO]: Preparing spawn area: 67%
[15:04:32] [Server thread/INFO]: Time elapsed: 6617 ms
[15:04:32] [Server thread/INFO]: Done (6.869s)! For help, type "help"
[15:04:34] [luckperms-worker-4/WARN]: LuckPerms already has data for player 'james58899' - but this data is stored under a different UUID.
[15:04:34] [luckperms-worker-4/WARN]: 'james58899' has previously used the unique ids [c34943d9-2c8a-43f1-ba69-c69e0547b3fd] but is now connecting with '14dc5ec7-33a6-3c16-adbc-a7327fe9e3b0'
[15:04:34] [luckperms-worker-4/WARN]: The UUID the player is connecting with now is NOT Mojang-assigned (type 3). This implies that THIS server is not authenticating correctly, but one (or more) of the other servers/proxies in the network are.
[15:04:34] [luckperms-worker-4/WARN]: If you're using BungeeCord/Velocity, please ensure that IP-Forwarding is setup correctly on all of your backend servers!
[15:04:34] [luckperms-worker-4/WARN]: See here for more info: https://luckperms.net/wiki/Network-Installation#pre-setup
[15:04:34] [Server thread/INFO]: james58899[/127.0.0.1:63663] logged in with entity id 232 at (179.31461887416515, 72.0, 200.958120230731)
[15:04:34] [Server thread/INFO]: james58899 joined the game
[15:04:39] [Netty Server IO #2/ERROR]: Encountered exception while handling in channel with name "luckperms:update"
java.lang.NullPointerException: Cannot invoke "com.google.gson.JsonObject.getAsJsonObject()" because the return value of "com.google.gson.Gson.fromJson(String, java.lang.Class)" is null
	at me.lucko.luckperms.common.messaging.LuckPermsMessagingService.consumeIncomingMessageAsString(LuckPermsMessagingService.java:168) ~[LuckPerms-Fabric-5.4.18.jar:?]
	at me.lucko.luckperms.fabric.messaging.PluginMessageMessenger.receive(PluginMessageMessenger.java:101) ~[LuckPerms-Fabric-5.4.18.jar:?]
	at net.fabricmc.fabric.impl.networking.server.ServerPlayNetworkAddon.receive(ServerPlayNetworkAddon.java:89) ~[fabric-networking-api-v1-1.0.21+d882b91560-8caffa82fdcf8532.jar:?]
	at net.fabricmc.fabric.impl.networking.server.ServerPlayNetworkAddon.receive(ServerPlayNetworkAddon.java:38) ~[fabric-networking-api-v1-1.0.21+d882b91560-8caffa82fdcf8532.jar:?]
	at net.fabricmc.fabric.impl.networking.AbstractChanneledNetworkAddon.handle(AbstractChanneledNetworkAddon.java:100) [fabric-networking-api-v1-1.0.21+d882b91560-8caffa82fdcf8532.jar:?]
	at net.fabricmc.fabric.impl.networking.server.ServerPlayNetworkAddon.handle(ServerPlayNetworkAddon.java:84) [fabric-networking-api-v1-1.0.21+d882b91560-8caffa82fdcf8532.jar:?]
	at net.minecraft.class_3244.handler$zcj000$handleCustomPayloadReceivedAsync(class_3244.java:1714) [server-intermediary.jar:?]
	at net.minecraft.class_3244.method_12075(class_3244.java) [server-intermediary.jar:?]
	at net.minecraft.class_2817.method_12199(class_2817.java:38) [server-intermediary.jar:?]
	at net.minecraft.class_2817.method_11054(class_2817.java:7) [server-intermediary.jar:?]
	at net.minecraft.class_2535.method_10759(class_2535.java:172) [server-intermediary.jar:?]
	at net.minecraft.class_2535.method_10770(class_2535.java:157) [server-intermediary.jar:?]
	at net.minecraft.class_2535.channelRead0(class_2535.java:55) [server-intermediary.jar:?]
	at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-all-4.1.68.Final.jar:?]
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) [netty-all-4.1.68.Final.jar:?]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-all-4.1.68.Final.jar:?]
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) [netty-all-4.1.68.Final.jar:?]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-all-4.1.68.Final.jar:?]
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) [netty-all-4.1.68.Final.jar:?]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-all-4.1.68.Final.jar:?]
	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) [netty-all-4.1.68.Final.jar:?]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) [netty-all-4.1.68.Final.jar:?]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [netty-all-4.1.68.Final.jar:?]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-all-4.1.68.Final.jar:?]
	at java.lang.Thread.run(Thread.java:833) [?:?]
[15:04:39] [Server thread/INFO]: james58899 lost connection: Internal Exception: java.lang.NullPointerException: Cannot invoke "com.google.gson.JsonObject.getAsJsonObject()" because the return value of "com.google.gson.Gson.fromJson(String, java.lang.Class)" is null
[15:04:39] [Server thread/INFO]: james58899 left the game
[15:04:48] [Server thread/INFO]: Stopping the server
[15:04:49] [Server thread/INFO]: Starting shutdown process...
[15:04:49] [Server thread/INFO]: Closing messaging service...
[15:04:49] [Server thread/INFO]: Closing storage...
[15:04:49] [Server thread/INFO]: Goodbye!
[15:04:49] [Server thread/INFO]: Stopping server
[15:04:49] [Server thread/INFO]: Saving players
[15:04:49] [Server thread/INFO]: Saving worlds
[15:04:49] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld
[15:04:49] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_nether
[15:04:49] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_end
[15:04:49] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved
[15:04:49] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved
[15:04:49] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved
[15:04:49] [Server thread/INFO]: ThreadedAnvilChunkStorage: All dimensions are saved

proxy.log (execute lp networksync on server):

[15:00:27 ERROR]: Couldn't pass PluginMessageEvent to luckperms
java.lang.IllegalStateException: java.io.EOFException
        at com.google.common.io.ByteStreams$ByteArrayDataInputStream.readUTF(ByteStreams.java:454) ~[velocity-3.1.2-SNAPSHOT-137.jar:3.1.2-SNAPSHOT (git-aa38d3e5-b137)]
        at me.lucko.luckperms.velocity.messaging.PluginMessageMessenger.onPluginMessage(PluginMessageMessenger.java:106) ~[?:?]
        at me.lucko.luckperms.velocity.messaging.Lmbda$8.execute(Unknown Source) ~[?:?]
        at com.velocitypowered.proxy.event.UntargetedEventHandler$VoidHandler.lambda$buildHandler$0(UntargetedEventHandler.java:47) ~[velocity-3.1.2-SNAPSHOT-137.jar:3.1.2-SNAPSHOT (git-aa38d3e5-b137)]
        at com.velocitypowered.proxy.event.VelocityEventManager.fire(VelocityEventManager.java:598) ~[velocity-3.1.2-SNAPSHOT-137.jar:3.1.2-SNAPSHOT (git-aa38d3e5-b137)]
        at com.velocitypowered.proxy.event.VelocityEventManager.lambda$fire$5(VelocityEventManager.java:479) ~[velocity-3.1.2-SNAPSHOT-137.jar:3.1.2-SNAPSHOT (git-aa38d3e5-b137)]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.io.EOFException
        at java.io.DataInputStream.readFully(DataInputStream.java:203) ~[?:?]
        at java.io.DataInputStream.readUTF(DataInputStream.java:614) ~[?:?]
        at java.io.DataInputStream.readUTF(DataInputStream.java:570) ~[?:?]
        at com.google.common.io.ByteStreams$ByteArrayDataInputStream.readUTF(ByteStreams.java:452) ~[velocity-3.1.2-SNAPSHOT-137.jar:3.1.2-SNAPSHOT (git-aa38d3e5-b137)]
        ... 8 more
commented

Please could you update to the latest version of LP on your proxy/server.

Not expecting it to fix the problem, but should at least give a more helpful error message. :)

commented

Stacktrace: https://gist.github.com/MathiSmati/dfbaa7d85dbe23f4131a876a0eedf48c
Full Server Log: https://gist.github.com/MathiSmati/1b4cb37de325c2cd1d2d34d06c11f608

It also seems like I have to be online on my server to trigger this error if that helps

commented

After doing some tinkering of my own I came to the conclusion it's something caused by fabricproxy-lite.. which is awkward because it's absolutely crucial for getting a Fabric server running on a network

Server and proxy logs with FPL and running lpv networksync https://gist.github.com/emilyy-dev/19a6be901a07fc72c6703b8c5b6a69ce
Server only log without FPL and sending an update notification from the client https://gist.github.com/emilyy-dev/e1389be9cf61615299db9d99a21d43f6

@james58899 I'm not particularly familiar with FPL's codebase but most things I see are related with login stage, not play stage; is there anything that could potentially modify post-login packets? (specifically CustomPayloadC2S, as everything else seems to work fine)

commented

@emilyy-dev Fabricproxy-lite only register packet receiver in login stage and should not touch any packet in play stage.

I will take a look why fabricproxy-lite caused this issue.

commented

Well my testing assumes there are no issues at proxy level.. which may be a wrong assumption to make. Will conduct further testing.

commented

Yeah, it works perfectly, thank you!