diff options
author | miozune <miozune@gmail.com> | 2022-07-14 20:51:48 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-14 18:51:48 +0700 |
commit | 86349af213a89e720e17ad778e7528b93e5f5274 (patch) | |
tree | 618911c44071f1998a01cb2260b47bf5537a3c19 /src/main/java | |
parent | b6345ea61f7facb8d60698bd8fa37e475e1fdcda (diff) | |
download | GT5-Unofficial-86349af213a89e720e17ad778e7528b93e5f5274.tar.gz GT5-Unofficial-86349af213a89e720e17ad778e7528b93e5f5274.tar.bz2 GT5-Unofficial-86349af213a89e720e17ad778e7528b93e5f5274.zip |
Werkstoff bridge (#243)
Diffstat (limited to 'src/main/java')
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); } } } |