diff options
author | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2019-07-29 19:03:03 +0100 |
---|---|---|
committer | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2019-07-29 19:03:03 +0100 |
commit | f0108520f233284116112a594cf2f36aec7abccd (patch) | |
tree | 178d176843c270ec0d01a96db8ac93174d2ab3af /src/Java/gtPlusPlus/xmod/tinkers/util/TinkersDryingRecipe.java | |
parent | a05fb3167179cbc25f006f825cd55638ce14d7fa (diff) | |
download | GT5-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/gtPlusPlus/xmod/tinkers/util/TinkersDryingRecipe.java')
-rw-r--r-- | src/Java/gtPlusPlus/xmod/tinkers/util/TinkersDryingRecipe.java | 93 |
1 files changed, 93 insertions, 0 deletions
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(); + } +} |