Skip to content

Workaround Text instances that can't be serialized to JSON#114

Merged
creesch merged 2 commits intomainfrom
workaround-non-unparsable-text
Jun 7, 2025
Merged

Workaround Text instances that can't be serialized to JSON#114
creesch merged 2 commits intomainfrom
workaround-non-unparsable-text

Conversation

@creesch
Copy link
Copy Markdown
Collaborator

@creesch creesch commented May 11, 2025

I had minecraft crash a few times being caused by me activating a specific feature in freecam. This feature send a Text message that causes a JsonParseException when we try to parse it.

com.google.gson.JsonParseException: This value needs to be parsed as component
	at knot/com.mojang.serialization.DataResult$Error.mdae6d3d$owo$lambda$addStackTraceToException$0$0(DataResult.java:584) ~[datafixerupper-8.0.16.jar:?]
	at knot/com.mojang.serialization.DataResult$Error.getOrThrow(DataResult.java:287) ~[datafixerupper-8.0.16.jar:?]
	at knot/net.minecraft.class_2561$class_2562.method_10874(class_2561.java:167) ~[client-intermediary.jar:?]
	at knot/net.minecraft.class_2561$class_2562.method_10867(class_2561.java:173) ~[client-intermediary.jar:?]
	at knot/dev.creesch.model.WebsocketMessageBuilder.createLiveChatMessage(WebsocketMessageBuilder.java:58) ~[web-chat-1.2.0.jar:?]
	at knot/dev.creesch.WebchatClient.lambda$onInitializeClient$1(WebchatClient.java:75) ~[web-chat-1.2.0.jar:?]
	at knot/net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents.lambda$static$8(ClientReceiveMessageEvents.java:124) ~[fabric-message-api-v1-6.0.25+7feeb73304-99f782ae230989d7.jar:?]
	at knot/net.minecraft.class_7594.handler$zlh000$fabric-message-api-v1$fabric_allowGameMessage(class_7594.java:574) ~[client-intermediary.jar:?]
	at knot/net.minecraft.class_7594.method_44736(class_7594.java) ~[client-intermediary.jar:?]
	at knot/net.minecraft.class_746.method_7353(class_746.java:425) ~[client-intermediary.jar:?]
	at knot/net.xolt.freecam.Freecam.onDisableTripod(Freecam.java:214) ~[freecam-fabric-1.3.2+mc1.21.4.jar:?]
	at knot/net.xolt.freecam.Freecam.toggleTripod(Freecam.java:144) ~[freecam-fabric-1.3.2+mc1.21.4.jar:?]
	at knot/net.xolt.freecam.Freecam.toggle(Freecam.java:115) ~[freecam-fabric-1.3.2+mc1.21.4.jar:?]
	at knot/net.xolt.freecam.config.keys.FreecamComboKeyMapping.method_4622(FreecamComboKeyMapping.java:38) ~[freecam-fabric-1.3.2+mc1.21.4.jar:?]
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[?:?]
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024) ~[?:?]
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
	at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310) ~[?:?]
	at java.base/java.util.Spliterators$1Adapter.forEachRemaining(Spliterators.java:706) ~[?:?]
	at knot/net.xolt.freecam.config.ModBindings.forEach(ModBindings.java:61) ~[freecam-fabric-1.3.2+mc1.21.4.jar:?]
	at knot/net.xolt.freecam.Freecam.postTick(Freecam.java:70) ~[freecam-fabric-1.3.2+mc1.21.4.jar:?]
	at knot/net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents.lambda$static$2(ClientTickEvents.java:43) ~[fabric-lifecycle-events-v1-2.5.4+bf2a60eb04-b4ff52bc5028a975.jar:?]
	at knot/net.minecraft.class_310.handler$zla000$fabric-lifecycle-events-v1$onEndTick(class_310.java:7081) [client-intermediary.jar:?]
	at knot/net.minecraft.class_310.method_1574(class_310.java:1940) [client-intermediary.jar:?]
	at knot/net.minecraft.class_310.method_1523(class_310.java:1302) [client-intermediary.jar:?]
	at knot/net.minecraft.class_310.method_1514(class_310.java:922) [client-intermediary.jar:?]
	at knot/net.minecraft.client.main.Main.main(Main.java:267) [client-intermediary.jar:?]
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480) [fabric-loader-0.16.10.jar:?]
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) [fabric-loader-0.16.10.jar:?]
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) [fabric-loader-0.16.10.jar:?]
	at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:105) [NewLaunch.jar:?]
	at org.prismlauncher.EntryPoint.listen(EntryPoint.java:129) [NewLaunch.jar:?]
	at org.prismlauncher.EntryPoint.main(EntryPoint.java:70) [NewLaunch.jar:?]

Since this seems to be an edge case and I am not even sure it isn't freecam doing things wrong I didn't bother (for now) trying to serialize it in a different way. Instead we are just catching the error and showing the plain text message.

@creesch creesch merged commit 54d5804 into main Jun 7, 2025
6 checks passed
@danthedaniel danthedaniel deleted the workaround-non-unparsable-text branch September 8, 2025 20:46
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

Successfully merging this pull request may close these issues.

2 participants