Uploaded image for project: 'Spigot'
  1. Spigot
  2. SPIGOT-7621

Using empty strings in an ItemStack's lore disconnects the client

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • None
    • 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); 

            Unassigned Unassigned
            2008Choco Parker Hawke
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: