aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus')
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/machines/TileEntityPestKiller.java2
-rw-r--r--src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java61
-rw-r--r--src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/tinkers/util/TinkersDryingRecipe.java39
4 files changed, 84 insertions, 20 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) {
diff --git a/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java b/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java
index f96ca01403..4a3f9cd504 100644
--- a/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java
+++ b/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java
@@ -40,7 +40,7 @@ public class HANDLER_Tinkers {
//Generate Drying Rack recipes
TinkersDryingRecipe.generateAllDryingRecipes();
-
+
for (BaseTinkersMaterial y : mTinkerMaterials) {
//y.generate();
}
diff --git a/src/Java/gtPlusPlus/xmod/tinkers/util/TinkersDryingRecipe.java b/src/Java/gtPlusPlus/xmod/tinkers/util/TinkersDryingRecipe.java
index 8be5e35ed6..8bc7ffef29 100644
--- a/src/Java/gtPlusPlus/xmod/tinkers/util/TinkersDryingRecipe.java
+++ b/src/Java/gtPlusPlus/xmod/tinkers/util/TinkersDryingRecipe.java
@@ -26,9 +26,13 @@ public class TinkersDryingRecipe {
List<?> aRecipes = TinkersUtils.getDryingRecipes();
if (aRecipes != null && aRecipes.size() > 0) {
for (Object o : aRecipes) {
+ Logger.INFO("Trying to generate recipe using object of type "+o.getClass().getSimpleName());
generateFromTinkersRecipeObject(o);
}
}
+ else {
+ Logger.INFO("Error generating Drying recipes, map was either null or empty. Null? "+(aRecipes != null)+", Size: "+aRecipes.size());
+ }
if (!recipes.isEmpty()) {
Logger.INFO("Adding "+recipes.size()+" drying rack recipes to the dehydrator.");
for (TinkersDryingRecipe r : recipes) {
@@ -41,8 +45,8 @@ public class TinkersDryingRecipe {
GT_Values.NF,
new ItemStack[] {r.result},
new int[] {},
- r.time,
- 120);
+ r.time/10,
+ 30);
}
}
}
@@ -51,9 +55,31 @@ public class TinkersDryingRecipe {
Field aTime;
Field aInput;
Field aOutput;
- Class aTinkerClass = ReflectionUtils.getClass("tconstruct.library.crafting.DryingRackRecipes.DryingRecipe");
+ Class aTinkerClass = ReflectionUtils.getClass("tconstruct.library.crafting.DryingRackRecipes.DryingRecipe");//o.getClass();
if (aTinkerClass == null || !LoadedMods.TiCon) {
- return null;
+ Logger.INFO("Error generating Drying Recipe, could not find class. Exists? "+ReflectionUtils.doesClassExist("tconstruct.library.crafting.DryingRackRecipes.DryingRecipe"));
+ Class clazz = ReflectionUtils.getClass("tconstruct.library.crafting.DryingRackRecipes");
+ Class[] y = clazz.getDeclaredClasses();
+ if (y == null || y.length <= 0) {
+ Logger.INFO("No hidden inner classes.");
+ return null;
+ }
+ else {
+ boolean found = false;
+ for (Class h : y) {
+ Logger.INFO("Found hidden inner class: "+h.getCanonicalName());
+ if (h.getSimpleName().toLowerCase().equals("dryingrecipe")) {
+ Logger.INFO("Found correct recipe. Caching at correct location.");
+ ReflectionUtils.mCachedClasses.put("tconstruct.library.crafting.DryingRackRecipes.DryingRecipe", h);
+ aTinkerClass = h;
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ return null;
+ }
+ }
}
aTime = ReflectionUtils.getField(aTinkerClass, "time");
aInput = ReflectionUtils.getField(aTinkerClass, "input");
@@ -64,15 +90,16 @@ public class TinkersDryingRecipe {
ItemStack result_internal = (ItemStack) aOutput.get(o);
return new TinkersDryingRecipe(input_internal, time_internal, result_internal);
} catch (Throwable b) {
-
+ b.printStackTrace();
}
return null;
}
- TinkersDryingRecipe(final ItemStack input, final int time, final ItemStack result) {
+ public TinkersDryingRecipe(final ItemStack input, final int time, final ItemStack result) {
this.time = time;
this.input = input;
this.result = result;
+ Logger.INFO("Generating Drying Recipe. Input: "+input.getDisplayName()+", Output: "+result.getDisplayName());
recipes.add(this);
}