-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Minor
-
None
-
Affects Version/s: None
-
None
-
git-Bukkit-b3229d1
-
Yes
When setting the lore of an ItemStack to include an empty string, the client gets disconnected from the server with the following error in the server console:
[17:54:56] [Netty Server IO #3/ERROR]: Error sending packet clientbound/minecraft:container_set_content io.netty.handler.codec.EncoderException: Failed to encode packet 'clientbound/minecraft:container_set_content' at net.minecraft.network.codec.IdDispatchCodec.a(SourceFile:55) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.network.codec.IdDispatchCodec.encode(SourceFile:14) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.network.PacketEncoder.a(SourceFile:26) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.network.PacketEncoder.encode(SourceFile:12) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ~[netty-codec-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:881) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:863) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:968) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:113) ~[netty-codec-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:881) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:863) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:968) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.ChannelOutboundHandlerAdapter.write(ChannelOutboundHandlerAdapter.java:113) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at net.minecraft.network.NetworkManager$2.write(NetworkManager.java:531) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:881) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:940) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:966) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:934) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:984) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1025) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:306) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at net.minecraft.network.NetworkManager.c(NetworkManager.java:357) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.network.NetworkManager.lambda$12(NetworkManager.java:350) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common-4.1.97.Final.jar:4.1.97.Final] at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[netty-common-4.1.97.Final.jar:4.1.97.Final] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[netty-common-4.1.97.Final.jar:4.1.97.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.97.Final.jar:4.1.97.Final] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.97.Final.jar:4.1.97.Final] at java.base/java.lang.Thread.run(Thread.java:1583) [?:?] Caused by: java.lang.NullPointerException: Cannot invoke "net.minecraft.network.chat.IChatBaseComponent.d()" because "var0" is null at net.minecraft.network.chat.ComponentSerialization.a(SourceFile:229) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at com.mojang.serialization.Encoder$1.encode(Encoder.java:25) ~[datafixerupper-7.0.14.jar:?] at com.mojang.serialization.Codec$2.encode(Codec.java:80) ~[datafixerupper-7.0.14.jar:?] at com.mojang.serialization.Codec$RecursiveCodec.encode(Codec.java:217) ~[datafixerupper-7.0.14.jar:?] at com.mojang.serialization.Encoder.encodeStart(Encoder.java:14) ~[datafixerupper-7.0.14.jar:?] at net.minecraft.network.codec.ByteBufCodecs$6.a(SourceFile:279) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.network.codec.ByteBufCodecs$6.encode(SourceFile:268) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.network.codec.ByteBufCodecs$11.a(SourceFile:378) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.network.codec.ByteBufCodecs$11.encode(SourceFile:363) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.network.codec.StreamCodec$8.encode(SourceFile:81) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.core.component.DataComponentPatch$1.a(DataComponentPatch.java:146) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.core.component.DataComponentPatch$1.a(DataComponentPatch.java:127) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.core.component.DataComponentPatch$1.encode(DataComponentPatch.java:1) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.world.item.ItemStack$1.a(ItemStack.java:188) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.world.item.ItemStack$1.encode(ItemStack.java:1) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.network.codec.ByteBufCodecs$11.a(SourceFile:378) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.network.codec.ByteBufCodecs$11.encode(SourceFile:363) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.network.protocol.game.PacketPlayOutWindowItems.a(SourceFile:41) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.network.codec.StreamCodec$6.encode(SourceFile:42) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.network.codec.StreamCodec$9.a(SourceFile:97) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.network.codec.StreamCodec$9.encode(SourceFile:87) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] at net.minecraft.network.codec.IdDispatchCodec.a(SourceFile:53) ~[craftbukkit-1.20.5-R0.1-SNAPSHOT.jar:git-Bukkit-b3229d1] ... 31 more
This can be replicated with the following snippet:
Inventory inventory = Bukkit.createInventory(null, 27); ItemStack itemStack = new ItemStack(Material.DIAMOND_SWORD); ItemMeta itemMeta = itemStack.getItemMeta(); itemMeta.setLore(Arrays.asList("")); itemStack.setItemMeta(itemMeta); inventory.addItem(itemStack); player.openInventory(inventory);