Attempting to dye a shulker box in either crafting grid shows proper recipe, but unable to retrieve final crafted item. Shift clicking the dyed shulker into the inventory shows it moving there, but when you close and reopen the inventory the dye and plain shulker box are back and the dyed one is gone.
[01:55:51] [Server thread/ERROR]: Failed to handle packet net.minecraft.network.protocol.game.PacketPlayInWindowClick@137ee623, suppressing error java.lang.IllegalArgumentException: Recipe must have non-AIR result. at com.google.common.base.Preconditions.checkArgument(Preconditions.java:143) ~[guava-32.1.2-jre.jar:?] at org.bukkit.inventory.CraftingRecipe.<init>(CraftingRecipe.java:21) ~[spigot-api-1.21-R0.1-SNAPSHOT.jar:?] at org.bukkit.craftbukkit.v1_21_R1.inventory.CraftComplexRecipe.<init>(CraftComplexRecipe.java:17) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.world.item.crafting.IRecipeComplex.toBukkitRecipe(IRecipeComplex.java:43) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.world.item.crafting.RecipeHolder.toBukkitRecipe(RecipeHolder.java:16) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at org.bukkit.craftbukkit.v1_21_R1.inventory.CraftInventoryCrafting.getRecipe(CraftInventoryCrafting.java:120) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:2740) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.network.protocol.game.PacketPlayInWindowClick.a(SourceFile:71) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.network.protocol.game.PacketPlayInWindowClick.a(SourceFile:14) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.network.protocol.PlayerConnectionUtils.lambda$ensureRunningOnSameThread$0(PlayerConnectionUtils.java:35) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.server.TickTask.run(SourceFile:18) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.util.thread.IAsyncTaskHandler.d(SourceFile:162) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(SourceFile:23) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1270) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:203) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.util.thread.IAsyncTaskHandler.B(SourceFile:136) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.server.MinecraftServer.bv(MinecraftServer.java:1249) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.server.MinecraftServer.B(MinecraftServer.java:1242) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.util.thread.IAsyncTaskHandler.bB(SourceFile:121) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.server.MinecraftServer.v_(MinecraftServer.java:1213) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.server.MinecraftServer.y(MinecraftServer.java:1078) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:318) ~[spigot-1.21-R0.1-SNAPSHOT.jar:4285-Spigot-fb8fb72-00fc9fb] at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]
Was running client with no mods/datapacks and the server has no plugins or datapacks active during this test.