From 839e8d79e6014ed45e324f9422a57098d6159b79 Mon Sep 17 00:00:00 2001 From: Jordan Byrne Date: Fri, 15 Dec 2017 12:27:09 +1000 Subject: % Tried to allow handling of re-enabling disabled GT materials. --- .../core/util/materials/MaterialUtils.java | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/Java/gtPlusPlus/core/util/materials') diff --git a/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java b/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java index 4a6f7c660e..3e79d46c19 100644 --- a/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java +++ b/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java @@ -1,14 +1,19 @@ package gtPlusPlus.core.util.materials; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.List; import org.apache.commons.lang3.reflect.FieldUtils; import gregtech.api.enums.*; +import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.state.MaterialState; import gtPlusPlus.core.util.StringUtils; import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.reflect.ReflectionUtils; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; @@ -226,4 +231,26 @@ public class MaterialUtils { return mName; } + public static boolean tryEnableMaterial(Materials mMaterial){ + if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK){ + return false; + } + return ReflectionUtils.setField(mMaterial, "mHasParentMod", true); + } + + public static boolean tryEnableMaterialPart(OrePrefixes prefix, Materials mMaterial){ + if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK){ + return false; + } + try { + Method enableComponent = Class.forName("gregtech.api.enums.OrePrefixes").getDeclaredMethod("enableComponent", Materials.class); + enableComponent.invoke(prefix, mMaterial); + return true; + } + catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException | ClassNotFoundException e) { + Utils.LOG_INFO("Failed to enabled "+prefix.mRegularLocalName+" for "+mMaterial.mDefaultLocalName); + } + return false; + } + } -- cgit