vane icon indicating copy to clipboard operation
vane copied to clipboard

1.20.4: MalformedJsonException

Open jacklollz2 opened this issue 2 years ago • 3 comments

https://github.com/oddlama/vane/issues/229 https://github.com/oddlama/vane/issues/175

git-Purpur-2113 (MC: 1.20.4) ProtocolLib #679 80aa42009981b505370b00dd71af6d4e41726f38

java 17.0.9 2023-10-17 LTS Java(TM) SE Runtime Environment GraalVM EE 22.3.4 (build 17.0.9+11-LTS-jvmci-22.3-b28) Java HotSpot(TM) 64-Bit Server VM GraalVM EE 22.3.4 (build 17.0.9+11-LTS-jvmci-22.3-b28, mixed mode, sharing)

No Plugins except Vane and ProtocolLib.

/customitem give vane_trifles:pouch : Newly created items, and saved items both error. /customitem give vane_trifles:backpack : Newly created items, and saved items both error.

[11:13:13 ERROR]: Could not pass event PlayerInteractEvent to vane-trifles v1.14.0
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 33 path $.translate
        at com.google.gson.Gson.fromJson(Gson.java:1241) ~[gson-2.10.1.jar:?]
        at com.google.gson.Gson.fromJson(Gson.java:1137) ~[gson-2.10.1.jar:?]
        at com.google.gson.Gson.fromJson(Gson.java:1047) ~[gson-2.10.1.jar:?]
        at com.google.gson.Gson.fromJson(Gson.java:982) ~[gson-2.10.1.jar:?]
        at net.kyori.adventure.text.serializer.gson.GsonComponentSerializerImpl.deserialize(GsonComponentSerializerImpl.java:89) ~[adventure-text-serializer-gson-4.15.0.jar:?]
        at net.kyori.adventure.text.serializer.gson.GsonComponentSerializerImpl.deserialize(GsonComponentSerializerImpl.java:41) ~[adventure-text-serializer-gson-4.15.0.jar:?]
        at org.bukkit.craftbukkit.v1_20_R3.inventory.CraftMetaItem.displayName(CraftMetaItem.java:876) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at org.bukkit.craftbukkit.v1_20_R3.inventory.CraftMetaBlockState.displayName(CraftMetaBlockState.java:20) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at org.oddlama.vane.trifles.StorageGroup.open_block_state_inventory(StorageGroup.java:197) ~[vane-trifles-1.14.0.jar:?]
        at org.oddlama.vane.trifles.items.storage.Pouch.on_player_right_click(Pouch.java:61) ~[vane-trifles-1.14.0.jar:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor66.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[purpur-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77) ~[purpur-api-1.20.4-R0.1-SNAPSHOT.jar:git-Purpur-2113]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[purpur-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:617) ~[purpur-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.v1_20_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:592) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.server.level.ServerPlayerGameMode.useItemOn(ServerPlayerGameMode.java:538) ~[?:?]
        at net.minecraft.server.network.ServerGamePacketListenerImpl.handleUseItemOn(ServerGamePacketListenerImpl.java:2009) ~[?:?]
        at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.handle(ServerboundUseItemOnPacket.java:37) ~[?:?]
        at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.a(ServerboundUseItemOnPacket.java:9) ~[?:?]
        at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$0(PacketUtils.java:54) ~[?:?]
        at net.minecraft.server.TickTask.run(TickTask.java:18) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
        at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
        at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1485) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:194) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
        at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1462) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1385) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
        at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1363) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1247) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:326) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at java.lang.Thread.run(Thread.java:842) ~[?:?]
Caused by: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 33 path $.translate
        at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1659) ~[gson-2.10.1.jar:?]
        at com.google.gson.stream.JsonReader.nextQuotedValue(JsonReader.java:1044) ~[gson-2.10.1.jar:?]
        at com.google.gson.stream.JsonReader.nextString(JsonReader.java:826) ~[gson-2.10.1.jar:?]
        at net.kyori.adventure.text.serializer.gson.ComponentSerializerImpl.read(ComponentSerializerImpl.java:145) ~[adventure-text-serializer-gson-4.15.0.jar:?]
        at net.kyori.adventure.text.serializer.gson.ComponentSerializerImpl.read(ComponentSerializerImpl.java:77) ~[adventure-text-serializer-gson-4.15.0.jar:?]
        at com.google.gson.TypeAdapter$1.read(TypeAdapter.java:204) ~[gson-2.10.1.jar:?]
        at com.google.gson.Gson.fromJson(Gson.java:1227) ~[gson-2.10.1.jar:?]
        ... 35 more

jacklollz2 avatar Jan 03 '24 11:01 jacklollz2

I've tried to reproduce this using the exact version you are using. Purpur-2113, vane 1.14.0, ProtocolLib 679 and Java 17.0.9 LTS, but had no success. Everything is working as expected for me, which makes this a little harder...

The error stems from this line: https://github.com/oddlama/vane/blob/db89b1ec3978014b9f002e5580b278f5ed2aef67/vane-trifles/src/main/java/org/oddlama/vane/trifles/StorageGroup.java#L197 where we only call official API to retrieve the name of the backpack.

From what I can tell right now there is no bug in that line, everything is utilized as it should be. The true error occurs later within the server when it is trying to load the metadata for the backpack (which is actually just a dropper). What's interesting is the $.translate, which hints at an issue with the translated string that is stored as the backpack's name by default. That in turn is usually a hint that something else is modifying the item name and that something doesn't expect the string to be more complex than just a simple name.

If you say that there are no other plugins involved this time and it still happens when you create a new backpack, my only remaining guess is that there's a datapack messing with the item name. Do you have any installed? If not, I don't see how our setups are any different which makes this very weird.

In either case you can try to disable client side translations in vane-core/config.yml to maybe work around the issue. But this will only affect new items.

oddlama avatar Jan 03 '24 20:01 oddlama

There are no data packs, it is the vanilla configurations.

jacklollz2 avatar Jan 04 '24 03:01 jacklollz2

Disabling Client side translations still prevents using Vane items.

[20:12:33] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to vane-trifles v1.14.0
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 33 path $.text
        at com.google.gson.Gson.fromJson(Gson.java:1241) ~[gson-2.10.1.jar:?]
        at com.google.gson.Gson.fromJson(Gson.java:1137) ~[gson-2.10.1.jar:?]
        at com.google.gson.Gson.fromJson(Gson.java:1047) ~[gson-2.10.1.jar:?]
        at com.google.gson.Gson.fromJson(Gson.java:982) ~[gson-2.10.1.jar:?]
        at net.kyori.adventure.text.serializer.gson.GsonComponentSerializerImpl.deserialize(GsonComponentSerializerImpl.java:89) ~[adventure-text-serializer-gson-4.15.0.jar:?]
        at net.kyori.adventure.text.serializer.gson.GsonComponentSerializerImpl.deserialize(GsonComponentSerializerImpl.java:41) ~[adventure-text-serializer-gson-4.15.0.jar:?]
        at org.bukkit.craftbukkit.v1_20_R3.inventory.CraftMetaItem.displayName(CraftMetaItem.java:876) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at org.bukkit.craftbukkit.v1_20_R3.inventory.CraftMetaBlockState.displayName(CraftMetaBlockState.java:20) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at org.oddlama.vane.trifles.StorageGroup.open_block_state_inventory(StorageGroup.java:197) ~[vane-trifles-1.14.0.jar:?]
        at org.oddlama.vane.trifles.items.storage.Backpack.on_player_right_click(Backpack.java:62) ~[vane-trifles-1.14.0.jar:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor96.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[purpur-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77) ~[purpur-api-1.20.4-R0.1-SNAPSHOT.jar:git-Purpur-2113]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[purpur-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:617) ~[purpur-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.v1_20_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:592) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.server.level.ServerPlayerGameMode.useItemOn(ServerPlayerGameMode.java:538) ~[?:?]
        at net.minecraft.server.network.ServerGamePacketListenerImpl.handleUseItemOn(ServerGamePacketListenerImpl.java:2009) ~[?:?]
        at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.handle(ServerboundUseItemOnPacket.java:37) ~[?:?]
        at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.a(ServerboundUseItemOnPacket.java:9) ~[?:?]
        at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$0(PacketUtils.java:54) ~[?:?]
        at net.minecraft.server.TickTask.run(TickTask.java:18) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
        at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
        at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1485) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:194) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
        at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1462) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1385) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
        at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1363) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1247) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:326) ~[purpur-1.20.4.jar:git-Purpur-2113]
        at java.lang.Thread.run(Thread.java:842) ~[?:?]
Caused by: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 33 path $.text
        at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1659) ~[gson-2.10.1.jar:?]
        at com.google.gson.stream.JsonReader.nextQuotedValue(JsonReader.java:1044) ~[gson-2.10.1.jar:?]
        at com.google.gson.stream.JsonReader.nextString(JsonReader.java:826) ~[gson-2.10.1.jar:?]
        at net.kyori.adventure.text.serializer.gson.GsonHacks.readString(GsonHacks.java:58) ~[adventure-text-serializer-gson-4.15.0.jar:?]
        at net.kyori.adventure.text.serializer.gson.ComponentSerializerImpl.read(ComponentSerializerImpl.java:143) ~[adventure-text-serializer-gson-4.15.0.jar:?]
        at net.kyori.adventure.text.serializer.gson.ComponentSerializerImpl.read(ComponentSerializerImpl.java:77) ~[adventure-text-serializer-gson-4.15.0.jar:?]
        at com.google.gson.TypeAdapter$1.read(TypeAdapter.java:204) ~[gson-2.10.1.jar:?]
        at com.google.gson.Gson.fromJson(Gson.java:1227) ~[gson-2.10.1.jar:?]
        ... 35 more

jacklollz2 avatar Jan 06 '24 20:01 jacklollz2