diff options
author | Jordan Byrne <draknyte1@hotmail.com> | 2018-03-18 20:27:42 +1000 |
---|---|---|
committer | Jordan Byrne <draknyte1@hotmail.com> | 2018-03-18 20:27:42 +1000 |
commit | 92c98220c875e40badcc6c504b0c53c059aa5d54 (patch) | |
tree | f530887578a0099e11d2377791877b8836a43f1c | |
parent | d545325fc2e750f6197fe11d7c1330d5c06ca614 (diff) | |
download | GT5-Unofficial-92c98220c875e40badcc6c504b0c53c059aa5d54.tar.gz GT5-Unofficial-92c98220c875e40badcc6c504b0c53c059aa5d54.tar.bz2 GT5-Unofficial-92c98220c875e40badcc6c504b0c53c059aa5d54.zip |
+ Added TC Aspect support to all Materials.
+ Added 5 custom TC Aspects.
$ Fixing Buggy name of Mini-Fusion Reactor.
7 files changed, 490 insertions, 4 deletions
diff --git a/src/Java/gtPlusPlus/core/material/Material.java b/src/Java/gtPlusPlus/core/material/Material.java index 93b03af96c..4fa17ec7aa 100644 --- a/src/Java/gtPlusPlus/core/material/Material.java +++ b/src/Java/gtPlusPlus/core/material/Material.java @@ -23,6 +23,7 @@ import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.core.util.minecraft.MaterialUtils; +import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_Aspects; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; @@ -71,6 +72,8 @@ public class Material { public long vDurability; public int vToolQuality; public int vHarvestLevel; + + private GTPP_Aspects[] vAspects; public static Map<Integer, Materials> invalidMaterials = new HashMap<Integer, Materials>(); @@ -180,6 +183,7 @@ public class Material { } + this.vAspects = null; this.vMass = this.getMass(); diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechMiniRaFusion.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechMiniRaFusion.java index 870af597ad..ac79c49aa7 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechMiniRaFusion.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechMiniRaFusion.java @@ -15,7 +15,7 @@ public class GregtechMiniRaFusion { //generateSlowFusionRecipes(); // Register the Simple Fusion Entity. //GregtechItemList.Miniature_Fusion.set(new GregtechMetaTileEntity_CompactFusionReactor(993, "simplefusion.tier.00", "Ra, Sun God - Mk I", 6).getStackForm(1L)); - GregtechItemList.Miniature_Fusion.set(new GT_MetaTileEntity_BasicMachine_GT_Recipe(993, "basicmachine.simplefusion.tier.01", "MÃmir", 8, "Universal Machine for Knowledge and Wisdom", Recipe_GT.Gregtech_Recipe_Map.sSlowFusion2Recipes, 2, 9, 64000, 0, 1, "Dehydrator.png", (String) GregTech_API.sSoundList.get(Integer.valueOf(208)), false, false, 0, "EXTRUDER", new Object[]{"CCE", "XMP", "CCE", 'M', GT_MetaTileEntity_BasicMachine_GT_Recipe.X.HULL, 'X', GT_MetaTileEntity_BasicMachine_GT_Recipe.X.SENSOR, 'E', GT_MetaTileEntity_BasicMachine_GT_Recipe.X.STICK_ELECTROMAGNETIC, 'P', GT_MetaTileEntity_BasicMachine_GT_Recipe.X.CIRCUIT, 'C', GT_MetaTileEntity_BasicMachine_GT_Recipe.X.FIELD_GENERATOR}).getStackForm(1L)); + GregtechItemList.Miniature_Fusion.set(new GT_MetaTileEntity_BasicMachine_GT_Recipe(993, "basicmachine.simplefusion.tier.01", "Mimir", 8, "Universal Machine for Knowledge and Wisdom", Recipe_GT.Gregtech_Recipe_Map.sSlowFusion2Recipes, 2, 9, 64000, 0, 1, "Dehydrator.png", (String) GregTech_API.sSoundList.get(Integer.valueOf(208)), false, false, 0, "EXTRUDER", new Object[]{"CCE", "XMP", "CCE", 'M', GT_MetaTileEntity_BasicMachine_GT_Recipe.X.HULL, 'X', GT_MetaTileEntity_BasicMachine_GT_Recipe.X.SENSOR, 'E', GT_MetaTileEntity_BasicMachine_GT_Recipe.X.STICK_ELECTROMAGNETIC, 'P', GT_MetaTileEntity_BasicMachine_GT_Recipe.X.CIRCUIT, 'C', GT_MetaTileEntity_BasicMachine_GT_Recipe.X.FIELD_GENERATOR}).getStackForm(1L)); run2(); Logger.INFO("[Pocket Fusion] Generated "+mRecipeCount+" recipes for the Pocket Fusion Reactor."); diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTieredChunkloaders.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTieredChunkloaders.java index b3fb4d36b1..84f0adc275 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTieredChunkloaders.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTieredChunkloaders.java @@ -8,7 +8,7 @@ import gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic.GregtechMetaT public class GregtechTieredChunkloaders { public static void run() { if (LoadedMods.Gregtech) { - Logger.INFO("Gregtech5u Content | Registering Portable Fluid Tanks."); + Logger.INFO("Gregtech5u Content | Registering Chunk Loaders."); run1(); } diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java b/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java index 5dec772d03..c9133902e3 100644 --- a/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java +++ b/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java @@ -1,10 +1,31 @@ package gtPlusPlus.xmod.thaumcraft; +import java.util.Arrays; +import java.util.List; + +import net.minecraft.item.ItemStack; + +import gregtech.api.enums.GT_Values; +import gregtech.api.enums.TC_Aspects.TC_AspectStack; +import gregtech.api.interfaces.internal.IThaumcraftCompat; +import gregtech.api.util.GT_Utility; + +import gtPlusPlus.api.objects.data.AutoMap; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.lib.LoadedMods; +import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_Aspects.TC_AspectStack_Ex; import gtPlusPlus.xmod.thaumcraft.common.block.TC_BlockHandler; +import gtPlusPlus.xmod.thaumcraft.util.ThaumcraftUtils; -public class HANDLER_Thaumcraft { +public class HANDLER_Thaumcraft { + public static IThaumcraftCompat sThaumcraftCompat; + public static final AutoMap<Pair<ItemStack, TC_AspectStack_Ex[]>> sItemsToGetAspects = new AutoMap<Pair<ItemStack, TC_AspectStack_Ex[]>>(); + + static { + sThaumcraftCompat = (IThaumcraftCompat) GT_Utility.callConstructor("gtPlusPlus.xmod.thaumcraft.aspect.GTPP_AspectCompat", 0, null, GT_Values.D1, new Object[0]); + } + public static void preInit(){ if (LoadedMods.Thaumcraft){ TC_BlockHandler.run(); @@ -19,7 +40,14 @@ public class HANDLER_Thaumcraft { public static void postInit(){ if (LoadedMods.Thaumcraft){ - + if (!sItemsToGetAspects.isEmpty()) { + for (Pair<ItemStack, TC_AspectStack_Ex[]> j : sItemsToGetAspects) { + if (j .getKey() != null && (j.getValue() != null && j.getValue().length > 0)) { + List<TC_AspectStack_Ex> list = Arrays.asList(j.getValue()); + ThaumcraftUtils.registerThaumcraftAspectsToItem(j.getKey(), list, true); + } + } + } } } diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java new file mode 100644 index 0000000000..34fa657bd7 --- /dev/null +++ b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java @@ -0,0 +1,148 @@ +package gtPlusPlus.xmod.thaumcraft.aspect; + +import gregtech.common.GT_ThaumcraftCompat; + +import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_Aspects.TC_AspectStack_Ex; +import gtPlusPlus.xmod.thaumcraft.util.ThaumcraftUtils; + +import gregtech.api.enums.TC_Aspects; +import gregtech.api.enums.TC_Aspects.TC_AspectStack; +import gregtech.api.interfaces.internal.IThaumcraftCompat; +import gregtech.api.util.GT_LanguageManager; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; + +public class GTPP_AspectCompat implements IThaumcraftCompat { + + public static volatile Method m = null; + + public GTPP_AspectCompat() { + // Standard Aspects + GTPP_Aspects.AER.mAspect = Aspect.AIR; + GTPP_Aspects.ALIENIS.mAspect = Aspect.ELDRITCH; + GTPP_Aspects.AQUA.mAspect = Aspect.WATER; + GTPP_Aspects.ARBOR.mAspect = Aspect.TREE; + GTPP_Aspects.AURAM.mAspect = Aspect.AURA; + GTPP_Aspects.BESTIA.mAspect = Aspect.BEAST; + GTPP_Aspects.COGNITIO.mAspect = Aspect.MIND; + GTPP_Aspects.CORPUS.mAspect = Aspect.FLESH; + GTPP_Aspects.EXANIMIS.mAspect = Aspect.UNDEAD; + GTPP_Aspects.FABRICO.mAspect = Aspect.CRAFT; + GTPP_Aspects.FAMES.mAspect = Aspect.HUNGER; + GTPP_Aspects.GELUM.mAspect = Aspect.COLD; + GTPP_Aspects.GRANUM.mAspect = Aspect.PLANT; + GTPP_Aspects.HERBA.mAspect = Aspect.PLANT; + GTPP_Aspects.HUMANUS.mAspect = Aspect.MAN; + GTPP_Aspects.IGNIS.mAspect = Aspect.FIRE; + GTPP_Aspects.INSTRUMENTUM.mAspect = Aspect.TOOL; + GTPP_Aspects.ITER.mAspect = Aspect.TRAVEL; + GTPP_Aspects.LIMUS.mAspect = Aspect.SLIME; + GTPP_Aspects.LUCRUM.mAspect = Aspect.GREED; + GTPP_Aspects.LUX.mAspect = Aspect.LIGHT; + GTPP_Aspects.MACHINA.mAspect = Aspect.MECHANISM; + GTPP_Aspects.MESSIS.mAspect = Aspect.CROP; + GTPP_Aspects.METALLUM.mAspect = Aspect.METAL; + GTPP_Aspects.METO.mAspect = Aspect.HARVEST; + GTPP_Aspects.MORTUUS.mAspect = Aspect.DEATH; + GTPP_Aspects.MOTUS.mAspect = Aspect.MOTION; + GTPP_Aspects.ORDO.mAspect = Aspect.ORDER; + GTPP_Aspects.PANNUS.mAspect = Aspect.CLOTH; + GTPP_Aspects.PERDITIO.mAspect = Aspect.ENTROPY; + GTPP_Aspects.PERFODIO.mAspect = Aspect.MINE; + GTPP_Aspects.PERMUTATIO.mAspect = Aspect.EXCHANGE; + GTPP_Aspects.POTENTIA.mAspect = Aspect.ENERGY; + GTPP_Aspects.PRAECANTATIO.mAspect = Aspect.MAGIC; + GTPP_Aspects.SANO.mAspect = Aspect.HEAL; + GTPP_Aspects.SENSUS.mAspect = Aspect.SENSES; + GTPP_Aspects.SPIRITUS.mAspect = Aspect.SOUL; + GTPP_Aspects.TELUM.mAspect = Aspect.WEAPON; + GTPP_Aspects.TERRA.mAspect = Aspect.EARTH; + GTPP_Aspects.TEMPESTAS.mAspect = Aspect.WEATHER; + GTPP_Aspects.TENEBRAE.mAspect = Aspect.DARKNESS; + GTPP_Aspects.TUTAMEN.mAspect = Aspect.ARMOR; + GTPP_Aspects.VACUOS.mAspect = Aspect.VOID; + GTPP_Aspects.VENENUM.mAspect = Aspect.POISON; + GTPP_Aspects.VICTUS.mAspect = Aspect.LIFE; + GTPP_Aspects.VINCULUM.mAspect = Aspect.TRAP; + GTPP_Aspects.VITIUM.mAspect = Aspect.TAINT; + GTPP_Aspects.VITREUS.mAspect = Aspect.CRYSTAL; + GTPP_Aspects.VOLATUS.mAspect = Aspect.FLIGHT; + GTPP_Aspects.STRONTIO.mAspect = (Aspect) TC_Aspects.STRONTIO.mAspect; + GTPP_Aspects.NEBRISUM.mAspect = (Aspect) TC_Aspects.NEBRISUM.mAspect; + GTPP_Aspects.ELECTRUM.mAspect = (Aspect) TC_Aspects.ELECTRUM.mAspect; + GTPP_Aspects.MAGNETO.mAspect = (Aspect) TC_Aspects.MAGNETO.mAspect; + GTPP_Aspects.RADIO.mAspect = (Aspect) TC_Aspects.RADIO.mAspect; + + // Custom Aspects + GTPP_Aspects.CUSTOM_1.mAspect = new Aspect("custom1", 15647411, new Aspect[]{Aspect.COLD, Aspect.FIRE}, + new ResourceLocation("gregtech:textures/aspects/" + TC_Aspects.RADIO.name() + ".png"), 1); + GTPP_Aspects.CUSTOM_2.mAspect = new Aspect("custom2", 15658622, new Aspect[]{Aspect.MAGIC, Aspect.SLIME}, + new ResourceLocation("gregtech:textures/aspects/" + TC_Aspects.RADIO.name() + ".png"), 1); + GTPP_Aspects.CUSTOM_3.mAspect = new Aspect("custom3", 12644078, new Aspect[]{Aspect.ENERGY, Aspect.ARMOR}, + new ResourceLocation("gregtech:textures/aspects/" + TC_Aspects.RADIO.name() + ".png"), 1); + GTPP_Aspects.CUSTOM_4.mAspect = new Aspect("custom4", 12632256, new Aspect[]{Aspect.METAL, Aspect.POISON}, + new ResourceLocation("gregtech:textures/aspects/" + TC_Aspects.RADIO.name() + ".png"), 1); + GTPP_Aspects.CUSTOM_5.mAspect = new Aspect("custom4", 12648384, new Aspect[]{Aspect.LIGHT, Aspect.SOUL}, + new ResourceLocation("gregtech:textures/aspects/" + TC_Aspects.RADIO.name() + ".png"), 1); + GT_LanguageManager.addStringLocalization("tc.aspect.custom1", "Balance"); + GT_LanguageManager.addStringLocalization("tc.aspect.custom2", "Lust"); + GT_LanguageManager.addStringLocalization("tc.aspect.custom3", "Starbound"); + GT_LanguageManager.addStringLocalization("tc.aspect.custom4", "Toxic"); + GT_LanguageManager.addStringLocalization("tc.aspect.custom5", "Heaven"); + } + + public static synchronized final AspectList getAspectList_Ex(final List<TC_AspectStack_Ex> aAspects) { + AspectList o = null; + try { + if (m == null || (m != null && !m.isAccessible())) { + m = GT_ThaumcraftCompat.class.getDeclaredMethod("getAspectList", List.class); + m.setAccessible(true); + } + if (m != null) { + o = (AspectList) m.invoke(null, aAspects); + } + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {} + return o; + } + + @Override + public boolean registerPortholeBlacklistedBlock(Block p0) { + return ThaumcraftUtils.registerPortholeBlacklistedBlock(p0); + } + + @Override + public boolean registerThaumcraftAspectsToItem(ItemStack p0, List<TC_AspectStack> p1, boolean p2) { + return ThaumcraftUtils.registerThaumcraftAspectsToItem(p0, ThaumcraftUtils.convertAspectStack(p1), p2); + } + + @Override + public boolean registerThaumcraftAspectsToItem(ItemStack p0, List<TC_AspectStack> p1, String p2) { + return ThaumcraftUtils.registerThaumcraftAspectsToItem(p0, ThaumcraftUtils.convertAspectStack(p1), p2); + } + + @Override + public Object addCrucibleRecipe(String p0, Object p1, ItemStack p2, List<TC_AspectStack> p3) { + return ThaumcraftUtils.addCrucibleRecipe(p0, p1, p2, ThaumcraftUtils.convertAspectStack(p3)); + } + + @Override + public Object addInfusionRecipe(String p0, ItemStack p1, ItemStack[] p2, ItemStack p3, int p4, List<TC_AspectStack> p5) { + return ThaumcraftUtils.addInfusionRecipe(p0, p1, p2, p3, p4, ThaumcraftUtils.convertAspectStack(p5)); + } + + @Override + public Object addResearch(String p0, String p1, String p2, String[] p3, String p4, ItemStack p5, int p6, int p7, + int p8, int p9, List<TC_AspectStack> p10, ItemStack[] p11, Object[] p12) { + return ThaumcraftUtils.addResearch(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, ThaumcraftUtils.convertAspectStack(p10), p11, p12); + } + +}
\ No newline at end of file diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_Aspects.java b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_Aspects.java new file mode 100644 index 0000000000..e1df0dabf5 --- /dev/null +++ b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_Aspects.java @@ -0,0 +1,77 @@ +package gtPlusPlus.xmod.thaumcraft.aspect; + +import java.util.List; + +import thaumcraft.api.aspects.Aspect; + +public enum GTPP_Aspects { + + //Standard TC and GT Aspects + AER(1), ALIENIS(20), AQUA(3), ARBOR(1), AURAM(16), BESTIA(6), + COGNITIO(2), CORPUS(2), ELECTRUM(24), EXANIMIS(32), FABRICO(2), + FAMES(2), GELUM(1), GRANUM(4), HERBA(2), HUMANUS(8), IGNIS(4), + INSTRUMENTUM(4), ITER(6), LIMUS(3), LUCRUM(32), LUX(4), MACHINA(16), + MAGNETO(24), MESSIS(3), METALLUM(8), METO(2), MORTUUS(16), MOTUS(4), + NEBRISUM(48), ORDO(8), PANNUS(6), PERDITIO(2), PERFODIO(4), + PERMUTATIO(12), POTENTIA(16), PRAECANTATIO(16), RADIO(48), + SANO(24), SENSUS(4), SPIRITUS(24), STRONTIO(64), TELUM(6), + TERRA(1), TEMPESTAS(64), TENEBRAE(24), TUTAMEN(12), VACUOS(6), + VENENUM(16), VICTUS(4), VINCULUM(16), VITIUM(48), VITREUS(3), VOLATUS(12), + + //Custom Aspects + CUSTOM_3(24), CUSTOM_4(24), CUSTOM_2(48), CUSTOM_5(48), CUSTOM_1(64); + + public Aspect mAspect; + public int mValue; + + private GTPP_Aspects(final int aValue) { + this.mValue = aValue; + } + + public static class TC_AspectStack_Ex { + public GTPP_Aspects mAspect; + public long mAmount; + + public TC_AspectStack_Ex(final GTPP_Aspects aAspect, final long aAmount) { + this.mAspect = aAspect; + this.mAmount = aAmount; + } + + public TC_AspectStack_Ex copy() { + return new TC_AspectStack_Ex(this.mAspect, this.mAmount); + } + + public TC_AspectStack_Ex copy(final long aAmount) { + return new TC_AspectStack_Ex(this.mAspect, aAmount); + } + + public List<TC_AspectStack_Ex> addToAspectList(final List<TC_AspectStack_Ex> aList) { + if (this.mAmount == 0L) { + return aList; + } + for (final TC_AspectStack_Ex tAspect : aList) { + if (tAspect.mAspect == this.mAspect) { + final TC_AspectStack_Ex tc_AspectStack = tAspect; + tc_AspectStack.mAmount += this.mAmount; + return aList; + } + } + aList.add(this.copy()); + return aList; + } + + public boolean removeFromAspectList(final List<TC_AspectStack_Ex> aList) { + for (final TC_AspectStack_Ex tAspect : aList) { + if (tAspect.mAspect == this.mAspect && tAspect.mAmount >= this.mAmount) { + final TC_AspectStack_Ex tc_AspectStack = tAspect; + tc_AspectStack.mAmount -= this.mAmount; + if (tAspect.mAmount == 0L) { + aList.remove(tAspect); + } + return true; + } + } + return false; + } + } +}
\ No newline at end of file diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java b/src/Java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java new file mode 100644 index 0000000000..baace5257c --- /dev/null +++ b/src/Java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java @@ -0,0 +1,229 @@ +package gtPlusPlus.xmod.thaumcraft.util; + +import static gtPlusPlus.xmod.thaumcraft.aspect.GTPP_AspectCompat.getAspectList_Ex; + +import java.util.*; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; + +import gregtech.api.GregTech_API; +import gregtech.api.enums.ConfigCategories; +import gregtech.api.enums.TC_Aspects.TC_AspectStack; +import gregtech.api.util.GT_LanguageManager; +import gregtech.api.util.GT_Utility; + +import gtPlusPlus.api.objects.data.Pair; +import gtPlusPlus.xmod.thaumcraft.HANDLER_Thaumcraft; +import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_Aspects; +import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_Aspects.TC_AspectStack_Ex; +import thaumcraft.api.ThaumcraftApi; +import thaumcraft.api.ThaumcraftApiHelper; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.crafting.*; +import thaumcraft.api.research.*; + +public class ThaumcraftUtils { + + public static boolean addAspectToItem(ItemStack item, Aspect aspect, int amount) { + return addAspectToItem(item, getEnumAspect(aspect.getName()), amount); + } + + /*public static boolean addAspectToItem(ItemStack item, Aspect[] aspects, int amount) { + return addAspectToItem(item, getEnumAspect(aspect.getName()), amount); + }*/ + + public static boolean addAspectToItem(ItemStack item, GTPP_Aspects aspect, int amount) { + return addAspectToItem(item, new GTPP_Aspects[] {aspect}, new Integer[] {amount}); + + } + + public static boolean addAspectToItem(ItemStack item, GTPP_Aspects[] aspect, Integer[] amounts) { + TC_AspectStack_Ex[] aspects = new TC_AspectStack_Ex[aspect.length]; + for (int g=0;g<aspect.length;g++) { + if (amounts[g] != null && amounts[g] > 0) { + aspects[g] = new TC_AspectStack_Ex(aspect[g], amounts[g]); + } + } + Pair<ItemStack, TC_AspectStack_Ex[]> k = new Pair<ItemStack, TC_AspectStack_Ex[]>(item, aspects); + HANDLER_Thaumcraft.sItemsToGetAspects.put(k); + return true; + } + + + public static Aspect getAspect(String name) { + GTPP_Aspects r = getAspectEnum(name); + return (r == null ? null : r.mAspect); + } + + public static GTPP_Aspects getEnumAspect(String name) { + GTPP_Aspects r = getAspectEnum(name); + return (r == null ? null : r); + } + + private static GTPP_Aspects getAspectEnum(String name) { + GTPP_Aspects h = null; + for (GTPP_Aspects f : GTPP_Aspects.values()) { + if (f.mAspect.getName().toLowerCase().contains(name.toLowerCase())) { + h = f; + } + } + return h; + } + + public static Object addResearch(String aResearch, String aName, String aText, String[] aParentResearches, String aCategory, ItemStack aIcon, int aComplexity, int aType, int aX, int aY, List<TC_AspectStack_Ex> aAspects, ItemStack[] aResearchTriggers, Object[] aPages) { + if (!GregTech_API.sRecipeFile.get(ConfigCategories.Recipes.researches, aResearch, true)) { + return null; + } + ResearchCategoryList tCategory = ResearchCategories.getResearchList(aCategory); + if (tCategory == null) { + return null; + } + for (Iterator<ResearchItem> i$ = tCategory.research.values().iterator(); i$.hasNext(); ) { + ResearchItem tResearch = (ResearchItem) i$.next(); + if ((tResearch.displayColumn == aX) && (tResearch.displayRow == aY)) { + aX += (aX > 0 ? 5 : -5); + aY += (aY > 0 ? 5 : -5); + } + } + ResearchItem rResearch = new ResearchItem(aResearch, aCategory, getAspectList_Ex(aAspects), aX, aY, aComplexity, aIcon); + ArrayList<ResearchPage> tPages = new ArrayList<ResearchPage>(aPages.length); + GT_LanguageManager.addStringLocalization("tc.research_name." + aResearch, aName); + GT_LanguageManager.addStringLocalization("tc.research_text." + aResearch, "[GT++] " + aText); + for (Object tPage : aPages) { + if ((tPage instanceof String)) { + tPages.add(new ResearchPage((String) tPage)); + } else if ((tPage instanceof IRecipe)) { + tPages.add(new ResearchPage((IRecipe) tPage)); + } else if ((tPage instanceof IArcaneRecipe)) { + tPages.add(new ResearchPage((IArcaneRecipe) tPage)); + } else if ((tPage instanceof CrucibleRecipe)) { + tPages.add(new ResearchPage((CrucibleRecipe) tPage)); + } else if ((tPage instanceof InfusionRecipe)) { + tPages.add(new ResearchPage((InfusionRecipe) tPage)); + } else if ((tPage instanceof InfusionEnchantmentRecipe)) { + tPages.add(new ResearchPage((InfusionEnchantmentRecipe) tPage)); + } + } + if ((aType & 0x40) != 0) { + rResearch.setAutoUnlock(); + } + if ((aType & 0x1) != 0) { + rResearch.setSecondary(); + } + if ((aType & 0x20) != 0) { + rResearch.setSpecial(); + } + if ((aType & 0x8) != 0) { + rResearch.setVirtual(); + } + if ((aType & 0x4) != 0) { + rResearch.setHidden(); + } + if ((aType & 0x10) != 0) { + rResearch.setRound(); + } + if ((aType & 0x2) != 0) { + rResearch.setStub(); + } + if (aParentResearches != null) { + ArrayList<String> tParentResearches = new ArrayList<String>(); + for (String tParent : aParentResearches) { + if (GregTech_API.sRecipeFile.get(ConfigCategories.Recipes.researches, aResearch, true)) { + tParentResearches.add(tParent); + } + } + if (tParentResearches.size() > 0) { + rResearch.setParents((String[]) tParentResearches.toArray(new String[tParentResearches.size()])); + rResearch.setConcealed(); + } + } + if (aResearchTriggers != null) { + rResearch.setItemTriggers(aResearchTriggers); + rResearch.setHidden(); + } + rResearch.setPages((ResearchPage[]) tPages.toArray(new ResearchPage[tPages.size()])); + return rResearch.registerResearchItem(); +} + + + public static Object addCrucibleRecipe(final String aResearch, final Object aInput, final ItemStack aOutput, + final List<TC_AspectStack_Ex> aAspects) { + if (GT_Utility.isStringInvalid((Object) aResearch) || aInput == null || aOutput == null || aAspects == null + || aAspects.isEmpty()) { + return null; + } + return ThaumcraftApi.addCrucibleRecipe(aResearch, GT_Utility.copy(new Object[]{aOutput}), + (aInput instanceof ItemStack || aInput instanceof ArrayList) ? aInput : aInput.toString(), + getAspectList_Ex(aAspects)); + } + + public static Object addInfusionRecipe(final String aResearch, final ItemStack aMainInput, final ItemStack[] aSideInputs, + final ItemStack aOutput, final int aInstability, final List<TC_AspectStack_Ex> aAspects) { + if (GT_Utility.isStringInvalid((Object) aResearch) || aMainInput == null || aSideInputs == null + || aOutput == null || aAspects == null || aAspects.isEmpty()) { + return null; + } + return ThaumcraftApi.addInfusionCraftingRecipe(aResearch, (Object) GT_Utility.copy(new Object[]{aOutput}), + aInstability, getAspectList_Ex(aAspects), aMainInput, aSideInputs); + } + + public static boolean registerThaumcraftAspectsToItem(final ItemStack aExampleStack, + final List<TC_AspectStack_Ex> aAspects, final String aOreDict) { + if (aAspects.isEmpty()) { + return false; + } + ThaumcraftApi.registerObjectTag(aOreDict, getAspectList_Ex(aAspects)); + return true; + } + + public static boolean registerThaumcraftAspectsToItem(final ItemStack aStack, + final List<TC_AspectStack_Ex> aAspects, final boolean aAdditive) { + if (aAspects.isEmpty()) { + return false; + } + if (aAdditive) { + ThaumcraftApi.registerComplexObjectTag(aStack, getAspectList_Ex(aAspects)); + return true; + } + final AspectList tAlreadyRegisteredAspects = ThaumcraftApiHelper.getObjectAspects(aStack); + if (tAlreadyRegisteredAspects == null || tAlreadyRegisteredAspects.size() <= 0) { + ThaumcraftApi.registerObjectTag(aStack, getAspectList_Ex(aAspects)); + } + return true; + } + + public static boolean registerPortholeBlacklistedBlock(final Block aBlock) { + ThaumcraftApi.portableHoleBlackList.add(aBlock); + return true; + } + + public static TC_AspectStack_Ex convertAspectStack(TC_AspectStack gtType) { + TC_AspectStack_Ex g = null; + if (gtType == null) { + return null; + } + else { + String oldName = gtType.mAspect.name().toLowerCase(); + long oldAmount = gtType.mAmount; + for (GTPP_Aspects r : GTPP_Aspects.values()) { + if (r.mAspect.getName().toLowerCase().contains(oldName)) { + g = new TC_AspectStack_Ex(r, oldAmount); + break; + } + } + } + return g; + } + + public static List<TC_AspectStack_Ex> convertAspectStack(List<TC_AspectStack> p5) { + List<TC_AspectStack_Ex> list = new ArrayList<TC_AspectStack_Ex>(); + for (TC_AspectStack h : p5) { + list.add(convertAspectStack(h)); + } + return list; + } + +} |