diff options
author | YannickMG <yannickmg@gmail.com> | 2022-08-13 04:55:30 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-13 10:55:30 +0200 |
commit | 0a052698be848819bf75eeca804d9971d408c6f3 (patch) | |
tree | d8ce1b15364779dcedd85ca4af3875727abb9da5 /src/main/java/gregtech/nei | |
parent | 554d3f6a75433a90f07c751297c404adaaf12cdf (diff) | |
download | GT5-Unofficial-0a052698be848819bf75eeca804d9971d408c6f3.tar.gz GT5-Unofficial-0a052698be848819bf75eeca804d9971d408c6f3.tar.bz2 GT5-Unofficial-0a052698be848819bf75eeca804d9971d408c6f3.zip |
Fix mTierIndexes using an incorrect data structure causing ArrayOutOfBoundException (#1244)
Diffstat (limited to 'src/main/java/gregtech/nei')
-rw-r--r-- | src/main/java/gregtech/nei/GT_NEI_DefaultHandler.java | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/main/java/gregtech/nei/GT_NEI_DefaultHandler.java b/src/main/java/gregtech/nei/GT_NEI_DefaultHandler.java index ddeba9ca91..af40dcadd2 100644 --- a/src/main/java/gregtech/nei/GT_NEI_DefaultHandler.java +++ b/src/main/java/gregtech/nei/GT_NEI_DefaultHandler.java @@ -46,8 +46,10 @@ import java.awt.*; import java.lang.ref.SoftReference; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -892,7 +894,7 @@ public class GT_NEI_DefaultHandler extends RecipeMapHandler { private int mCachedRecipesVersion = -1; @Nullable private SoftReference<List<CachedDefaultRecipe>> mCachedRecipes; - private ArrayList<Range<Integer>> mTierIndexes; + private Map<Byte, Range<Integer>> mTierIndexes; private Range<Byte> mTierRange; public int getCachedRecipesVersion() { @@ -920,7 +922,8 @@ public class GT_NEI_DefaultHandler extends RecipeMapHandler { } private void computeTierIndexes() { - mTierIndexes = new ArrayList<>(GT_Values.V.length); + // Holds 16 elements without rehashing + mTierIndexes = new HashMap<>(GT_Values.V.length + 1, 1f); assert mCachedRecipes != null; Iterator<CachedDefaultRecipe> iterator = Objects.requireNonNull(mCachedRecipes.get()).iterator(); @@ -934,7 +937,7 @@ public class GT_NEI_DefaultHandler extends RecipeMapHandler { byte recipeTier = GT_Utility.getTier(recipe.mRecipe.mEUt / GT_NEI_DefaultHandler.this.mRecipeMap.mAmperage); if (recipeTier != previousTier) { if (maxIndex != -1) { - mTierIndexes.set(previousTier, Range.between(minIndex, maxIndex)); + mTierIndexes.put(previousTier, Range.between(minIndex, maxIndex)); } else { lowestTier = recipeTier; } @@ -944,7 +947,7 @@ public class GT_NEI_DefaultHandler extends RecipeMapHandler { maxIndex = index; index++; if (!iterator.hasNext()) { - mTierIndexes.set(recipeTier, Range.between(minIndex, maxIndex)); + mTierIndexes.put(recipeTier, Range.between(minIndex, maxIndex)); mTierRange = Range.between(lowestTier, recipeTier); } } |