aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/util/GT_OreDictUnificator.java
diff options
context:
space:
mode:
authorMartin Robertz <dream-master@gmx.net>2021-01-17 01:29:17 +0100
committerGitHub <noreply@github.com>2021-01-17 01:29:17 +0100
commitea52a068e4c4343f8d62603a63859e3f37fea26f (patch)
tree5e0c0dda8f9c91c6524af68e96b9ac15e35db528 /src/main/java/gregtech/api/util/GT_OreDictUnificator.java
parent5f73f6d0c14c51fef3a1c5c17455c08a0452d432 (diff)
parent2386fd6d6e75dff13deb7170881f5e90a94e489e (diff)
downloadGT5-Unofficial-ea52a068e4c4343f8d62603a63859e3f37fea26f.tar.gz
GT5-Unofficial-ea52a068e4c4343f8d62603a63859e3f37fea26f.tar.bz2
GT5-Unofficial-ea52a068e4c4343f8d62603a63859e3f37fea26f.zip
Merge pull request #407 from GTNewHorizons/speeding-up
Speeding up
Diffstat (limited to 'src/main/java/gregtech/api/util/GT_OreDictUnificator.java')
-rw-r--r--src/main/java/gregtech/api/util/GT_OreDictUnificator.java34
1 files changed, 24 insertions, 10 deletions
diff --git a/src/main/java/gregtech/api/util/GT_OreDictUnificator.java b/src/main/java/gregtech/api/util/GT_OreDictUnificator.java
index f3eb77bc40..3991820dd4 100644
--- a/src/main/java/gregtech/api/util/GT_OreDictUnificator.java
+++ b/src/main/java/gregtech/api/util/GT_OreDictUnificator.java
@@ -13,10 +13,8 @@ import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import javax.annotation.Nullable;
+import java.util.*;
import java.util.Map.Entry;
import static gregtech.api.enums.GT_Values.*;
@@ -81,7 +79,7 @@ public class GT_OreDictUnificator {
if (GT_Utility.isStringInvalid(aName)) return null;
ItemStack tStack = sName2StackMap.get(aName.toString());
if (GT_Utility.isStackValid(tStack)) return GT_Utility.copyAmount(aAmount, tStack);
- return GT_Utility.copyAmount(aAmount, getOres(aName).toArray());
+ return GT_Utility.copyAmount(aAmount, getOresImmutable(aName).toArray());
}
public static ItemStack get(Object aName, long aAmount) {
@@ -161,7 +159,7 @@ public class GT_OreDictUnificator {
public static ItemStack get_nocopy(ItemStack aStack) {
return get_nocopy(true, aStack);
}
-
+
/** Doesn't copy the returned stack or set quantity. Be careful and do not mutate it;
* intended only to optimize comparisons */
static ItemStack get_nocopy(boolean aUseBlackList, ItemStack aStack) {
@@ -313,7 +311,7 @@ public class GT_OreDictUnificator {
public static boolean isItemStackInstanceOf(ItemStack aStack, Object aName) {
if (GT_Utility.isStringInvalid(aName) || GT_Utility.isStackInvalid(aStack)) return false;
- for (ItemStack tOreStack : getOres(aName.toString()))
+ for (ItemStack tOreStack : getOresImmutable(aName.toString()))
if (GT_Utility.areStacksEqual(tOreStack, aStack, true)) return true;
return false;
}
@@ -342,9 +340,7 @@ public class GT_OreDictUnificator {
if (GT_Utility.isStringInvalid(tName))
return false;
- ArrayList<ItemStack> tList = getOres(tName);
-
- for (ItemStack itemStack : tList)
+ for (ItemStack itemStack : getOresImmutable(tName))
if (GT_Utility.areStacksEqual(itemStack, aStack, true))
return false;
@@ -471,4 +467,22 @@ public class GT_OreDictUnificator {
if (GT_Utility.isStringValid(aName)) rList.addAll(OreDictionary.getOres(aName));
return rList;
}
+
+ /**
+ * Fast version of {@link #getOres(Object)},
+ * which doesn't call {@link System#arraycopy(Object, int, Object, int, int)} in {@link ArrayList#addAll}
+ */
+ public static List<ItemStack> getOresImmutable(@Nullable Object oreName) {
+ return getOresImmutable(oreName != null ? oreName.toString() : null);
+ }
+
+ /**
+ * Fast version of {@link #getOres(Object)},
+ * which doesn't call {@link System#arraycopy(Object, int, Object, int, int)} in {@link ArrayList#addAll}
+ */
+ public static List<ItemStack> getOresImmutable(@Nullable String oreName) {
+ if(oreName == null) oreName = E;
+
+ return GT_Utility.isStackValid(oreName) ? Collections.unmodifiableList(OreDictionary.getOres(oreName)) : Collections.emptyList();
+ }
}