diff options
author | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2019-08-15 01:32:23 +0100 |
---|---|---|
committer | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2019-08-15 01:32:23 +0100 |
commit | 8308ff274b114193fed038daf139c9c94329a666 (patch) | |
tree | 07be9c721e5a0e8b9e2eba5fce0f7fe89da41fa1 /src/Java/gtPlusPlus/core | |
parent | 02cfb0ee9c1ed82c4b1cbbc5f53e133388ce2a54 (diff) | |
download | GT5-Unofficial-8308ff274b114193fed038daf139c9c94329a666.tar.gz GT5-Unofficial-8308ff274b114193fed038daf139c9c94329a666.tar.bz2 GT5-Unofficial-8308ff274b114193fed038daf139c9c94329a666.zip |
$ Fixed Dehydrator not properly importing Tinkers drying rack recipes. Fixes #487.
$ Fixed Pest Killer not detecting butterflies properly.
Diffstat (limited to 'src/Java/gtPlusPlus/core')
-rw-r--r-- | src/Java/gtPlusPlus/core/tileentities/machines/TileEntityPestKiller.java | 2 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java | 61 |
2 files changed, 50 insertions, 13 deletions
diff --git a/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityPestKiller.java b/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityPestKiller.java index b518072e48..3ebe5be40d 100644 --- a/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityPestKiller.java +++ b/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityPestKiller.java @@ -55,7 +55,7 @@ public class TileEntityPestKiller extends TileEntity implements ISidedInventory, static { mEntityMap.put(EntityBat.class); if (LoadedMods.Forestry) { - mEntityMap.put(ReflectionUtils.getClass("forestry.lepidopterology.entities.EntityButterfly.class")); + mEntityMap.put(ReflectionUtils.getClass("forestry.lepidopterology.entities.EntityButterfly")); } } diff --git a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java index 19e42735d7..b52c13c563 100644 --- a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java +++ b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java @@ -293,7 +293,7 @@ public class ReflectionUtils { return loaded > 0; } - + public static boolean setField(final Object object, final String fieldName, final Object fieldValue) { Class<?> clazz = object.getClass(); @@ -313,8 +313,8 @@ public class ReflectionUtils { } } return false; - - + + } public static boolean setField(final Object object, final Field field, final Object fieldValue) { @@ -484,11 +484,11 @@ public class ReflectionUtils { * Internal Magic that probably should not get exposed. */ - - - - - + + + + + @@ -767,15 +767,52 @@ public class ReflectionUtils { } private static Class<?> getClass_Internal(String string) { + Class aClass = null; if (ReflectionUtils.doesClassExist(string)) { try { - return Class.forName(string); + aClass = Class.forName(string); } catch (ClassNotFoundException e) { - return getNonPublicClass(string); + aClass = getNonPublicClass(string); } } - return null; + + if (aClass == null) { + String aClassName = ""; + Logger.REFLECTION("Splitting "+string+" to try look for hidden classes."); + String[] aData = string.split("\\."); + Logger.REFLECTION("Obtained "+aData.length+" pieces."); + for (int i=0;i<(aData.length-1);i++) { + aClassName += (i > 0) ? "."+aData[i] : ""+aData[i]; + Logger.REFLECTION("Building: "+aClassName); + } + Logger.REFLECTION("Trying to search '"+aClassName+"' for inner classes."); + Class clazz = ReflectionUtils.getClass(aClassName); + + Class[] y = clazz.getDeclaredClasses(); + if (y == null || y.length <= 0) { + Logger.REFLECTION("No hidden inner classes found."); + return null; + } + else { + boolean found = false; + for (Class h : y) { + Logger.REFLECTION("Found hidden inner class: "+h.getCanonicalName()); + if (h.getSimpleName().toLowerCase().equals(aData[aData.length-1].toLowerCase())) { + Logger.REFLECTION("Found correct class. ["+aData[aData.length-1]+"] Caching at correct location: "+string); + Logger.REFLECTION("Found at location: "+h.getCanonicalName()); + ReflectionUtils.mCachedClasses.put(string, h); + aClass = h; + found = true; + break; + } + } + if (!found) { + return null; + } + } + } + return aClass; } /** @@ -803,7 +840,7 @@ public class ReflectionUtils { public static boolean doesFieldExist(String clazz, String string) { return doesFieldExist(ReflectionUtils.getClass(clazz), string); } - + public static boolean doesFieldExist(Class<?> clazz, String string) { if (clazz != null) { if (ReflectionUtils.getField(clazz, string) != null) { |