--- a/net/minecraft/server/RecipeItemStack.java
+++ b/net/minecraft/server/RecipeItemStack.java
@@ -28,6 +28,7 @@
     private final RecipeItemStack.Provider[] c;
     public ItemStack[] choices;
     private IntList e;
+    public boolean exact; // CraftBukkit
 
     public RecipeItemStack(Stream<? extends RecipeItemStack.Provider> stream) {
         this.c = (RecipeItemStack.Provider[]) stream.filter(RecipeItemStack.b).toArray((i) -> {
@@ -59,6 +60,15 @@
             for (int j = 0; j < i; ++j) {
                 ItemStack itemstack1 = aitemstack[j];
 
+                // CraftBukkit start
+                if (exact) {
+                    if (itemstack1.getItem() == itemstack.getItem() && ItemStack.equals(itemstack, itemstack1)) {
+                        return true;
+                    }
+
+                    continue;
+                }
+                // CraftBukkit end
                 if (itemstack1.getItem() == itemstack.getItem()) {
                     return true;
                 }