PaperMC / PaperMC/Folia

1.21.4 discovey recipe invalid packet

Open
#303 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

status: needs triage
Dominant language
Shell
Stars
4.4k
Forks
621
PR merge metrics
No merged PRs in 30d

Description

Stack trace
[04:57:02 ERROR]: Error sending packet clientbound/minecraft:recipe_book_add (skippable? false)
io.netty.handler.codec.EncoderException: Failed to encode packet 'clientbound/minecraft:recipe_book_add'
        at net.minecraft.network.codec.IdDispatchCodec.encode(IdDispatchCodec.java:53) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.IdDispatchCodec.encode(IdDispatchCodec.java:20) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:26) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:12) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ~[netty-codec-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:893) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:113) ~[netty-codec-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:893) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.ChannelOutboundHandlerAdapter.write(ChannelOutboundHandlerAdapter.java:113) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at net.minecraft.network.Connection$2.write(Connection.java:819) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:893) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.ChannelDuplexHandler.write(ChannelDuplexHandler.java:115) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at ItemJoin.jar/me.RockinChaos.itemjoin.core.utils.protocol.TinyProtocol$PacketInterceptor.write(TinyProtocol.java:480) ~[ItemJoin.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:891) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:956) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:982) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:950) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:1000) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:974) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:305) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
        at net.minecraft.network.Connection.doSendPacket(Connection.java:540) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.Connection.lambda$sendPacket$13(Connection.java:525) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) ~[netty-common-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166) ~[netty-common-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) ~[netty-common-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:405) ~[netty-transport-classes-epoll-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.115.Final.jar:4.1.115.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.115.Final.jar:4.1.115.Final]
        at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: java.lang.RuntimeException: Error encoding component minecraft:equippable
        at net.minecraft.core.component.DataComponentPatch$1.encodeComponent(DataComponentPatch.java:151) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.core.component.DataComponentPatch$1.encode(DataComponentPatch.java:128) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.core.component.DataComponentPatch$1.encode(DataComponentPatch.java:66) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.world.item.ItemStack$1.encode(ItemStack.java:191) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.world.item.ItemStack$1.encode(ItemStack.java:155) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.world.item.ItemStack$2.encode(ItemStack.java:214) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.world.item.ItemStack$2.encode(ItemStack.java:199) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$7.encode(StreamCodec.java:124) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$6.encode(StreamCodec.java:109) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$11.encode(StreamCodec.java:235) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$6.encode(StreamCodec.java:109) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$11.encode(StreamCodec.java:233) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$8.encode(StreamCodec.java:142) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.ByteBufCodecs$21.encode(ByteBufCodecs.java:441) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.ByteBufCodecs$21.encode(ByteBufCodecs.java:423) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$8.encode(StreamCodec.java:142) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$5.encode(StreamCodec.java:90) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$5.encode(StreamCodec.java:80) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        ... 38 more
Caused by: java.lang.NullPointerException: Cannot invoke "java.util.Optional.isPresent()" because "optional" is null
        at net.minecraft.network.codec.ByteBufCodecs$20.encode(ByteBufCodecs.java:389) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.ByteBufCodecs$20.encode(ByteBufCodecs.java:381) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$14.encode(StreamCodec.java:360) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.core.component.DataComponentPatch$1.encodeComponent(DataComponentPatch.java:149) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.core.component.DataComponentPatch$1.encode(DataComponentPatch.java:128) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.core.component.DataComponentPatch$1.encode(DataComponentPatch.java:66) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.world.item.ItemStack$1.encode(ItemStack.java:191) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.world.item.ItemStack$1.encode(ItemStack.java:155) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.world.item.ItemStack$2.encode(ItemStack.java:214) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.world.item.ItemStack$2.encode(ItemStack.java:199) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$7.encode(StreamCodec.java:124) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$6.encode(StreamCodec.java:109) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$11.encode(StreamCodec.java:235) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$6.encode(StreamCodec.java:109) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$11.encode(StreamCodec.java:233) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$8.encode(StreamCodec.java:142) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.ByteBufCodecs$21.encode(ByteBufCodecs.java:441) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.ByteBufCodecs$21.encode(ByteBufCodecs.java:423) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$8.encode(StreamCodec.java:142) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$5.encode(StreamCodec.java:90) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        at net.minecraft.network.codec.StreamCodec$5.encode(StreamCodec.java:80) ~[folia-1.21.4.jar:1.21.4-DEV-d4bc338]
        ... 38 more
Plugin and Datapack List
[04:59:39 INFO]: Server Plugins (70):
[04:59:39 INFO]: Paper Plugins:
[04:59:39 INFO]:  - help, MvndiAchievements, MvndiBattle, MvndiCombat, MvndiCore, MvndiCrafting, MvndiEquipment, MvndiHolders, MvndiHunters, MvndiMisc
[04:59:39 INFO]:  MvndiMMO, MvndiMounts, MvndiPlayers, MvndiRPG, MvndiStats, MvndiTowny, MvndiUI, TownyWaypoints
[04:59:39 INFO]: Bukkit Plugins:
[04:59:39 INFO]:  - Backuper, BetterGUI, BetterHud, BetterRTP, BigDoors, BreweryX, BukkitGreentext, ChatFilter, ChestShop, ChestShop-towny
[04:59:39 INFO]:  Chunky, ChunkyBorder, CommandBlocker, DarkerNights, FarmControl, FlagsH, FreedomChat, HeadDrop, HexNicks, iConomyUnlocked
[04:59:39 INFO]:  InventoryRollbackPlus, InvSeePlusPlus, ItemJoin, LiteBans, LuckPerms, MapTowny, MinecraftSSH, MvndiBanHooks, MvndiChisel, MvndiGUI
[04:59:39 INFO]:  MvndiMenus, MvndiMobs, MvndiSiege, OPItemsRemover, packetevents, PlaceholderAPI, PotionEffectsRemover, SiegeWar, SmoothTimber, spark
[04:59:39 INFO]:  squaremap, SuperVanish, TAB, Towny, TownyBlockGlitch, TownyChat, TownyMenus, TownyResources, UltimateAdvancementAPI, Vault
[04:59:39 INFO]:  VoidWorldGenerator, ZAutoBroadcast

player gets kicked and cant join server

no datapacks

Actions to reproduce (if known)

this is the method in our plugin that causes out (if the discover recipes line is commented out then players can join)

    @org.bukkit.event.EventHandler(priority = EventPriority.LOW)
    public void onPlayerJoin(PlayerJoinEvent e) {
        RecipeManager.setCraftMenuView(e.getPlayer(), CraftMenuView.NONE);
        e.getPlayer().discoverRecipes(recipe_manager.getVanillaRecipes());
    }
Folia version

This server is running Folia version 1.21.4-DEV-dev/1.21.4@d4bc338 (2024-12-05T04:54:20Z) (Implementing API version 1.21.4-R0.1-SNAPSHOT)

Other

it doesnt happen on bb4fb5334e7f7231c86c6ef9951d3eb24db9e6ea

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the stack trace for clientbound/minecraft:recipe_book_add and the minecraft:equippable component, then investigate which listed plugin or datapack produces the invalid item data. Reproduce the player kick in the reported Folia 1.21.4 environment; done means the packet encodes successfully and the player can join without the exception.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.