Crafting Recipes don't work with custom Items
Expected behavior
Crafting recipes work as they did before with custom items (custom name, custom persistent data, custom model etc.)
Observed/Actual behavior
Recipes are somewhat broken and are not recognized inside crafting grid or even don't show properly in recipe book.
Steps/models to reproduce
Create custom ItemStack (with special name, custom model data, some persistent tags etc.) and add it as exact ingriedient into some new recipe (ShjapelessRecipe in my case)
Plugin and Datapack List
[09:38:04 INFO]: Server Plugins (14): [09:38:04 INFO]: Bukkit Plugins: [09:38:04 INFO]: - ICraft2.0-Special, *JoinFullServer, Multiverse-Core, Multiverse-Inventories, Multiverse-Portals, NoChatReports, *PermissionsEx, PexTabCompleter, ProtocolLib, *SimplePrefix-Reloaded [09:38:04 INFO]: TreasureChestX, *VoidWorld, WorldEdit, WorldGuard
[09:38:21 INFO]: There are 3 data pack(s) enabled: [vanilla (built-in)], [file/bukkit (world)], [paper (built-in)] [09:38:21 INFO]: There are no more data packs available
Paper version
[09:41:18 INFO]: Checking version, please wait... [09:41:18 INFO]: This server is running Paper version 1.21-37-master@dd49fba (2024-06-24T02:08:49Z) (Implementing API version 1.21-R0.1-SNAPSHOT) You are running the latest version Previous version: 1.21-28-812701d (MC: 1.21)
Other
In my plugin I found it on those 2 recipes ` ShapelessRecipe recipe2 = new ShapelessRecipe(new NamespacedKey(root, "teleportTablet"), item.clone()); // item is special custom item I'm creating in diffrent place of my class recipe2.addIngredient(ItemLibrary.getInstance().getItem(ItemList.ALCHEMICAL_POWDER)[0]); // This extract another custom item to add it as ingriedient recipe2.addIngredient(Material.BRICK); root.getServer().addRecipe(recipe2);
ShapelessRecipe recipe3 = new ShapelessRecipe(new NamespacedKey(root, "calibrateTablet"), item.clone()); //second recipe, I recognize it inside listener later and change persistent tags to encode location
recipe3.addIngredient(Material.COMPASS);
recipe3.addIngredient(item.clone());
root.getServer().addRecipe(recipe3);`
In game in crafting inventory it looks like that:
And this is how it work on my older version: