aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/util
diff options
context:
space:
mode:
authorMartin Robertz <dream-master@gmx.net>2018-01-07 10:10:58 +0100
committerDaniel <daniel112092@gmail.com>2018-01-07 10:10:58 +0100
commitb0ea7ae740877ff6aa9f4d57ca83f38d288a0fc6 (patch)
treea06fcc081aee3f2930b4245b5337f74db1401ebe /src/main/java/gregtech/api/util
parentf8d769b67d61ecd16da9e0b8a0ca5b6a472348bc (diff)
downloadGT5-Unofficial-b0ea7ae740877ff6aa9f4d57ca83f38d288a0fc6.tar.gz
GT5-Unofficial-b0ea7ae740877ff6aa9f4d57ca83f38d288a0fc6.tar.bz2
GT5-Unofficial-b0ea7ae740877ff6aa9f4d57ca83f38d288a0fc6.zip
NEI page access of Primitive Blast Furnace (#78)
* NEI page access of Primitive Blast Furnace cherry pick Commit: e0be4bdc4504717968494503ea03b8184af96891 [e0be4bd] * Fix #1039 * Fix #1039
Diffstat (limited to 'src/main/java/gregtech/api/util')
-rw-r--r--src/main/java/gregtech/api/util/GT_OreDictUnificator.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/util/GT_OreDictUnificator.java b/src/main/java/gregtech/api/util/GT_OreDictUnificator.java
index 7552f5ea85..33149eb801 100644
--- a/src/main/java/gregtech/api/util/GT_OreDictUnificator.java
+++ b/src/main/java/gregtech/api/util/GT_OreDictUnificator.java
@@ -15,6 +15,7 @@ import net.minecraftforge.oredict.OreDictionary;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -32,6 +33,7 @@ import static gregtech.api.enums.GT_Values.*;
public class GT_OreDictUnificator {
private static final /*ConcurrentHash*/Map<String, ItemStack> sName2StackMap = new /*ConcurrentHash*/HashMap<String, ItemStack>();
private static final /*ConcurrentHash*/Map<GT_ItemStack, ItemData> sItemStack2DataMap = new /*ConcurrentHash*/HashMap<GT_ItemStack, ItemData>();
+ private static final /*ConcurrentHash*/Map<GT_ItemStack, List<ItemStack>> sUnificationTable = new /*ConcurrentHash*/HashMap<GT_ItemStack, List<ItemStack>>();
private static final GT_HashSet<GT_ItemStack> sNoUnificationList = new GT_HashSet<GT_ItemStack>();
public static volatile int VERSION = 509;
private static int isRegisteringOre = 0, isAddingOre = 0;
@@ -39,6 +41,7 @@ public class GT_OreDictUnificator {
static {
GregTech_API.sItemStackMappings.add(sItemStack2DataMap);
+ GregTech_API.sItemStackMappings.add(sUnificationTable);
}
/**
@@ -153,6 +156,40 @@ public class GT_OreDictUnificator {
return GT_Utility.copyAmount(aStack.stackSize, rStack);
}
+ public static List<ItemStack> getNonUnifiedStacks(Object obj) {
+ synchronized (sUnificationTable) {
+ if (sUnificationTable.isEmpty() && !sItemStack2DataMap.isEmpty()) {
+ for (GT_ItemStack tGTStack0 : sItemStack2DataMap.keySet()) {
+ ItemStack tStack0 = tGTStack0.toStack();
+ ItemStack tStack1 = get(false, tStack0);
+ if (!GT_Utility.areStacksEqual(tStack0, tStack1)) {
+ GT_ItemStack tGTStack1 = new GT_ItemStack(tStack1);
+ List<ItemStack> list = sUnificationTable.get(tGTStack1);
+ if (list == null) sUnificationTable.put(tGTStack1, list = new ArrayList<ItemStack>());
+ if (!list.contains(tStack0)) list.add(tStack0);
+ }
+ }
+ }
+ }
+ ItemStack[] aStacks = {};
+ if (obj instanceof ItemStack) aStacks = new ItemStack[]{(ItemStack) obj};
+ else if (obj instanceof ItemStack[]) aStacks = (ItemStack[]) obj;
+ else if (obj instanceof List) aStacks = (ItemStack[]) ((List)obj).toArray(new ItemStack[0]);
+ List<ItemStack> rList = new ArrayList<ItemStack>();
+ for (ItemStack aStack : aStacks) {
+ rList.add(aStack);
+ List<ItemStack> tList = sUnificationTable.get(new GT_ItemStack(aStack));
+ if (tList != null) {
+ for (ItemStack tStack : tList) {
+ ItemStack tStack1 = GT_Utility.copyAmount(aStack.stackSize, tStack);
+ tStack1.setTagCompound(aStack.getTagCompound());
+ rList.add(tStack1);
+ }
+ }
+ }
+ return rList;
+ }
+
public static void addItemData(ItemStack aStack, ItemData aData) {
if (GT_Utility.isStackValid(aStack) && getItemData(aStack) == null && aData != null) setItemData(aStack, aData);
}