diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java index 4e0f7564f0..c0433e054e 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java @@ -9,6 +9,7 @@ import org.bukkit.inventory.Recipe; public class RecipeIterator implements Iterator<Recipe> { private final Iterator<Map.Entry<RecipeType<?>, RecipeHolder<?>>> recipes; + private RecipeHolder<?> currentRecipe; // Paper - fix removing recipes from RecipeIterator public RecipeIterator() { this.recipes = MinecraftServer.getServer().getRecipeManager().recipes.byType.entries().iterator(); @@ -21,11 +22,15 @@ public class RecipeIterator implements Iterator<Recipe> { @Override public Recipe next() { - return this.recipes.next().getValue().toBukkitRecipe(); + // Paper start - fix removing recipes from RecipeIterator + this.currentRecipe = this.recipes.next().getValue(); + return this.currentRecipe.toBukkitRecipe(); + // Paper end - fix removing recipes from RecipeIterator } @Override public void remove() { + MinecraftServer.getServer().getRecipeManager().recipes.byKey.remove(this.currentRecipe.id()); // Paper - fix removing recipes from RecipeIterator this.recipes.remove(); } }