diff options
author | Draknyte1 <Draknyte1@hotmail.com> | 2017-07-10 06:16:29 +1000 |
---|---|---|
committer | Draknyte1 <Draknyte1@hotmail.com> | 2017-07-10 06:16:29 +1000 |
commit | df9291355838fc71a6874399f2ab797ad1e1e635 (patch) | |
tree | 3607b74f7b204c158163c58796c20a03cb1f6329 /src/Java/gtPlusPlus/core/util/reflect | |
parent | 99ebf8e09d19c949af4986fa20459c8f87c455ea (diff) | |
download | GT5-Unofficial-df9291355838fc71a6874399f2ab797ad1e1e635.tar.gz GT5-Unofficial-df9291355838fc71a6874399f2ab797ad1e1e635.tar.bz2 GT5-Unofficial-df9291355838fc71a6874399f2ab797ad1e1e635.zip |
+ Add Missing Classes.
Diffstat (limited to 'src/Java/gtPlusPlus/core/util/reflect')
-rw-r--r-- | src/Java/gtPlusPlus/core/util/reflect/AddGregtechRecipe.java | 29 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/core/util/reflect/ServerProxyFinder.java | 32 |
2 files changed, 61 insertions, 0 deletions
diff --git a/src/Java/gtPlusPlus/core/util/reflect/AddGregtechRecipe.java b/src/Java/gtPlusPlus/core/util/reflect/AddGregtechRecipe.java new file mode 100644 index 0000000000..19c09a8c21 --- /dev/null +++ b/src/Java/gtPlusPlus/core/util/reflect/AddGregtechRecipe.java @@ -0,0 +1,29 @@ +package gtPlusPlus.core.util.reflect; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; + +public final class AddGregtechRecipe { + + public static boolean PyrolyseOven(final ItemStack p0, final FluidStack p1, final int p2, final ItemStack p3, + final FluidStack p4, final int p5, final int p6){ + + try { + Class<?> GT_RecipeAdder = Class.forName("gregtech.common.GT_RecipeAdder"); + if (GT_RecipeAdder != null){ + Method addPollution = GT_RecipeAdder.getMethod("addPyrolyseRecipe", ItemStack.class, FluidStack.class, int.class, ItemStack.class, FluidStack.class, int.class, int.class); + if (addPollution != null){ + return (boolean) addPollution.invoke(p0, p1, p2, p3, p4, p5, p6); + } + } + } + catch (ClassNotFoundException | SecurityException | NoSuchMethodException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + return false; + } + return false; + } + +}
\ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/util/reflect/ServerProxyFinder.java b/src/Java/gtPlusPlus/core/util/reflect/ServerProxyFinder.java new file mode 100644 index 0000000000..2fae02a9fd --- /dev/null +++ b/src/Java/gtPlusPlus/core/util/reflect/ServerProxyFinder.java @@ -0,0 +1,32 @@ +package gtPlusPlus.core.util.reflect; + +import java.lang.reflect.Field; + +import cpw.mods.fml.common.SidedProxy; + +public class ServerProxyFinder { + + public static Object getInstance(final Object modInstance) throws ReflectiveOperationException { + for(final Field field : modInstance.getClass().getDeclaredFields()) { + if(field.isAnnotationPresent(SidedProxy.class)) { + final SidedProxy sidedProxy = field.getAnnotation(SidedProxy.class); + final Object fieldValue = field.get(modInstance); + try { + final Class serverSideClass = Class.forName(sidedProxy.serverSide()); + if(serverSideClass.isAssignableFrom(fieldValue.getClass())) { + final Object serverProxy = serverSideClass.cast(fieldValue); + //do what you want with server proxy instance + return serverProxy; + } + + } catch (final NoClassDefFoundError err) { + //its server side + return null; + } + break; + } + } + return null; + } + +}
\ No newline at end of file |