sisby-folk / switchy

A minecraft mod that combines player personalization features from other mods into presets.
https://modrinth.com/mod/switchy
GNU Lesser General Public License v3.0
12 stars 8 forks source link

Crash when opening switcher when using styled nicknames #36

Closed sisby-folk closed 1 year ago

sisby-folk commented 1 year ago
java.lang.UnsupportedOperationException: JsonObject
        at com.google.gson.JsonElement.getAsString(JsonElement.java:179) ~[gson-2.8.9.jar:?]
        at folk.sisby.switchy.modules.StyledNicknamesModule.toClientNbt(StyledNicknamesModule.java:86) ~[switchy-compat-2.0.0-beta.13+1.19.jar-5ba0862f-c354-44c8-812b-e0bace1409f8-nested.jar:?]
Draconizations commented 1 year ago

Attaching logs from my own Quilt server running Switchy 2.0.2, as well as some screenshots of another styled nicknames bug that I found that might be related?

crash log, notenoughcrashes is present on the server.

[18:00:53] [Netty Epoll Server IO #1/ERROR]: Encountered exception while handling in channel with name "switchy:c2s_client_presets"
java.lang.UnsupportedOperationException: JsonObject
        at Not Enough Crashes deobfuscated stack trace.(1.19.2+build.28) ~[?:?]
        at com.google.gson.JsonElement.getAsString(JsonElement.java:179) ~[gson-2.8.9.jar:?]
        at folk.sisby.switchy.modules.StyledNicknamesModule.toClientNbt(StyledNicknamesModule.java:86) ~[transformed-mod-switchy-compat.i0:0/:?]
        at folk.sisby.switchy.util.PresetConverter.lambda$presetToNbt$2(PresetConverter.java:71) ~[transformed-mod-switchy-client.i0:0/:?]
        at java.util.HashMap.forEach(HashMap.java:1421) ~[?:?]
        at folk.sisby.switchy.util.PresetConverter.presetToNbt(PresetConverter.java:69) ~[transformed-mod-switchy-client.i0:0/:?]
        at folk.sisby.switchy.util.PresetConverter.lambda$presetsToNbt$1(PresetConverter.java:52) ~[transformed-mod-switchy-client.i0:0/:?]
        at java.util.TreeMap.forEach(TreeMap.java:1282) ~[?:?]
        at folk.sisby.switchy.util.PresetConverter.presetsToNbt(PresetConverter.java:52) ~[transformed-mod-switchy-client.i0:0/:?]
        at folk.sisby.switchy.SwitchyClientServerNetworking.sendClientPresets(SwitchyClientServerNetworking.java:162) ~[transformed-mod-switchy-client.i0:0/:?]
        at folk.sisby.switchy.SwitchyClientServerNetworking.withFeedback(SwitchyClientServerNetworking.java:157) ~[transformed-mod-switchy-client.i0:0/:?]
        at folk.sisby.switchy.SwitchyClientServerNetworking.lambda$InitializeReceivers$4(SwitchyClientServerNetworking.java:117) ~[transformed-mod-switchy-client.i0:0/:?]
        at org.quiltmc.qsl.networking.impl.server.ServerPlayNetworkAddon.receive(ServerPlayNetworkAddon.java:92) ~[transformed-mod-quilt-networking.i0:0/:?]
        at org.quiltmc.qsl.networking.impl.server.ServerPlayNetworkAddon.receive(ServerPlayNetworkAddon.java:40) ~[transformed-mod-quilt-networking.i0:0/:?]
        at org.quiltmc.qsl.networking.impl.AbstractChanneledNetworkAddon.handle(AbstractChanneledNetworkAddon.java:101) ~[transformed-mod-quilt-networking.i0:0/:?]
        at org.quiltmc.qsl.networking.impl.server.ServerPlayNetworkAddon.handle(ServerPlayNetworkAddon.java:87) ~[transformed-mod-quilt-networking.i0:0/:?]
        at net.minecraft.server.network.ServerPlayNetworkHandler.handler$zia000$handleCustomPayloadReceivedAsync(ServerPlayNetworkHandler:2061) ~[?:?]
        at net.minecraft.server.network.ServerPlayNetworkHandler.onCustomPayload(ServerPlayNetworkHandler) ~[?:?]
        at net.minecraft.network.packet.c2s.play.CustomPayloadC2SPacket.apply(CustomPayloadC2SPacket:38) ~[?:?]
        at net.minecraft.network.packet.c2s.play.CustomPayloadC2SPacket.apply(CustomPayloadC2SPacket:7) ~[?:?]
        at net.minecraft.network.ClientConnection.handlePacket(ClientConnection:167) ~[?:?]
        at net.minecraft.network.ClientConnection.channelRead0(ClientConnection:152) ~[?:?]
        at net.minecraft.network.ClientConnection.channelRead0(ClientConnection:50) ~[?:?]
        at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) [netty-codec-4.1.77.Final.jar:?]
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299) [netty-codec-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) [netty-codec-4.1.77.Final.jar:?]
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299) [netty-codec-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) [netty-codec-4.1.77.Final.jar:?]
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299) [netty-codec-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [netty-codec-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) [netty-handler-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [netty-transport-4.1.77.Final.jar:?]
        at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) [netty-transport-classes-epoll-4.1.77.Final.jar:?]
        at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:487) [netty-transport-classes-epoll-4.1.77.Final.jar:?]
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:385) [netty-transport-classes-epoll-4.1.77.Final.jar:?]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995) [netty-common-4.1.77.Final.jar:?]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.77.Final.jar:?]
        at java.lang.Thread.run(Thread.java:833) [?:?]

The (maybe) related bug is new nicknames not immediately applying to the preset they're set on. You have to switch to a different preset, then switch back for the nickname to properly show up. image I don't actually know if these two are related so these might be two separate issues.

sisby-folk commented 1 year ago

Yeah so we were putting a JsonElement in NBT using getAsString() instead of toString() so it failed every time. Yes. really. lmao.

Fixed in 2.0.3.

As for the second issue - I can't seem to recreate it on local - if it doesn't happen without switchy, feel free to set us up with some reproduction steps in a new issue please!