|
21 | 21 | import com.lance5057.extradelight.ExtraDelightRecipes; |
22 | 22 | import com.llamalad7.mixinextras.injector.ModifyReturnValue; |
23 | 23 | import com.simibubi.create.foundation.recipe.RecipeFinder; |
| 24 | + |
| 25 | +import java.util.Collection; |
| 26 | +import java.util.HashSet; |
24 | 27 | import java.util.List; |
25 | 28 | import java.util.function.Predicate; |
26 | 29 | import java.util.stream.Collectors; |
27 | 30 | import javax.annotation.Nullable; |
| 31 | + |
28 | 32 | import net.minecraft.world.item.crafting.Recipe; |
29 | 33 | import net.minecraft.world.item.crafting.RecipeHolder; |
30 | 34 | import net.minecraft.world.level.Level; |
31 | 35 | import org.spongepowered.asm.mixin.Mixin; |
| 36 | +import org.spongepowered.asm.mixin.Unique; |
32 | 37 | import org.spongepowered.asm.mixin.injection.At; |
33 | 38 | import plus.dragons.createcentralkitchen.config.CCKConfig; |
34 | 39 | import plus.dragons.createcentralkitchen.integration.extradelight.recipe.ExtraDelightRecipeConverters; |
35 | 40 |
|
36 | 41 | @Mixin(RecipeFinder.class) |
37 | 42 | public abstract class RecipeFinderMixin { |
| 43 | + |
| 44 | + @Unique |
| 45 | + @Nullable |
| 46 | + private static Collection<RecipeHolder<? extends Recipe<?>>> create_central_kitchen$CACHED_MIXING_RECIPE; |
| 47 | + |
| 48 | + @Unique |
| 49 | + @Nullable |
| 50 | + private static Collection<RecipeHolder<? extends Recipe<?>>> create_central_kitchen$CACHED_COMPACTING_RECIPE; |
| 51 | + |
38 | 52 | @ModifyReturnValue(method = "get", at = @At(value = "RETURN")) |
39 | 53 | private static List<RecipeHolder<? extends Recipe<?>>> addRecipe(List<RecipeHolder<? extends Recipe<?>>> original, @Nullable Object cacheKey, Level level, Predicate<RecipeHolder<? extends Recipe<?>>> conditions) { |
40 | 54 | if (cacheKey == MechanicalMixerBlockEntityAccessor.getShapelessOrMixingRecipesKey()) { |
41 | | - var recipeManager = level.getRecipeManager(); |
42 | | - if (CCKConfig.recipes().convertMeltingPotRecipesToMixingRecipes.get()) { |
43 | | - var r = recipeManager.getAllRecipesFor(ExtraDelightRecipes.MELTING_POT.get()) |
44 | | - .stream().map(ExtraDelightRecipeConverters.AUTOMATIC_MELTING).filter(conditions).collect(Collectors.toSet()); |
45 | | - original.addAll(r); |
| 55 | + if(create_central_kitchen$CACHED_MIXING_RECIPE == null) { |
| 56 | + var recipeManager = level.getRecipeManager(); |
| 57 | + if (CCKConfig.recipes().convertMeltingPotRecipesToMixingRecipes.get()) { |
| 58 | + create_central_kitchen$CACHED_MIXING_RECIPE = |
| 59 | + recipeManager.getAllRecipesFor(ExtraDelightRecipes.MELTING_POT.get()) |
| 60 | + .stream().map(ExtraDelightRecipeConverters.AUTOMATIC_MELTING).filter(conditions).collect(Collectors.toSet()); |
| 61 | + } |
| 62 | + original.addAll(create_central_kitchen$CACHED_MIXING_RECIPE); |
46 | 63 | } |
47 | 64 | } else if (cacheKey == MechanicalPressBlockEntityAccessor.getCompressingRecipesKey()) { |
48 | 65 | var recipeManager = level.getRecipeManager(); |
49 | | - if (CCKConfig.recipes().convertMortarGrindingRecipesToCompactingRecipes.get()) { |
50 | | - var r = recipeManager.getAllRecipesFor(ExtraDelightRecipes.MORTAR.get()) |
51 | | - .stream().map(ExtraDelightRecipeConverters.AUTOMATIC_GRINDING).filter(conditions).collect(Collectors.toSet()); |
52 | | - original.addAll(r); |
53 | | - } |
54 | | - if (CCKConfig.recipes().convertJuicerRecipesToCompactingRecipes.get()) { |
55 | | - var r = recipeManager.getAllRecipesFor(ExtraDelightRecipes.JUICER.get()) |
56 | | - .stream().map(ExtraDelightRecipeConverters.AUTOMATIC_JUICING).filter(conditions).collect(Collectors.toSet()); |
57 | | - original.addAll(r); |
| 66 | + if(create_central_kitchen$CACHED_COMPACTING_RECIPE == null) { |
| 67 | + create_central_kitchen$CACHED_COMPACTING_RECIPE = new HashSet<>(); |
| 68 | + if (CCKConfig.recipes().convertMortarGrindingRecipesToCompactingRecipes.get()) { |
| 69 | + create_central_kitchen$CACHED_COMPACTING_RECIPE.addAll(recipeManager.getAllRecipesFor(ExtraDelightRecipes.MORTAR.get()) |
| 70 | + .stream().map(ExtraDelightRecipeConverters.AUTOMATIC_GRINDING).filter(conditions).collect(Collectors.toSet())); |
| 71 | + |
| 72 | + } |
| 73 | + if (CCKConfig.recipes().convertJuicerRecipesToCompactingRecipes.get()) { |
| 74 | + create_central_kitchen$CACHED_COMPACTING_RECIPE.addAll(recipeManager.getAllRecipesFor(ExtraDelightRecipes.JUICER.get()) |
| 75 | + .stream().map(ExtraDelightRecipeConverters.AUTOMATIC_JUICING).filter(conditions).collect(Collectors.toSet())); |
| 76 | + |
| 77 | + } |
58 | 78 | } |
| 79 | + original.addAll(create_central_kitchen$CACHED_COMPACTING_RECIPE); |
59 | 80 | } |
60 | 81 | return original; |
61 | 82 | } |
|
0 commit comments