Possible incompatibility with More Mekanism Processing when Ad Astra is not installed on a dedicated server
Bomb787 opened this issue ยท 5 comments
I was setting up a test server for a modpack that I've been making for some friends and had some issues connecting to it. I did a little bit of testing and it seems like the mod doesn't like it when Ad Astra is missing as it will complain about an empty ItemStack after disconnecting me.
This might be more of an issue with Mantle itself but I'm not 100% confident.
Mod List:
- Mantle-1.20.1-1.11.44
- Mekanism-1.20.1-10.4.15.75
- MoreMekanismProcessing-1.20.1-4.2
- TCIntegrations-1.20.1-2.0.25.4
- TConstruct-1.20.1-3.9.2.37
Steps to Recreate:
- Install the above mods on a dedicated server
- Try to connect to said server with the same mods installed on the client
Relevant Log:
[16Mar2025 03:11:48.824] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Bomb787 joined the game` [16Mar2025 03:11:48.831] [Netty Server IO #2/ERROR] [Mantle/]: TypeAware: Error writing recipe tcintegrations:smeltery/casting/metal/ostrum/block of class ItemCastingRecipe and type tconstruct:casting_basin to packet io.netty.handler.codec.EncoderException: ItemStack cannot be empty at slimeknights.mantle.data.loadable.common.ItemStackLoadable.lambda$static$0(ItemStackLoadable.java:34) ~[Mantle-1.20.1-1.11.44.jar%23105!/:1.20.1-1.11.44] at slimeknights.mantle.data.loadable.mapping.MappedLoadable.encode(MappedLoadable.java:61) ~[Mantle-1.20.1-1.11.44.jar%23105!/:1.20.1-1.11.44] at slimeknights.mantle.recipe.helper.ItemOutput$Loadable.encode(ItemOutput.java:328) ~[Mantle-1.20.1-1.11.44.jar%23105!/:1.20.1-1.11.44] at slimeknights.mantle.recipe.helper.ItemOutput$Loadable.encode(ItemOutput.java:251) ~[Mantle-1.20.1-1.11.44.jar%23105!/:1.20.1-1.11.44] at slimeknights.mantle.data.loadable.field.AlwaysPresentRecordField.encode(AlwaysPresentRecordField.java:23) ~[Mantle-1.20.1-1.11.44.jar%23105!/:1.20.1-1.11.44] at slimeknights.mantle.data.loadable.record.RecordLoadable9.encode(RecordLoadable9.java:73) ~[Mantle-1.20.1-1.11.44.jar%23105!/:1.20.1-1.11.44] at slimeknights.mantle.recipe.helper.LoadableRecipeSerializer.toNetworkSafe(LoadableRecipeSerializer.java:77) ~[Mantle-1.20.1-1.11.44.jar%23105!/:1.20.1-1.11.44] at slimeknights.mantle.recipe.helper.LoggingRecipeSerializer.m_6178_(LoggingRecipeSerializer.java:48) ~[Mantle-1.20.1-1.11.44.jar%23105!/:1.20.1-1.11.44] at net.minecraft.network.protocol.game.ClientboundUpdateRecipesPacket.m_179469_(ClientboundUpdateRecipesPacket.java:52) ~[server-1.20.1-20230612.114412-srg.jar%23111!/:?] at net.minecraft.network.FriendlyByteBuf.m_236828_(FriendlyByteBuf.java:221) ~[server-1.20.1-20230612.114412-srg.jar%23111!/:?] at net.minecraft.network.protocol.game.ClientboundUpdateRecipesPacket.m_5779_(ClientboundUpdateRecipesPacket.java:27) ~[server-1.20.1-20230612.114412-srg.jar%23111!/:?] at net.minecraftforge.network.filters.VanillaPacketSplitter.appendPackets(VanillaPacketSplitter.java:66) ~[forge-1.20.1-47.3.22-universal.jar%23116!/:?] at net.minecraftforge.network.filters.ForgeConnectionNetworkFilter.splitPacket(ForgeConnectionNetworkFilter.java:62) ~[forge-1.20.1-47.3.22-universal.jar%23116!/:?] at net.minecraftforge.network.filters.VanillaPacketFilter.encode(VanillaPacketFilter.java:60) ~[forge-1.20.1-47.3.22-universal.jar%23116!/:?] at net.minecraftforge.network.filters.VanillaPacketFilter.encode(VanillaPacketFilter.java:23) ~[forge-1.20.1-47.3.22-universal.jar%23116!/:?] at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:90) ~[netty-codec-4.1.82.Final.jar%2381!/:4.1.82.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-transport-4.1.82.Final.jar%2385!/:4.1.82.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:764) ~[netty-transport-4.1.82.Final.jar%2385!/:4.1.82.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:790) ~[netty-transport-4.1.82.Final.jar%2385!/:4.1.82.Final] at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:758) ~[netty-transport-4.1.82.Final.jar%2385!/:4.1.82.Final] at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:808) ~[netty-transport-4.1.82.Final.jar%2385!/:4.1.82.Final] at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1025) ~[netty-transport-4.1.82.Final.jar%2385!/:4.1.82.Final] at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:306) ~[netty-transport-4.1.82.Final.jar%2385!/:4.1.82.Final] at net.minecraft.network.Connection.m_243087_(Connection.java:224) ~[server-1.20.1-20230612.114412-srg.jar%23111!/:?] at net.minecraft.network.Connection.lambda$sendPacket$8(Connection.java:213) ~[server-1.20.1-20230612.114412-srg.jar%23111!/:?] at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common-4.1.82.Final.jar%2382!/:4.1.82.Final] at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[netty-common-4.1.82.Final.jar%2382!/:4.1.82.Final] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[netty-common-4.1.82.Final.jar%2382!/:4.1.82.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) ~[netty-transport-4.1.82.Final.jar%2385!/:4.1.82.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.82.Final.jar%2382!/:4.1.82.Final] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.82.Final.jar%2382!/:4.1.82.Final] at java.lang.Thread.run(Unknown Source) ~[?:?] [16Mar2025 03:11:48.864] [Server thread/INFO] [net.minecraft.server.network.ServerGamePacketListenerImpl/]: Bomb787 lost connection: Internal Exception: io.netty.handler.codec.EncoderException: ItemStack cannot be empty
This is a bug in More Mekanism Processing, but I'm going to put a workaround in place in case anyone else does something like this in the future :(
I'm having trouble working around this issue. They are adding tags for items that don't exist, and the conditional loader for the recipe just checks if the tag exists for the item ... assuming that if there is a tag, the item exists. I'm not sure how Tinkers is working around this, I'll probably need to ask KnighMiner for feedback. Still working on it though.