aboutsummaryrefslogtreecommitdiff
path: root/src/Java
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2019-07-29 19:03:03 +0100
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2019-07-29 19:03:03 +0100
commitf0108520f233284116112a594cf2f36aec7abccd (patch)
tree178d176843c270ec0d01a96db8ac93174d2ab3af /src/Java
parenta05fb3167179cbc25f006f825cd55638ce14d7fa (diff)
downloadGT5-Unofficial-f0108520f233284116112a594cf2f36aec7abccd.tar.gz
GT5-Unofficial-f0108520f233284116112a594cf2f36aec7abccd.tar.bz2
GT5-Unofficial-f0108520f233284116112a594cf2f36aec7abccd.zip
+ Added all drying rack recipes to the dehydrator. Closes #487.
Diffstat (limited to 'src/Java')
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java102
-rw-r--r--src/Java/gtPlusPlus/xmod/tinkers/util/TinkersDryingRecipe.java93
-rw-r--r--src/Java/gtPlusPlus/xmod/tinkers/util/TinkersUtils.java70
4 files changed, 193 insertions, 74 deletions
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
index e12213003f..f73ee12d7e 100644
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
+++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
@@ -214,8 +214,8 @@ public class Preloader_Transformer_Handler implements IClassTransformer {
return new ClassTransformer_IC2_GetHarvestTool(basicClass, obfuscated, transformedName).getWriter().toByteArray();
}
}
- //Fix IC2 Hazmat
+ //Fix IC2 Hazmat
if (transformedName.equals("ic2.core.item.armor.ItemArmorHazmat")) {
FMLRelaunchLog.log("[GT++ ASM] IC2 Hazmat Patch", Level.INFO, "Transforming %s", transformedName);
return new ClassTransformer_IC2_Hazmat(basicClass, transformedName).getWriter().toByteArray();
diff --git a/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java b/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java
index 3c8d969fa3..f96ca01403 100644
--- a/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java
+++ b/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java
@@ -7,6 +7,7 @@ import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
import gtPlusPlus.xmod.tinkers.material.BaseTinkersMaterial;
+import gtPlusPlus.xmod.tinkers.util.TinkersDryingRecipe;
import gtPlusPlus.xmod.tinkers.util.TinkersUtils;
import net.minecraft.block.Block;
import net.minecraftforge.fluids.Fluid;
@@ -15,7 +16,7 @@ import net.minecraftforge.fluids.FluidRegistry;
public class HANDLER_Tinkers {
public static AutoMap<BaseTinkersMaterial> mTinkerMaterials = new AutoMap<BaseTinkersMaterial>();
-
+
public static final void preInit() {
if (LoadedMods.TiCon) {
@@ -24,77 +25,80 @@ public class HANDLER_Tinkers {
public static final void init() {
if (LoadedMods.TiCon) {
-
+
}
}
public static final void postInit() {
if (LoadedMods.TiCon) {
-
+
Fluid pyrotheumFluid = FluidRegistry.getFluid("pyrotheum");
if (pyrotheumFluid != null) {
//Enable Pyrotheum as Fuel for the Smeltery
TinkersUtils.addSmelteryFuel(pyrotheumFluid, 5000, 70); // pyrotheum lasts 3.5 seconds per 15 mb
}
+
+ //Generate Drying Rack recipes
+ TinkersDryingRecipe.generateAllDryingRecipes();
- for (BaseTinkersMaterial y : mTinkerMaterials) {
- //y.generate();
- }
-
- Class aTinkersSmeltery = ReflectionUtils.getClass("tconstruct.smeltery.TinkerSmeltery");
- AutoMap<Fluid> aTweakedFluids = new AutoMap<Fluid>();
- if (aTinkersSmeltery != null) {
- try {
- Logger.INFO("Manipulating the light levels of fluids in TiCon. Molten 'metals' in world are now very luminescent!");
- Field aFluidArrayField = ReflectionUtils.getField(aTinkersSmeltery, "fluids");
- Field aBlockArrayField = ReflectionUtils.getField(aTinkersSmeltery, "fluidBlocks");
- Fluid[] aTiconFluids = (Fluid[]) aFluidArrayField.get(null);
- Block[] aTiconFluidBlocks = (Block[]) aBlockArrayField.get(null);
- if (aTiconFluids != null && aTiconFluidBlocks != null) {
- for (Fluid a : aTiconFluids) {
- if (a == null) {
- continue;
+ for (BaseTinkersMaterial y : mTinkerMaterials) {
+ //y.generate();
+ }
+
+ Class aTinkersSmeltery = ReflectionUtils.getClass("tconstruct.smeltery.TinkerSmeltery");
+ AutoMap<Fluid> aTweakedFluids = new AutoMap<Fluid>();
+ if (aTinkersSmeltery != null) {
+ try {
+ Logger.INFO("Manipulating the light levels of fluids in TiCon. Molten 'metals' in world are now very luminescent!");
+ Field aFluidArrayField = ReflectionUtils.getField(aTinkersSmeltery, "fluids");
+ Field aBlockArrayField = ReflectionUtils.getField(aTinkersSmeltery, "fluidBlocks");
+ Fluid[] aTiconFluids = (Fluid[]) aFluidArrayField.get(null);
+ Block[] aTiconFluidBlocks = (Block[]) aBlockArrayField.get(null);
+ if (aTiconFluids != null && aTiconFluidBlocks != null) {
+ for (Fluid a : aTiconFluids) {
+ if (a == null) {
+ continue;
+ } else {
+ if (a.getLuminosity() <= 15) {
+ //if (a.getTemperature() >= 500) {
+ a.setLuminosity(16);
+ aTweakedFluids.put(a);
+ //}
} else {
- if (a.getLuminosity() <= 15) {
- //if (a.getTemperature() >= 500) {
- a.setLuminosity(16);
- aTweakedFluids.put(a);
- //}
- } else {
- aTweakedFluids.put(a);
- continue;
- }
+ aTweakedFluids.put(a);
+ continue;
}
}
- for (Block a : aTiconFluidBlocks) {
- if (a == null) {
- continue;
- } else {
- Fluid f = FluidRegistry.lookupFluidForBlock(a);
- boolean isHot = false;
- if (f != null && f.getTemperature() >= 500) {
- if (f.getLuminosity() <= 16 && !aTweakedFluids.containsValue(f)) {
- f.setLuminosity(16);
- }
- isHot = true;
+ }
+ for (Block a : aTiconFluidBlocks) {
+ if (a == null) {
+ continue;
+ } else {
+ Fluid f = FluidRegistry.lookupFluidForBlock(a);
+ boolean isHot = false;
+ if (f != null && f.getTemperature() >= 500) {
+ if (f.getLuminosity() <= 16 && !aTweakedFluids.containsValue(f)) {
+ f.setLuminosity(16);
}
- if (a.getLightValue() <= 16f) {
- if (isHot) {
+ isHot = true;
+ }
+ if (a.getLightValue() <= 16f) {
+ if (isHot) {
+ a.setLightLevel(16f);
+ } else {
+ if (a.getLightValue() <= 16f) {
a.setLightLevel(16f);
- } else {
- if (a.getLightValue() <= 16f) {
- a.setLightLevel(16f);
- }
}
- } else {
- continue;
}
+ } else {
+ continue;
}
}
}
- } catch (IllegalArgumentException | IllegalAccessException e) {
}
+ } catch (IllegalArgumentException | IllegalAccessException e) {
}
+ }
}
}
diff --git a/src/Java/gtPlusPlus/xmod/tinkers/util/TinkersDryingRecipe.java b/src/Java/gtPlusPlus/xmod/tinkers/util/TinkersDryingRecipe.java
new file mode 100644
index 0000000000..8be5e35ed6
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/tinkers/util/TinkersDryingRecipe.java
@@ -0,0 +1,93 @@
+package gtPlusPlus.xmod.tinkers.util;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+
+import gregtech.api.enums.GT_Values;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.lib.LoadedMods;
+import gtPlusPlus.core.recipe.common.CI;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class TinkersDryingRecipe {
+
+ public static AutoMap<TinkersDryingRecipe> recipes = new AutoMap<TinkersDryingRecipe>();
+
+ public final int time;
+ public final ItemStack input;
+ public final ItemStack result;
+
+ public static void generateAllDryingRecipes() {
+ List<?> aRecipes = TinkersUtils.getDryingRecipes();
+ if (aRecipes != null && aRecipes.size() > 0) {
+ for (Object o : aRecipes) {
+ generateFromTinkersRecipeObject(o);
+ }
+ }
+ if (!recipes.isEmpty()) {
+ Logger.INFO("Adding "+recipes.size()+" drying rack recipes to the dehydrator.");
+ for (TinkersDryingRecipe r : recipes) {
+ CORE.RA.addDehydratorRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(16),
+ r.input
+ },
+ GT_Values.NF,
+ GT_Values.NF,
+ new ItemStack[] {r.result},
+ new int[] {},
+ r.time,
+ 120);
+ }
+ }
+ }
+
+ public static TinkersDryingRecipe generateFromTinkersRecipeObject(Object o) {
+ Field aTime;
+ Field aInput;
+ Field aOutput;
+ Class aTinkerClass = ReflectionUtils.getClass("tconstruct.library.crafting.DryingRackRecipes.DryingRecipe");
+ if (aTinkerClass == null || !LoadedMods.TiCon) {
+ return null;
+ }
+ aTime = ReflectionUtils.getField(aTinkerClass, "time");
+ aInput = ReflectionUtils.getField(aTinkerClass, "input");
+ aOutput = ReflectionUtils.getField(aTinkerClass, "result");
+ try {
+ int time_internal = aTime.getInt(o);
+ ItemStack input_internal = (ItemStack) aInput.get(o);
+ ItemStack result_internal = (ItemStack) aOutput.get(o);
+ return new TinkersDryingRecipe(input_internal, time_internal, result_internal);
+ } catch (Throwable b) {
+
+ }
+ return null;
+ }
+
+ TinkersDryingRecipe(final ItemStack input, final int time, final ItemStack result) {
+ this.time = time;
+ this.input = input;
+ this.result = result;
+ recipes.add(this);
+ }
+
+ public boolean matches(ItemStack input) {
+ if (input.hasTagCompound()) {
+ input = input.copy();
+ input.getTagCompound().removeTag("frypanKill");
+ if (input.getTagCompound().hasNoTags()) {
+ input.setTagCompound((NBTTagCompound) null);
+ }
+ }
+ return ItemStack.areItemStacksEqual(this.input, input);
+ }
+
+ public ItemStack getResult() {
+ return this.result.copy();
+ }
+}
diff --git a/src/Java/gtPlusPlus/xmod/tinkers/util/TinkersUtils.java b/src/Java/gtPlusPlus/xmod/tinkers/util/TinkersUtils.java
index f0c6d76b7c..15ca3b497e 100644
--- a/src/Java/gtPlusPlus/xmod/tinkers/util/TinkersUtils.java
+++ b/src/Java/gtPlusPlus/xmod/tinkers/util/TinkersUtils.java
@@ -12,6 +12,8 @@ import java.util.LinkedList;
import java.util.List;
import gregtech.api.enums.Materials;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.util.minecraft.ItemUtils;
@@ -24,14 +26,14 @@ import net.minecraftforge.fluids.FluidStack;
public class TinkersUtils {
- private static final Class mClass_Smeltery;
- private static final Class mClass_TConstructRegistry;
- private static final Class mClass_ToolMaterial;
- private static final Class mClass_IPattern;
- private static final Class mClass_DynamicToolPart;
- private static final Class mClass_FluidType;
- private static final Class mClass_CastingRecipe;
- private static final Class mClass_TinkerSmeltery;
+ private static final Class<?> mClass_Smeltery;
+ private static final Class<?> mClass_TConstructRegistry;
+ private static final Class<?> mClass_ToolMaterial;
+ private static final Class<?> mClass_IPattern;
+ private static final Class<?> mClass_DynamicToolPart;
+ private static final Class<?> mClass_FluidType;
+ private static final Class<?> mClass_CastingRecipe;
+ private static final Class<?> mClass_TinkerSmeltery;
private static final Field mField_MoltenIronFluid;
@@ -313,16 +315,36 @@ public class TinkersUtils {
ItemStack ingotCast = new ItemStack(mTinkerMetalPattern, aType, 0);
return ingotCast;
}
- return ItemUtils.getErrorStack(1, "Bad Tinkers Pattern");
-
-
-
-
-
-
-
+ return ItemUtils.getErrorStack(1, "Bad Tinkers Pattern");
}
+ private static AutoMap<?> mDryingRackRecipes;
+
+ public static List<?> getDryingRecipes(){
+ if (mDryingRackRecipes != null) {
+ return mDryingRackRecipes;
+ }
+ AutoMap<Object> aData = new AutoMap<Object>();
+ int aCount = 0;
+ try {
+ ArrayList<?> recipes = (ArrayList<?>) ReflectionUtils.getField(ReflectionUtils.getClass("tconstruct.library.crafting.DryingRackRecipes"), "recipes").get(null);
+ if (recipes != null) {
+ for (Object o : recipes) {
+ aData.put(o);
+ aCount++;
+ }
+ Logger.INFO("Found "+aCount+" Tinkers drying rack recipes.");
+ }
+ else {
+ Logger.INFO("Failed to find any Tinkers drying rack recipes.");
+ }
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ Logger.INFO("Failed to find any Tinkers drying rack recipes.");
+ }
+ mDryingRackRecipes = aData;
+ return aData;
+ }
+
/**
* Generates Tinkers {@link ToolMaterial}'s reflectively.
* @param name
@@ -340,7 +362,7 @@ public class TinkersUtils {
*/
public static Object generateToolMaterial(String name, String localizationString, int level, int durability, int speed, int damage, float handle, int reinforced, float stonebound, String style, int primaryColor) {
try {
- Constructor constructor = mClass_ToolMaterial.getConstructor(String.class, String.class, int.class, int.class, int.class, int.class, float.class, int.class, float.class, String.class, int.class);
+ Constructor<?> constructor = mClass_ToolMaterial.getConstructor(String.class, String.class, int.class, int.class, int.class, int.class, float.class, int.class, float.class, String.class, int.class);
Object myObject = constructor.newInstance(name, localizationString, level, durability, speed, damage, handle, reinforced, stonebound, style, primaryColor);
return myObject;
} catch (Throwable t) {
@@ -404,24 +426,24 @@ public class TinkersUtils {
}
}
- public static List getTableCastingRecipes(){
+ public static List<?> getTableCastingRecipes(){
Object aCastingTableHandlerInstance = getCastingInstance(0);
- List aTemp;
+ List<?> aTemp;
try {
- aTemp = (List) mMethod_getCastingRecipes.invoke(aCastingTableHandlerInstance, new Object[] {});
+ aTemp = (List<?>) mMethod_getCastingRecipes.invoke(aCastingTableHandlerInstance, new Object[] {});
return aTemp;
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
e.printStackTrace();
}
- return new ArrayList();
+ return new ArrayList<Object>();
}
public static boolean generateCastingRecipes(Material aMaterial, int aID) {
- List newRecipies = new LinkedList();
+ List<CastingRecipeHandler> newRecipies = new LinkedList<CastingRecipeHandler>();
- Iterator iterator1 = getTableCastingRecipes().iterator();
+ Iterator<?> iterator1 = getTableCastingRecipes().iterator();
Fluid aMoltenIron = null;
if (aMoltenIron == null) {
try {
@@ -451,7 +473,7 @@ public class TinkersUtils {
Object ft;
try {
ft = mMethod_getFluidType.invoke(null, aMaterial.getLocalizedName());
- Iterator iterator2 = newRecipies.iterator();
+ Iterator<CastingRecipeHandler> iterator2 = newRecipies.iterator();
while (iterator2.hasNext()) {
CastingRecipeHandler recipe = new CastingRecipeHandler(iterator2.next());
if (!recipe.valid){