ClickEvent.openUrl( is passed straight into uri.create without validation or error checking
type: enhancementarea: api
```
[15:19:01 ERROR]: Error sending packet clientbound/minecraft:system_chat
io.netty.handler.codec.EncoderException: Failed to encode packet 'clientbound/minecraft:system_chat'
at net.minecraft.network.codec.IdDispatchCodec.encode(IdDispatchCodec.java:62) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at net.minecraft.network.codec.IdDispatchCodec.encode(IdDispatchCodec.java:13) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:27) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:12) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ~[netty-codec-base-4.2.7.Final.jar:4.2.7.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:827) ~[netty-transport-4.2.7.Final.jar:4.2.7.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:752) ~[netty-transport-4.2.7.Final.jar:4.2.7.Final]
at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:113) ~[netty-codec-base-4.2.7.Final.jar:4.2.7.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:827) ~[netty-transport-4.2.7.Final.jar:4.2.7.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:752) ~[netty-transport-4.2.7.Final.jar:4.2.7.Final]
at io.netty.channel.ChannelOutboundHandlerAdapter.write(ChannelOutboundHandlerAdapter.java:113) ~[netty-transport-4.2.7.Final.jar:4.2.7.Final]
at net.minecraft.network.Connection$2.write(Connection.java:684) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:827) ~[netty-transport-4.2.7.Final.jar:4.2.7.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:752) ~[netty-transport-4.2.7.Final.jar:4.2.7.Final]
at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:120) ~[netty-codec-base-4.2.7.Final.jar:4.2.7.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:827) ~[netty-transport-4.2.7.Final.jar:4.2.7.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:752) ~[netty-transport-4.2.7.Final.jar:4.2.7.Final]
at io.netty.channel.DefaultChannelPipeline.write(DefaultChannelPipeline.java:1036) ~[netty-transport-4.2.7.Final.jar:4.2.7.Final]
at io.netty.channel.Channel.write(Channel.java:267) ~[netty-transport-4.2.7.Final.jar:4.2.7.Final]
at net.minecraft.network.Connection.doSendPacket(Connection.java:471) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at net.minecraft.network.Connection.lambda$sendPacket$10(Connection.java:451) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148) ~[netty-common-4.2.7.Final.jar:4.2.7.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:141) ~[netty-common-4.2.7.Final.jar:4.2.7.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:535) ~[netty-common-4.2.7.Final.jar:4.2.7.Final]
at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:201) ~[netty-transport-4.2.7.Final.jar:4.2.7.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1193) ~[netty-common-4.2.7.Final.jar:4.2.7.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.2.7.Final.jar:4.2.7.Final]
at java.base/java.lang.Thread.run(Thread.java:1474) ~[?:?]
Caused by: java.lang.IllegalArgumentException: Illegal character in path at index 89: https://cdn.discordapp.com/attachments/2222644922228254494/1422222453390475315/2025-12-07\_20.00.09.png
at java.base/java.net.URI.create(URI.java:936) ~[?:?]
at io.papermc.paper.adventure.AdventureCodecs.lambda$static$9(AdventureCodecs.java:124) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at com.mojang.serialization.codecs.RecordCodecBuilder$Instance.lambda$lift1$1(RecordCodecBuilder.java:158) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.RecordCodecBuilder$2.encode(RecordCodecBuilder.java:112) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.KeyDispatchCodec.encode(KeyDispatchCodec.java:71) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.MapCodec$MapCodecCodec.encode(MapCodec.java:164) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Encoder.encodeStart(Encoder.java:14) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.OptionalFieldCodec.encode(OptionalFieldCodec.java:44) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.OptionalFieldCodec.encode(OptionalFieldCodec.java:17) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$6.encode(RecordCodecBuilder.java:298) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$6.encode(RecordCodecBuilder.java:295) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.RecordCodecBuilder$2.encode(RecordCodecBuilder.java:112) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$6.encode(RecordCodecBuilder.java:298) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.RecordCodecBuilder$2.encode(RecordCodecBuilder.java:112) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.MapCodec$MapCodecCodec.encode(MapCodec.java:164) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.EitherCodec.lambda$encode$4(EitherCodec.java:35) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.datafixers.util.Either$Right.map(Either.java:99) ~[paper-1.21.11.jar:?]
at com.mojang.serialization.codecs.EitherCodec.encode(EitherCodec.java:33) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.EitherCodec.encode(EitherCodec.java:11) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Encoder$1.encode(Encoder.java:25) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Codec$2.encode(Codec.java:79) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Codec$RecursiveCodec.encode(Codec.java:224) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Encoder.encodeStart(Encoder.java:14) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.ListCodec.encode(ListCodec.java:36) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.ListCodec.encode(ListCodec.java:17) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Encoder$2.lambda$encode$0(Encoder.java:39) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.DataResult$Success.flatMap(DataResult.java:201) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Encoder$2.encode(Encoder.java:39) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Codec$2.encode(Codec.java:79) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Encoder.encodeStart(Encoder.java:14) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.OptionalFieldCodec.encode(OptionalFieldCodec.java:44) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.OptionalFieldCodec.encode(OptionalFieldCodec.java:17) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.MapEncoder$1.encode(MapEncoder.java:26) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.MapCodec$2.encode(MapCodec.java:83) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$6.encode(RecordCodecBuilder.java:297) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.RecordCodecBuilder$2.encode(RecordCodecBuilder.java:112) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.MapCodec$MapCodecCodec.encode(MapCodec.java:164) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.EitherCodec.lambda$encode$4(EitherCodec.java:35) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.datafixers.util.Either$Right.map(Either.java:99) ~[paper-1.21.11.jar:?]
at com.mojang.serialization.codecs.EitherCodec.encode(EitherCodec.java:33) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.codecs.EitherCodec.encode(EitherCodec.java:11) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Encoder$1.encode(Encoder.java:25) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Codec$2.encode(Codec.java:79) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Codec$RecursiveCodec.encode(Codec.java:224) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Encoder.encodeStart(Encoder.java:14) ~[datafixerupper-9.0.19.jar:?]
at io.papermc.paper.adventure.WrapperAwareSerializer.serialize(WrapperAwareSerializer.java:37) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at io.papermc.paper.adventure.WrapperAwareSerializer.serialize(WrapperAwareSerializer.java:13) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at io.papermc.paper.adventure.AdventureComponent.deepConverted(AdventureComponent.java:26) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at io.papermc.paper.adventure.AdventureComponent.getSiblings(AdventureComponent.java:57) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at net.minecraft.network.chat.Component.tryCollapseToString(Component.java:67) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at net.minecraft.network.chat.ComponentSerialization.lambda$createCodec$8(ComponentSerialization.java:178) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at com.mojang.serialization.Encoder$1.encode(Encoder.java:25) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Codec$2.encode(Codec.java:79) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Codec$RecursiveCodec.encode(Codec.java:224) ~[datafixerupper-9.0.19.jar:?]
at com.mojang.serialization.Encoder.encodeStart(Encoder.java:14) ~[datafixerupper-9.0.19.jar:?]
at net.minecraft.network.chat.ComponentSerialization$1.encode(ComponentSerialization.java:57) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at net.minecraft.network.chat.ComponentSerialization$1.encode(ComponentSerialization.java:44) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at net.minecraft.network.codec.StreamCodec$8.encode(StreamCodec.java:152) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at net.minecraft.network.codec.StreamCodec$5.encode(StreamCodec.java:94) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at net.minecraft.network.codec.StreamCodec$5.encode(StreamCodec.java:84) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
at net.minecraft.network.codec.IdDispatchCodec.encode(IdDispatchCodec.java:57) ~[paper-1.21.11.jar:1.21.11-DEV-c5a2736]
... 27 more
Caused by: java.net.URISyntaxException: Illegal character in path at index 89: https://cdn.discordapp.com/attachments/2222644922228254494/1422222453390475315/2025-12-07\_20.00.09.png
at java.base/java.net.URI$Parser.fail(URI.java:3003) ~[?:?]
at java.base/java.net.URI$Parser.checkChars(URI.java:3174) ~[?:?]
at java.base/java.net.URI$Parser.parseHierarchical(URI.java:3256) ~[?:?]
at java.base/java.net.URI$Parser.parse(URI.java:3204) ~[?:?]
at java.base/java.net.URI.<init>(URI.java:649) ~[?:?]
at java.base/java.net.URI.create(URI.java:934) ~[?:?]
... 87 more
```
code:
```java
component.clickEvent(ClickEvent.openUrl("https://cdn.discordapp.com/attachments/2222644922228254494/1422222453390475315/2025-12-07\_20.00.09.png"));
```
seems like bad behaviour, the code doesn't throw until packet tries to be serialized
关闭于 2026-05-11 1 条评论