From 747b72e4f6872bf86bb3da0b24fd0299dedce879 Mon Sep 17 00:00:00 2001 From: Taskeren Date: Thu, 13 Feb 2025 10:15:52 +0800 Subject: [PATCH 1/4] add a callback for RecipeMap that called when a recipe is added --- .../gregtech/api/recipe/RecipeMapBackend.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/gregtech/api/recipe/RecipeMapBackend.java b/src/main/java/gregtech/api/recipe/RecipeMapBackend.java index 8c23e2bfb9a..bc28256afb7 100644 --- a/src/main/java/gregtech/api/recipe/RecipeMapBackend.java +++ b/src/main/java/gregtech/api/recipe/RecipeMapBackend.java @@ -14,6 +14,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -75,6 +76,14 @@ public class RecipeMapBackend { */ protected final RecipeMapBackendProperties properties; + /** + * Called when a recipe is added. + * + * @see #watchRecipeAdded(Consumer) + */ + @Nullable + private Consumer recipeAddedCallback; + public RecipeMapBackend(RecipeMapBackendPropertiesBuilder propertiesBuilder) { this.properties = propertiesBuilder.build(); GregTechAPI.itemStackMultiMaps.add(itemIndex); @@ -137,6 +146,9 @@ public GTRecipe compileRecipe(GTRecipe recipe) { } recipesByCategory.computeIfAbsent(recipe.getRecipeCategory(), v -> new ArrayList<>()) .add(recipe); + if(recipeAddedCallback != null) { + recipeAddedCallback.accept(recipe); + } for (FluidStack fluid : recipe.mFluidInputs) { if (fluid == null) continue; fluidIndex.put( @@ -306,6 +318,18 @@ public boolean containsInput(Fluid fluid) { return fluidIndex.containsKey(fluid.getName()); } + /** + * Calls the given callback when a recipe is added. + * + * @param callback the callback + */ + public void watchRecipeAdded(Consumer callback) { + Consumer current = this.recipeAddedCallback; + this.recipeAddedCallback = current != null + ? current.andThen(callback) + : callback; + } + // region find recipe /** From 11bbdbe9c744625b5f0e328c0634946a0cc26d90 Mon Sep 17 00:00:00 2001 From: Taskeren Date: Thu, 13 Feb 2025 10:41:22 +0800 Subject: [PATCH 2/4] add a callback for RecipeMap that called when a GTRecipeBuilder is added --- .../gregtech/api/recipe/RecipeMapBackend.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/main/java/gregtech/api/recipe/RecipeMapBackend.java b/src/main/java/gregtech/api/recipe/RecipeMapBackend.java index bc28256afb7..ca210fdc711 100644 --- a/src/main/java/gregtech/api/recipe/RecipeMapBackend.java +++ b/src/main/java/gregtech/api/recipe/RecipeMapBackend.java @@ -84,6 +84,14 @@ public class RecipeMapBackend { @Nullable private Consumer recipeAddedCallback; + /** + * Called when a {@link GTRecipeBuilder} is added. + * + * @see #watchRecipeBuilderAdded(Consumer) + */ + @Nullable + private Consumer recipeBuilderAddedCallback; + public RecipeMapBackend(RecipeMapBackendPropertiesBuilder propertiesBuilder) { this.properties = propertiesBuilder.build(); GregTechAPI.itemStackMultiMaps.add(itemIndex); @@ -183,6 +191,9 @@ protected GTRecipe addToItemMap(GTRecipe recipe) { * Builds recipe from supplied recipe builder and adds it. */ protected Collection doAdd(GTRecipeBuilder builder) { + if(recipeBuilderAddedCallback != null) { + recipeBuilderAddedCallback.accept(builder); + } Iterable recipes = properties.recipeEmitter.apply(builder); Collection ret = new ArrayList<>(); for (GTRecipe recipe : recipes) { @@ -330,6 +341,18 @@ public void watchRecipeAdded(Consumer callback) { : callback; } + /** + * Calls the given callback when a {@link GTRecipeBuilder} is added. + * + * @param callback the callback + */ + public void watchRecipeBuilderAdded(Consumer callback) { + Consumer current = this.recipeBuilderAddedCallback; + this.recipeBuilderAddedCallback = current != null + ? current.andThen(callback) + : callback; + } + // region find recipe /** From 6a26350bd2880699a098aa04f40ad956a9fd065e Mon Sep 17 00:00:00 2001 From: Taskeren Date: Thu, 13 Feb 2025 10:41:43 +0800 Subject: [PATCH 3/4] widen access modifier --- src/main/java/gregtech/api/recipe/RecipeMapBackend.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/gregtech/api/recipe/RecipeMapBackend.java b/src/main/java/gregtech/api/recipe/RecipeMapBackend.java index ca210fdc711..a986f3e7032 100644 --- a/src/main/java/gregtech/api/recipe/RecipeMapBackend.java +++ b/src/main/java/gregtech/api/recipe/RecipeMapBackend.java @@ -82,7 +82,7 @@ public class RecipeMapBackend { * @see #watchRecipeAdded(Consumer) */ @Nullable - private Consumer recipeAddedCallback; + protected Consumer recipeAddedCallback; /** * Called when a {@link GTRecipeBuilder} is added. @@ -90,7 +90,7 @@ public class RecipeMapBackend { * @see #watchRecipeBuilderAdded(Consumer) */ @Nullable - private Consumer recipeBuilderAddedCallback; + protected Consumer recipeBuilderAddedCallback; public RecipeMapBackend(RecipeMapBackendPropertiesBuilder propertiesBuilder) { this.properties = propertiesBuilder.build(); From 07999b6f54c913a578d190dfff118388ed98ef61 Mon Sep 17 00:00:00 2001 From: Taskeren Date: Thu, 13 Feb 2025 11:03:31 +0800 Subject: [PATCH 4/4] spotlessApply --- .../java/gregtech/api/recipe/RecipeMapBackend.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/java/gregtech/api/recipe/RecipeMapBackend.java b/src/main/java/gregtech/api/recipe/RecipeMapBackend.java index a986f3e7032..1cfa99673a5 100644 --- a/src/main/java/gregtech/api/recipe/RecipeMapBackend.java +++ b/src/main/java/gregtech/api/recipe/RecipeMapBackend.java @@ -154,7 +154,7 @@ public GTRecipe compileRecipe(GTRecipe recipe) { } recipesByCategory.computeIfAbsent(recipe.getRecipeCategory(), v -> new ArrayList<>()) .add(recipe); - if(recipeAddedCallback != null) { + if (recipeAddedCallback != null) { recipeAddedCallback.accept(recipe); } for (FluidStack fluid : recipe.mFluidInputs) { @@ -191,7 +191,7 @@ protected GTRecipe addToItemMap(GTRecipe recipe) { * Builds recipe from supplied recipe builder and adds it. */ protected Collection doAdd(GTRecipeBuilder builder) { - if(recipeBuilderAddedCallback != null) { + if (recipeBuilderAddedCallback != null) { recipeBuilderAddedCallback.accept(builder); } Iterable recipes = properties.recipeEmitter.apply(builder); @@ -336,9 +336,7 @@ public boolean containsInput(Fluid fluid) { */ public void watchRecipeAdded(Consumer callback) { Consumer current = this.recipeAddedCallback; - this.recipeAddedCallback = current != null - ? current.andThen(callback) - : callback; + this.recipeAddedCallback = current != null ? current.andThen(callback) : callback; } /** @@ -348,9 +346,7 @@ public void watchRecipeAdded(Consumer callback) { */ public void watchRecipeBuilderAdded(Consumer callback) { Consumer current = this.recipeBuilderAddedCallback; - this.recipeBuilderAddedCallback = current != null - ? current.andThen(callback) - : callback; + this.recipeBuilderAddedCallback = current != null ? current.andThen(callback) : callback; } // region find recipe