aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/gtPlusPlus/core/item/ModItems.java7
-rw-r--r--src/main/java/gtPlusPlus/core/material/Material.java6
-rw-r--r--src/main/java/gtPlusPlus/core/material/MaterialStack.java12
-rw-r--r--src/main/java/gtPlusPlus/xmod/bartworks/BW_Utils.java27
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java2
5 files changed, 52 insertions, 2 deletions
diff --git a/src/main/java/gtPlusPlus/core/item/ModItems.java b/src/main/java/gtPlusPlus/core/item/ModItems.java
index 133ebcc1e8..a8649407e4 100644
--- a/src/main/java/gtPlusPlus/core/item/ModItems.java
+++ b/src/main/java/gtPlusPlus/core/item/ModItems.java
@@ -658,6 +658,13 @@ public final class ModItems {
MaterialGenerator.generateOreMaterial(ALLOY.KOBOLDITE);
GTplusplus_Everglades.GenerateOreMaterials();
+ // Werkstoff bridge
+ ELEMENT.getInstance().ZIRCONIUM.setWerkstoffID((short) 3);
+ ELEMENT.getInstance().THORIUM232.setWerkstoffID((short) 30);
+ ELEMENT.getInstance().RUTHENIUM.setWerkstoffID((short) 64);
+ ELEMENT.getInstance().HAFNIUM.setWerkstoffID((short) 11000);
+ ELEMENT.getInstance().IODINE.setWerkstoffID((short) 11012);
+
} catch (final Throwable r){
Logger.INFO("Failed to Generated a Material. "+r.getMessage());
diff --git a/src/main/java/gtPlusPlus/core/material/Material.java b/src/main/java/gtPlusPlus/core/material/Material.java
index 64b705629e..748db12590 100644
--- a/src/main/java/gtPlusPlus/core/material/Material.java
+++ b/src/main/java/gtPlusPlus/core/material/Material.java
@@ -88,6 +88,8 @@ public class Material {
public BaseTinkersMaterial vTiConHandler;
+ public short werkstoffID;
+
public static AutoMap<Materials> invalidMaterials = new AutoMap<Materials>();
@@ -1527,4 +1529,8 @@ public class Material {
}
}
+ public void setWerkstoffID(short werkstoffID) {
+ this.werkstoffID = werkstoffID;
+ }
+
} \ No newline at end of file
diff --git a/src/main/java/gtPlusPlus/core/material/MaterialStack.java b/src/main/java/gtPlusPlus/core/material/MaterialStack.java
index 63a9ccce9c..145b217d6e 100644
--- a/src/main/java/gtPlusPlus/core/material/MaterialStack.java
+++ b/src/main/java/gtPlusPlus/core/material/MaterialStack.java
@@ -3,6 +3,8 @@ package gtPlusPlus.core.material;
import java.math.BigDecimal;
import java.math.RoundingMode;
+import gregtech.api.enums.OrePrefixes;
+import gtPlusPlus.xmod.bartworks.BW_Utils;
import net.minecraft.item.ItemStack;
import gtPlusPlus.api.objects.Logger;
@@ -53,6 +55,16 @@ public class MaterialStack {
return this.stackMaterial.getDust(amount);
}
+ public ItemStack getUnificatedDustStack(final int amount) {
+ if (this.stackMaterial.werkstoffID != 0) {
+ ItemStack stack = BW_Utils.getCorrespondingItemStack(OrePrefixes.dust, this.stackMaterial.werkstoffID, amount);
+ if (stack != null) {
+ return stack;
+ }
+ }
+ return getDustStack(amount);
+ }
+
public Material getStackMaterial(){
if (this.stackMaterial == null){
Logger.MATERIALS("Tried getStackMaterial, got an invalid material.");
diff --git a/src/main/java/gtPlusPlus/xmod/bartworks/BW_Utils.java b/src/main/java/gtPlusPlus/xmod/bartworks/BW_Utils.java
index d3386a1608..babd607aab 100644
--- a/src/main/java/gtPlusPlus/xmod/bartworks/BW_Utils.java
+++ b/src/main/java/gtPlusPlus/xmod/bartworks/BW_Utils.java
@@ -1,8 +1,12 @@
package gtPlusPlus.xmod.bartworks;
+import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
+import java.util.Map;
+import gregtech.api.enums.OrePrefixes;
+import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
import net.minecraft.item.ItemStack;
@@ -10,12 +14,21 @@ public class BW_Utils {
private final static Method sName;
private final static Method sGet;
- private static final Class sClassBW_NonMeta_MaterialItems;
+ private static final Class<?> sClassBW_NonMeta_MaterialItems;
+ private static final Class<?> Werkstoff;
+ private static final Class<?> WerkstoffLoader;
+ private static final Map<Short, ?> werkstoffHashMap;
+ private static final Method getCorrespondingItemStackUnsafe;
static {
sName = ReflectionUtils.getMethod(Enum.class, "name");
sClassBW_NonMeta_MaterialItems = ReflectionUtils.getClass("com.github.bartimaeusnek.bartworks.system.material.BW_NonMeta_MaterialItems");
sGet = ReflectionUtils.getMethod(sClassBW_NonMeta_MaterialItems, "get", long.class, Object[].class);
+ Werkstoff = ReflectionUtils.getClass("com.github.bartimaeusnek.bartworks.system.material.Werkstoff");
+ WerkstoffLoader = ReflectionUtils.getClass("com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader");
+ Field fieldWerkstoffHashMap = ReflectionUtils.getField(Werkstoff, "werkstoffHashMap");
+ werkstoffHashMap = ReflectionUtils.getFieldValue(fieldWerkstoffHashMap);
+ getCorrespondingItemStackUnsafe = ReflectionUtils.getMethod(WerkstoffLoader, "getCorrespondingItemStackUnsafe", OrePrefixes.class, Werkstoff, int.class);
}
public enum NonMeta_MaterialItem {
@@ -52,4 +65,16 @@ public class BW_Utils {
aItems.add(getBW_NonMeta_MaterialItems(NonMeta_MaterialItem.TheCoreCell, aStackSize));
return aItems;
}
+
+ public static ItemStack getCorrespondingItemStack(OrePrefixes orePrefixes, short werkstoffID, int amount) {
+ if (LoadedMods.BartWorks) {
+ if (werkstoffHashMap != null) {
+ Object werkstoff = werkstoffHashMap.get(werkstoffID);
+ if (werkstoff != null) {
+ return (ItemStack) ReflectionUtils.invokeNonBool(null, getCorrespondingItemStackUnsafe, new Object[]{orePrefixes, werkstoff, amount});
+ }
+ }
+ }
+ return null;
+ }
}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java
index f5abad2373..c8219155d2 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java
@@ -216,7 +216,7 @@ public class RecipeGen_BlastSmelter extends RecipeGen_Base {
}
}
else {
- components[irc] = M.getComposites().get(irc).getDustStack(r);
+ components[irc] = M.getComposites().get(irc).getUnificatedDustStack(r);
}
}
}