tritonmc / Triton

Translate your server! Sends the same message in different languages... Hooks into all plugins!
https://triton.rexcantor64.com
GNU General Public License v3.0
85 stars 32 forks source link

JSON parse exception when parsing NBT data from item #224

Closed diogotcorreia closed 2 years ago

diogotcorreia commented 2 years ago

Describe the bug

[00:08:42] [Server thread/ERROR]: [Triton] Unhandled exception occurred in onPacketSending(PacketEvent) for Triton
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 9 path $
    at com.google.gson.JsonParser.parseReader(JsonParser.java:66) ~[gson-2.8.9.jar:?]
    at com.google.gson.JsonParser.parseString(JsonParser.java:47) ~[gson-2.8.9.jar:?]
    at com.google.gson.JsonParser.parse(JsonParser.java:98) ~[gson-2.8.9.jar:?]
    at net.md_5.bungee.chat.ComponentSerializer.parse(ComponentSerializer.java:48) ~[bungeecord-chat-1.16-R0.4-deprecated+build.6.jar:?]
    at com.rexcantor64.triton.utils.ItemStackTranslationUtils.translateNbtItem(ItemStackTranslationUtils.java:162) ~[Triton-v3.8.1.jar:?]
    at com.rexcantor64.triton.utils.ItemStackTranslationUtils.translateItemStack(ItemStackTranslationUtils.java:85) ~[Triton-v3.8.1.jar:?]
    at com.rexcantor64.triton.packetinterceptor.ProtocolLibListener.handleSetSlot(ProtocolLibListener.java:438) ~[Triton-v3.8.1.jar:?]
    at com.rexcantor64.triton.packetinterceptor.ProtocolLibListener.onPacketSending(ProtocolLibListener.java:638) ~[Triton-v3.8.1.jar:?]
    at com.comphenix.protocol.injector.SortedPacketListenerList.invokeSendingListener(SortedPacketListenerList.java:195) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.SortedPacketListenerList.invokePacketSending(SortedPacketListenerList.java:149) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.PacketFilterManager.postPacketToListeners(PacketFilterManager.java:547) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.PacketFilterManager.invokePacketSending(PacketFilterManager.java:521) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.netty.manager.NetworkManagerInjector.onPacketSending(NetworkManagerInjector.java:99) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.netty.channel.NettyChannelInjector.processOutbound(NettyChannelInjector.java:570) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.netty.channel.NettyChannelInjector$2.proxyRunnable(NettyChannelInjector.java:473) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.netty.channel.NettyEventLoopProxy.execute(NettyEventLoopProxy.java:220) ~[ProtocolLib.jar:?]
    at net.minecraft.network.Connection.sendPacket(Connection.java:432) ~[?:?]
    at net.minecraft.network.Connection.send(Connection.java:379) ~[?:?]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.send(ServerGamePacketListenerImpl.java:2258) ~[?:?]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.send(ServerGamePacketListenerImpl.java:2244) ~[?:?]
    at net.minecraft.server.level.ServerPlayer$1.sendSlotChange(ServerPlayer.java:296) ~[?:?]
    at net.minecraft.world.inventory.AbstractContainerMenu.synchronizeSlotToRemote(AbstractContainerMenu.java:320) ~[?:?]
    at net.minecraft.world.inventory.AbstractContainerMenu.broadcastChanges(AbstractContainerMenu.java:243) ~[?:?]
    at net.minecraft.server.commands.GiveCommand.giveItem(GiveCommand.java:70) ~[?:?]
    at net.minecraft.server.commands.GiveCommand.lambda$register$1(GiveCommand.java:33) ~[?:?]
    at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:264) ~[petal-1.19.2.jar:?]
    at net.minecraft.commands.Commands.performCommand(Commands.java:312) ~[?:?]
    at net.minecraft.commands.Commands.performPrefixedCommand(Commands.java:291) ~[?:?]
    at net.minecraft.commands.Commands.dispatchServerCommand(Commands.java:280) ~[?:?]
    at net.minecraft.world.level.BaseCommandBlock.performCommand(BaseCommandBlock.java:133) ~[?:?]
    at net.minecraft.world.level.block.CommandBlock.execute(CommandBlock.java:121) ~[?:?]
    at net.minecraft.world.level.block.CommandBlock.tick(CommandBlock.java:108) ~[?:?]
    at net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase.tick(BlockBehaviour.java:1013) ~[?:?]
    at net.minecraft.server.level.ServerLevel.tickBlock(ServerLevel.java:1184) ~[?:?]
    at net.minecraft.world.ticks.LevelTicks.runCollectedTicks(LevelTicks.java:197) ~[?:?]
    at net.minecraft.world.ticks.LevelTicks.tick(LevelTicks.java:94) ~[?:?]
    at net.minecraft.server.level.ServerLevel.tick(ServerLevel.java:656) ~[?:?]
    at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1580) ~[petal-1.19.2.jar:git-petal-"032a81b"]
    at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:485) ~[petal-1.19.2.jar:git-petal-"032a81b"]
    at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1442) ~[petal-1.19.2.jar:git-petal-"032a81b"]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1212) ~[petal-1.19.2.jar:git-petal-"032a81b"]
    at net.minecraft.server.MinecraftServer.lambda$spin$1(MinecraftServer.java:310) ~[petal-1.19.2.jar:git-petal-"032a81b"]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 9 path $
    at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1562) ~[gson-2.8.9.jar:?]
    at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1403) ~[gson-2.8.9.jar:?]
    at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:541) ~[gson-2.8.9.jar:?]
    at com.google.gson.stream.JsonReader.peek(JsonReader.java:424) ~[gson-2.8.9.jar:?]
    at com.google.gson.JsonParser.parseReader(JsonParser.java:61) ~[gson-2.8.9.jar:?]
    ... 42 more
[00:08:42] [Server thread/ERROR]: Parameters: 
  net.minecraft.network.protocol.game.PacketPlayOutSetSlot@4e5566ab[
    c=0
    d=76
    e=38
    f=1 blaze_rod
  ]

How can the bug be reproduced?

Run /minecraft:give @p minecraft:blaze_rod{display:{Name:"Some Text",Lore:["More Text"]},Enchantments:[{id:knockback,lvl:10}]}

Expected behaviour

No response

Which Spigot fork are you using?

Other (specify below)

What's your server version?

petal-1.19.2.jar:git-petal-"032a81b"

Which proxy are you using?

I'm not using a proxy

What's your proxy version?

No response

What's the MC version of your client?

1.19

What's the Triton version you're using?

1.19

Additional Information

No response

diogotcorreia commented 2 years ago

Tried it out, Minecraft 1.19 (actually, since Minecraft 1.13) requires a JSON chat component, not a string, as the name/lore:

/minecraft:give @p blaze_rod{display:{Name:'[{"text":"Some Text","italic":false}]',Lore:['[{"text":"More Text","italic":false}]']},Enchantments:[{id:knockback,lvl:10}],HideFlags:1} 1