diff --git a/patches/server/Fix-removing-recipes-from-RecipeIterator.patch b/patches/server/Fix-removing-recipes-from-RecipeIterator.patch new file mode 100644 index 0000000000..1254139d85 --- /dev/null +++ b/patches/server/Fix-removing-recipes-from-RecipeIterator.patch @@ -0,0 +1,41 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic +Date: Sat, 15 Jun 2024 18:50:18 +0100 +Subject: [PATCH] Fix removing recipes from RecipeIterator + +== AT == +public net.minecraft.world.item.crafting.RecipeManager byName + +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java b/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java +@@ -0,0 +0,0 @@ import org.bukkit.inventory.Recipe; + + public class RecipeIterator implements Iterator { + private final Iterator, RecipeHolder>> recipes; ++ private Recipe currentRecipe; // Paper - fix removing recipes from RecipeIterator + + public RecipeIterator() { + this.recipes = MinecraftServer.getServer().getRecipeManager().byType.entries().iterator(); +@@ -0,0 +0,0 @@ public class RecipeIterator implements Iterator { + + @Override + public Recipe next() { +- return this.recipes.next().getValue().toBukkitRecipe(); ++ // Paper start - fix removing recipes from RecipeIterator ++ this.currentRecipe = this.recipes.next().getValue().toBukkitRecipe(); ++ return this.currentRecipe; ++ // Paper end - fix removing recipes from RecipeIterator + } + + @Override + public void remove() { ++ // Paper start - fix removing recipes from RecipeIterator ++ if (this.currentRecipe instanceof org.bukkit.Keyed keyed) { ++ MinecraftServer.getServer().getRecipeManager().byName.remove(org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(keyed.getKey())); ++ } ++ // Paper end - fix removing recipes from RecipeIterator + this.recipes.remove(); + } + }