Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exception on player join io.netty.handler.codec.EncoderException: Failed to encode packet 'clientbound/minecraft:update_recipes' #233

Closed
FunixG opened this issue Jun 8, 2024 · 3 comments
Labels
type: bug Something doesn't work as it was intended to.

Comments

@FunixG
Copy link

FunixG commented Jun 8, 2024

Expected behavior

When I try to log in my Minecraft folia server, I have an exception thrown about some crafts I think. I am not using NMS, only using folia-api

Observed/Actual behavior

The exception from the console

pacifista-survie            | io.netty.handler.codec.EncoderException: Failed to encode packet 'clientbound/minecraft:update_recipes'
pacifista-survie            | 	at net.minecraft.network.codec.IdDispatchCodec.encode(IdDispatchCodec.java:53) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.network.codec.IdDispatchCodec.encode(IdDispatchCodec.java:20) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:26) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-hub               | [09:08:16 INFO]: UUID of player FunixGaming is 24732545-e33a-40b2-8db6-4129ba9bd49e
pacifista-survie            | 	at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:12) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ~[netty-codec-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:881) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:863) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:968) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:113) ~[netty-codec-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:881) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:863) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:968) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.ChannelOutboundHandlerAdapter.write(ChannelOutboundHandlerAdapter.java:113) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at net.minecraft.network.Connection$2.write(Connection.java:806) ~[?:?]
pacifista-survie            | 	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:881) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:940) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:966) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:934) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:984) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1025) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:306) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at net.minecraft.network.Connection.doSendPacket(Connection.java:531) ~[?:?]
pacifista-survie            | 	at net.minecraft.network.Connection.lambda$sendPacket$13(Connection.java:516) ~[?:?]
pacifista-survie            | 	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[netty-common-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[netty-common-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:413) ~[netty-transport-classes-epoll-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.97.Final.jar:4.1.97.Final]
pacifista-survie            | 	at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
pacifista-survie            | Caused by: io.netty.handler.codec.EncoderException: Empty ItemStack not allowed
pacifista-survie            | 	at net.minecraft.world.item.ItemStack$2.encode(ItemStack.java:214) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.world.item.ItemStack$2.encode(ItemStack.java:201) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.network.codec.ByteBufCodecs$19.encode(ByteBufCodecs.java:413) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.network.codec.ByteBufCodecs$19.encode(ByteBufCodecs.java:395) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.network.codec.StreamCodec$4.encode(StreamCodec.java:72) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.world.item.crafting.ShapedRecipePattern.toNetwork(ShapedRecipePattern.java:167) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.network.codec.StreamCodec$2.encode(StreamCodec.java:38) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.world.item.crafting.ShapedRecipe$Serializer.toNetwork(ShapedRecipe.java:208) ~[?:?]
pacifista-survie            | 	at net.minecraft.network.codec.StreamCodec$1.encode(StreamCodec.java:24) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.network.codec.StreamCodec$6.encode(StreamCodec.java:107) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.network.codec.StreamCodec$8.encode(StreamCodec.java:141) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.network.codec.ByteBufCodecs$19.encode(ByteBufCodecs.java:413) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.network.codec.ByteBufCodecs$19.encode(ByteBufCodecs.java:395) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.network.codec.StreamCodec$7.encode(StreamCodec.java:122) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.network.codec.StreamCodec$5.encode(StreamCodec.java:88) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	at net.minecraft.network.codec.StreamCodec$5.encode(StreamCodec.java:78) ~[folia-1.20.6.jar:1.20.6-DEV-36e5e83]
pacifista-survie            | 	... 32 more

Steps/models to reproduce

Here is for example a custom craft from my plugin

package fr.pacifista.plugins.jars.survie.minecraft.items;

import fr.pacifista.plugins.modules.core.PacifistaException;
import fr.pacifista.plugins.modules.core.spigot.MinecraftPlugin;
import fr.pacifista.plugins.modules.core.spigot.items.CustomItemBuilder;
import fr.pacifista.plugins.modules.core.spigot.items.custom.CustomItem;
import lombok.NonNull;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextDecoration;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.inventory.ShapedRecipe;

import java.util.UUID;

public class Elementium extends CustomItem {

    private static final UUID itemId = UUID.fromString("dea7808b-2ec1-4082-815f-effc9bcd29f6");
    private static final NamespacedKey key = new NamespacedKey(CustomItems.NAMESPACED_KEY_PACIFISTA_ITEMS, "elementium");

    protected Elementium(@NonNull final MinecraftPlugin minecraftPlugin) throws PacifistaException {
        super(generateItem(), minecraftPlugin, itemId);
    }

    private static CustomItemBuilder generateItem() throws PacifistaException {
        final CustomItemBuilder builder = new CustomItemBuilder(Material.ENDER_EYE, 1);

        builder.setName(Component.text("Elementuim", NamedTextColor.GOLD, TextDecoration.BOLD));
        builder.addToLore(
                Component.text("Cet item est utilisé dans les crafts de Pacifista", NamedTextColor.GRAY)
        );
        return builder;
    }

    @Override
    protected ShapedRecipe getRecipe(final MinecraftPlugin minecraftPlugin) {
        ShapedRecipe recipe = new ShapedRecipe(key, this.getItemStack());
        recipe.shape(
                "ADA",
                "BEB",
                "AGA");
        recipe.setIngredient('B', Material.BLAZE_POWDER);
        recipe.setIngredient('E', Material.ENDER_EYE);
        recipe.setIngredient('D', Material.DIAMOND_BLOCK);
        recipe.setIngredient('A', Material.AIR);
        recipe.setIngredient('G', Material.GOLD_INGOT);
        return recipe;
    }
}

Plugin and Datapack List

Only custom plugins

Folia version

This server is running Folia version 1.20.6-DEV-master@36e5e83 (2024-06-08T06:01:56Z) (Implementing API version 1.20.6-R0.1-SNAPSHOT)
You are running the latest version

Other

No response

@FunixG FunixG added status: needs triage type: bug Something doesn't work as it was intended to. labels Jun 8, 2024
@FunixG
Copy link
Author

FunixG commented Jun 8, 2024

For instance, that code was working on folia 1.20.4

@Warriorrrr
Copy link
Member

Air is not a valid recipe ingredient anymore, see PaperMC/Paper#10748. Try using a space instead as a possible workaround

@Warriorrrr Warriorrrr closed this as not planned Won't fix, can't repro, duplicate, stale Jun 8, 2024
@FunixG
Copy link
Author

FunixG commented Jun 8, 2024

Thanks a lot ❤️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: bug Something doesn't work as it was intended to.
Projects
None yet
Development

No branches or pull requests

2 participants