Fix removing recipes from RecipeIterator

== AT ==
public net.minecraft.world.item.crafting.RecipeMap byKey
This commit is contained in:
Jake
2024-06-15 18:50:18 +01:00
parent 826f299f4c
commit d7b5168a81

View File

@@ -9,6 +9,7 @@ import org.bukkit.inventory.Recipe;
public class RecipeIterator implements Iterator<Recipe> { public class RecipeIterator implements Iterator<Recipe> {
private final Iterator<Map.Entry<RecipeType<?>, RecipeHolder<?>>> recipes; private final Iterator<Map.Entry<RecipeType<?>, RecipeHolder<?>>> recipes;
private RecipeHolder<?> currentRecipe; // Paper - fix removing recipes from RecipeIterator
public RecipeIterator() { public RecipeIterator() {
this.recipes = MinecraftServer.getServer().getRecipeManager().recipes.byType.entries().iterator(); this.recipes = MinecraftServer.getServer().getRecipeManager().recipes.byType.entries().iterator();
@@ -21,11 +22,15 @@ public class RecipeIterator implements Iterator<Recipe> {
@Override @Override
public Recipe next() { 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 @Override
public void remove() { public void remove() {
MinecraftServer.getServer().getRecipeManager().recipes.byKey.remove(this.currentRecipe.id()); // Paper - fix removing recipes from RecipeIterator
this.recipes.remove(); this.recipes.remove();
} }
} }