diff --git a/patches/server/Fix-issues-with-Recipe-API.patch b/patches/server/Fix-issues-with-Recipe-API.patch
index 4bdd767d8f..05c84a17d2 100644
--- a/patches/server/Fix-issues-with-Recipe-API.patch
+++ b/patches/server/Fix-issues-with-Recipe-API.patch
@@ -21,14 +21,26 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java b/s
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java
 +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java
+@@ -0,0 +0,0 @@ public interface CraftRecipe extends Recipe {
+     void addToCraftingManager();
+ 
+     default Optional<Ingredient> toNMSOptional(RecipeChoice bukkit, boolean requireNotEmpty) {
+-        return (bukkit == null) ? Optional.empty() : Optional.of(this.toNMS(bukkit, requireNotEmpty));
++        return (bukkit == null || bukkit == RecipeChoice.empty()) ? Optional.empty() : Optional.of(this.toNMS(bukkit, requireNotEmpty)); // Paper - support "empty" choices
+     }
+ 
+     default Ingredient toNMS(RecipeChoice bukkit, boolean requireNotEmpty) {
 @@ -0,0 +0,0 @@ public interface CraftRecipe extends Recipe {
              stack = Ingredient.of(((RecipeChoice.MaterialChoice) bukkit).getChoices().stream().map((mat) -> CraftItemType.bukkitToMinecraft(mat)));
          } else if (bukkit instanceof RecipeChoice.ExactChoice) {
              stack = Ingredient.ofStacks(((RecipeChoice.ExactChoice) bukkit).getChoices().stream().map((mat) -> CraftItemStack.asNMSCopy(mat)).toList());
-+            // Paper start - support "empty" choices
++            // Paper start - support "empty" choices - legacy method that spigot might incorrectly call
++            // Their impl of Ingredient.of() will error, ingredients need at least one entry.
++            // Callers running into this exception may have passed an incorrect empty() recipe choice to a non-empty slot or
++            // spigot calls this method in a wrong place.
 +        } else if (bukkit == RecipeChoice.empty()) {
-+            stack = Ingredient.of();
-+            // Paper end
++            throw new IllegalArgumentException("This ingredient cannot be empty");
++            // Paper end - support "empty" choices
          } else {
              throw new IllegalArgumentException("Unknown recipe stack instance " + bukkit);
          }