diff options
author | Alexdoru <57050655+Alexdoru@users.noreply.github.com> | 2024-09-16 01:12:03 +0200 |
---|---|---|
committer | boubou19 <miisterunknown@gmail.com> | 2024-09-17 22:55:46 +0200 |
commit | 730024055f670fef1fd4ba76b0863736a03fe227 (patch) | |
tree | 91ecc0fc2a99346ae7ee80ecbee2aa0d52eca6ef /src/main/java/bartworks/common | |
parent | d83cc53cf944772818eb1e23c065c54accaa0034 (diff) | |
download | GT5-Unofficial-730024055f670fef1fd4ba76b0863736a03fe227.tar.gz GT5-Unofficial-730024055f670fef1fd4ba76b0863736a03fe227.tar.bz2 GT5-Unofficial-730024055f670fef1fd4ba76b0863736a03fe227.zip |
cache some Enum.values() call to reduce RAM allocations
Diffstat (limited to 'src/main/java/bartworks/common')
-rw-r--r-- | src/main/java/bartworks/common/loaders/StaticRecipeChangeLoaders.java | 84 |
1 files changed, 44 insertions, 40 deletions
diff --git a/src/main/java/bartworks/common/loaders/StaticRecipeChangeLoaders.java b/src/main/java/bartworks/common/loaders/StaticRecipeChangeLoaders.java index a27da26919..f266c2fdc2 100644 --- a/src/main/java/bartworks/common/loaders/StaticRecipeChangeLoaders.java +++ b/src/main/java/bartworks/common/loaders/StaticRecipeChangeLoaders.java @@ -98,6 +98,7 @@ public class StaticRecipeChangeLoaders { public static void unificationRecipeEnforcer() { List<GTRecipe> toRemove = new ArrayList<>(); + final OrePrefixes[] OREPREFIX_VALUES = OrePrefixes.values(); for (Werkstoff werkstoff : Werkstoff.werkstoffHashSet) { StaticRecipeChangeLoaders.runMaterialLinker(werkstoff); if (werkstoff.getGenerationFeatures().enforceUnification) { @@ -105,51 +106,54 @@ public class StaticRecipeChangeLoaders { oreDictNames.add(werkstoff.getVarName()); StaticRecipeChangeLoaders.runMoltenUnificationEnfocement(werkstoff); StaticRecipeChangeLoaders.runUnficationDeleter(werkstoff); - for (String s : oreDictNames) for (OrePrefixes prefixes : OrePrefixes.values()) { - if (!werkstoff.hasItemType(prefixes)) continue; - String fullOreName = prefixes + s; - List<ItemStack> ores = OreDictionary.getOres(fullOreName, false); - if (ores.size() <= 1) // empty or one entry, i.e. no unification needed - continue; - for (ItemStack toReplace : ores) { - ItemStack replacement = werkstoff.get(prefixes); - if (toReplace == null || GTUtility.areStacksEqual(toReplace, replacement) - || replacement == null - || replacement.getItem() == null) continue; - for (RecipeMap<?> map : RecipeMap.ALL_RECIPE_MAPS.values()) { - toRemove.clear(); - nextRecipe: for (GTRecipe recipe : map.getAllRecipes()) { - boolean removal = map.equals(RecipeMaps.fluidExtractionRecipes) - || map.equals(RecipeMaps.fluidSolidifierRecipes); - for (int i = 0; i < recipe.mInputs.length; i++) { - if (!GTUtility.areStacksEqual(recipe.mInputs[i], toReplace)) continue; - if (removal) { - toRemove.add(recipe); - continue nextRecipe; + for (String s : oreDictNames) { + for (OrePrefixes prefixes : OREPREFIX_VALUES) { + if (!werkstoff.hasItemType(prefixes)) continue; + String fullOreName = prefixes + s; + List<ItemStack> ores = OreDictionary.getOres(fullOreName, false); + if (ores.size() <= 1) // empty or one entry, i.e. no unification needed + continue; + for (ItemStack toReplace : ores) { + ItemStack replacement = werkstoff.get(prefixes); + if (toReplace == null || GTUtility.areStacksEqual(toReplace, replacement) + || replacement == null + || replacement.getItem() == null) continue; + for (RecipeMap<?> map : RecipeMap.ALL_RECIPE_MAPS.values()) { + toRemove.clear(); + nextRecipe: for (GTRecipe recipe : map.getAllRecipes()) { + boolean removal = map.equals(RecipeMaps.fluidExtractionRecipes) + || map.equals(RecipeMaps.fluidSolidifierRecipes); + for (int i = 0; i < recipe.mInputs.length; i++) { + if (!GTUtility.areStacksEqual(recipe.mInputs[i], toReplace)) continue; + if (removal) { + toRemove.add(recipe); + continue nextRecipe; + } + recipe.mInputs[i] = GTUtility + .copyAmount(recipe.mInputs[i].stackSize, replacement); } - recipe.mInputs[i] = GTUtility.copyAmount(recipe.mInputs[i].stackSize, replacement); - } - for (int i = 0; i < recipe.mOutputs.length; i++) { - if (!GTUtility.areStacksEqual(recipe.mOutputs[i], toReplace)) continue; - if (removal) { - toRemove.add(recipe); - continue nextRecipe; + for (int i = 0; i < recipe.mOutputs.length; i++) { + if (!GTUtility.areStacksEqual(recipe.mOutputs[i], toReplace)) continue; + if (removal) { + toRemove.add(recipe); + continue nextRecipe; + } + recipe.mOutputs[i] = GTUtility + .copyAmount(recipe.mOutputs[i].stackSize, replacement); } - recipe.mOutputs[i] = GTUtility - .copyAmount(recipe.mOutputs[i].stackSize, replacement); - } - if (recipe.mSpecialItems instanceof ItemStack specialItemStack) { - if (!GTUtility.areStacksEqual(specialItemStack, toReplace)) continue; - if (removal) { - toRemove.add(recipe); - continue nextRecipe; + if (recipe.mSpecialItems instanceof ItemStack specialItemStack) { + if (!GTUtility.areStacksEqual(specialItemStack, toReplace)) continue; + if (removal) { + toRemove.add(recipe); + continue nextRecipe; + } + recipe.mSpecialItems = GTUtility + .copyAmount(specialItemStack.stackSize, replacement); } - recipe.mSpecialItems = GTUtility - .copyAmount(specialItemStack.stackSize, replacement); } + map.getBackend() + .removeRecipes(toRemove); } - map.getBackend() - .removeRecipes(toRemove); } } } |