From 7d1f51a8937e0a86486267437d444696e81e8aa0 Mon Sep 17 00:00:00 2001 From: Jakub <53441451+kuba6000@users.noreply.github.com> Date: Mon, 29 Aug 2022 16:04:28 +0200 Subject: Buildscript + Spotless (#318) * Convert AES.java to readable class * Buildscript * Spotless --- .../xmod/thaumcraft/util/ThaumcraftUtils.java | 905 +++++++++++---------- 1 file changed, 474 insertions(+), 431 deletions(-) (limited to 'src/main/java/gtPlusPlus/xmod/thaumcraft/util') diff --git a/src/main/java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java index 4f1006693e..8489a4d50e 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java @@ -2,13 +2,6 @@ package gtPlusPlus.xmod.thaumcraft.util; import static gtPlusPlus.xmod.thaumcraft.HANDLER_Thaumcraft.sItemsToGetAspects; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - import gregtech.api.GregTech_API; import gregtech.api.enums.ConfigCategories; import gregtech.api.enums.TC_Aspects; @@ -30,6 +23,12 @@ import gtPlusPlus.xmod.thaumcraft.objects.wrapper.research.TC_ResearchCategoryLi import gtPlusPlus.xmod.thaumcraft.objects.wrapper.research.TC_ResearchItem_Wrapper; import gtPlusPlus.xmod.thaumcraft.objects.wrapper.research.TC_ResearchNoteData_Wrapper; import gtPlusPlus.xmod.thaumcraft.objects.wrapper.research.TC_ResearchPage_Wrapper; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; @@ -37,428 +36,472 @@ import net.minecraft.world.World; public class ThaumcraftUtils { - - private static Class mClass_Aspect; - private static Field mField_Aspects; - - static { - mClass_Aspect = ReflectionUtils.getClass("thaumcraft.api.aspects.Aspect"); - if (mClass_Aspect != null) { - Field aTagF = ReflectionUtils.getField(mClass_Aspect, "tag"); - if (aTagF != null) { - mField_Aspects = aTagF; - } - } - } - - public static boolean addAspectToItem(ItemStack item, TC_Aspect_Wrapper aspect, int amount) { - return addAspectToItem(item, new TC_Aspect_Wrapper[] {aspect}, new Integer[] {amount}); - - } - - public static boolean addAspectToItem(ItemStack item, TC_Aspect_Wrapper[] aspect, Integer[] amounts) { - GTPP_AspectStack[] aspects = new GTPP_AspectStack[aspect.length]; - for (int g=0;g 0) { - //aspects[g] = new GTPP_AspectStack(aspect[g], amounts[g]); - } - } - Pair k = new Pair(item, aspects); - int mSizeA = sItemsToGetAspects.size(); - sItemsToGetAspects.put(k); - if (sItemsToGetAspects.size() > mSizeA) { - Logger.MATERIALS("[Aspect] Successfully queued an ItemStack for Aspect addition."); - return true; - } - Logger.MATERIALS("[Aspect] Failed to queue an ItemStack for Aspect addition."); - //Logger.INFO("[Aspect] "); - return false; - } - - - public static TC_Aspect_Wrapper getAspect(String name) { - return TC_Aspect_Wrapper.getAspect(name); - } - - public static TC_Aspects getEnumAspect(String name) { - TC_Aspect_Wrapper r = getAspect(name); - return r.mGtEnumField; - } - - - - 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 aAspects, ItemStack[] aResearchTriggers, Object[] aPages) { - if (!GregTech_API.sRecipeFile.get(ConfigCategories.Recipes.researches, aResearch, true)) { - return null; - } - TC_ResearchCategoryList_Wrapper tCategory = TC_ResearchCategories_Wrapper.getResearchList(aCategory); - if (tCategory == null) { - return null; - } - for (Iterator i$ = tCategory.research.values().iterator(); i$.hasNext(); ) { - TC_ResearchItem_Wrapper tResearch = (TC_ResearchItem_Wrapper) i$.next(); - if ((tResearch.displayColumn == aX) && (tResearch.displayRow == aY)) { - aX += (aX > 0 ? 5 : -5); - aY += (aY > 0 ? 5 : -5); - } - } - TC_ResearchItem_Wrapper rResearch = new TC_ResearchItem_Wrapper(aResearch, aCategory, getAspectList_Ex(aAspects), aX, aY, aComplexity, aIcon); - ArrayList tPages = new ArrayList(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 TC_ResearchPage_Wrapper((String) tPage)); - } else if ((tPage instanceof IRecipe)) { - tPages.add(new TC_ResearchPage_Wrapper((IRecipe) tPage)); - } - else if ((tPage instanceof TC_IArcaneRecipe_Wrapper)) { - tPages.add(new TC_ResearchPage_Wrapper((TC_IArcaneRecipe_Wrapper) tPage)); - } else if ((tPage instanceof TC_CrucibleRecipe_Wrapper)) { - tPages.add(new TC_ResearchPage_Wrapper((TC_CrucibleRecipe_Wrapper) tPage)); - } else if ((tPage instanceof TC_InfusionRecipe_Wrapper)) { - tPages.add(new TC_ResearchPage_Wrapper((TC_InfusionRecipe_Wrapper) tPage)); - } else if ((tPage instanceof TC_InfusionEnchantmentRecipe_Wrapper)) { - tPages.add(new TC_ResearchPage_Wrapper((TC_InfusionEnchantmentRecipe_Wrapper) 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 tParentResearches = new ArrayList(); - 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(); - } - - Object[] aVarArgs = (TC_ResearchPage_Wrapper[]) tPages.toArray(new TC_ResearchPage_Wrapper[tPages.size()]); - rResearch.setPages(aVarArgs); - return rResearch.registerResearchItem(); - } - - - public static Object addCrucibleRecipe(final String aResearch, final Object aInput, final ItemStack aOutput, - final List aAspects) { - if (GT_Utility.isStringInvalid((Object) aResearch) || aInput == null || aOutput == null || aAspects == null - || aAspects.isEmpty()) { - return null; - } - return 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 aAspects) { - if (GT_Utility.isStringInvalid((Object) aResearch) || aMainInput == null || aSideInputs == null - || aOutput == null || aAspects == null || aAspects.isEmpty()) { - return null; - } - return addInfusionCraftingRecipe(aResearch, (Object) GT_Utility.copy(new Object[]{aOutput}), - aInstability, getAspectList_Ex(aAspects), aMainInput, aSideInputs); - } - - public static boolean registerThaumcraftAspectsToItem(final ItemStack aExampleStack, - final List aAspects, final String aOreDict) { - if (aAspects.isEmpty()) { - return false; - } - registerObjectTag(aOreDict, getAspectList_Ex(aAspects)); - return true; - } - - public static boolean registerThaumcraftAspectsToItem(final ItemStack aStack, - final List aAspects, final boolean aAdditive) { - try { - if (aAspects.isEmpty()) { - return false; - } - TC_AspectList_Wrapper h = getAspectList_Ex(aAspects); - if (aAdditive && (h != null && h.size() > 0)) { - registerComplexObjectTag(aStack, getAspectList_Ex(aAspects)); - return true; - } - else { - Logger.MATERIALS("[Aspect] Failed adding aspects to "+aStack.getDisplayName()+"."); - } - final TC_AspectList_Wrapper tAlreadyRegisteredAspects = getObjectAspects(aStack); - if (tAlreadyRegisteredAspects == null || tAlreadyRegisteredAspects.size() <= 0) { - registerObjectTag(aStack, getAspectList_Ex(aAspects)); - } - return true; - } - catch (Throwable t) { - Logger.MATERIALS("[Aspect] Failed adding aspects to "+aStack.getDisplayName()+"."); - t.printStackTrace(); - return false; - } - } - - - private static final Class mClass_ThaumcraftApi; - private static final Class mClass_ThaumcraftApiHelper; - private static final Class mClass_AspectList; - private static final Class mClass_ResearchManager; - private static final Method mMethod_registerObjectTag1; - private static final Method mMethod_registerObjectTag2; - private static final Method mMethod_registerComplexObjectTag; - private static final Method mMethod_addInfusionCraftingRecipe; - private static final Method mMethod_addCrucibleRecipe; - private static final Method mMethod_getObjectAspects; - private static final Method mMethod_updateData; - private static final Method mMethod_getData; - - private static final Field mField_PortholeBlacklist; - static { - /* - * Classes - */ - mClass_ThaumcraftApi = ReflectionUtils.getClass("thaumcraft.api.ThaumcraftApi"); - mClass_ThaumcraftApiHelper = ReflectionUtils.getClass("thaumcraft.api.ThaumcraftApiHelper"); - mClass_AspectList = ReflectionUtils.getClass("thaumcraft.api.aspects.AspectList"); - mClass_ResearchManager = ReflectionUtils.getClass("thaumcraft.common.lib.research.ResearchManager"); - - /* - * Methods - */ - mMethod_registerObjectTag1 = ReflectionUtils.getMethod(mClass_ThaumcraftApi, "registerObjectTag", - ItemStack.class, mClass_AspectList); - - mMethod_registerObjectTag2 = ReflectionUtils.getMethod(mClass_ThaumcraftApi, "registerObjectTag", String.class, - mClass_AspectList); - - mMethod_registerComplexObjectTag = ReflectionUtils.getMethod(mClass_ThaumcraftApi, "registerComplexObjectTag", - ItemStack.class, mClass_AspectList); - - mMethod_addInfusionCraftingRecipe = ReflectionUtils.getMethod(mClass_ThaumcraftApi, "addInfusionCraftingRecipe", - String.class, Object.class, int.class, mClass_AspectList, ItemStack.class, ItemStack[].class); - - mMethod_addCrucibleRecipe = ReflectionUtils.getMethod(mClass_ThaumcraftApi, "addCrucibleRecipe", String.class, - ItemStack.class, Object.class, mClass_AspectList); - - - mMethod_getObjectAspects = ReflectionUtils.getMethod(mClass_ThaumcraftApiHelper, "getObjectAspects", ItemStack.class); - - - mMethod_updateData = ReflectionUtils.getMethod(mClass_ResearchManager, "updateData", ItemStack.class, ReflectionUtils.getClass("thaumcraft.common.lib.research.ResearchNoteData")); - mMethod_getData = ReflectionUtils.getMethod(mClass_ResearchManager, "getData", ItemStack.class); - - /* - * Fields - */ - mField_PortholeBlacklist = ReflectionUtils.getField(mClass_ThaumcraftApi, "portableHoleBlackList"); - - } - - public static void registerObjectTag(ItemStack aStack, TC_AspectList_Wrapper aAspectList) { - try { - mMethod_registerObjectTag1.invoke(null, aStack, aAspectList.getVanillaAspectList()); - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - e.printStackTrace(); - } - } - - public static void registerObjectTag(String aOreDict, TC_AspectList_Wrapper aAspectList) { - try { - mMethod_registerObjectTag2.invoke(null, aOreDict, aAspectList.getVanillaAspectList()); - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - e.printStackTrace(); - } - } - - public static void registerComplexObjectTag(ItemStack aStack, TC_AspectList_Wrapper aAspectList) { - try { - mMethod_registerComplexObjectTag.invoke(null, aStack, aAspectList.getVanillaAspectList()); - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - e.printStackTrace(); - } - } - - - public static TC_AspectList_Wrapper getObjectAspects(ItemStack aStack) { - try { - return new TC_AspectList_Wrapper(mMethod_getObjectAspects.invoke(null, aStack)); - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - e.printStackTrace(); - } - return null; - } - - - - public static Object addCrucibleRecipe(String aResearch, ItemStack copy, Object aOutput, - TC_AspectList_Wrapper aAspectList) { - try { - return mMethod_addCrucibleRecipe.invoke(null, aResearch, copy, aOutput, aAspectList); - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - e.printStackTrace(); - } - return null; - } - - public static Object addInfusionCraftingRecipe(String aResearch, Object copy, int aInstability, - TC_AspectList_Wrapper aAspectList, ItemStack aMainInput, ItemStack[] aSideInputs) { - try { - return mMethod_addInfusionCraftingRecipe.invoke(null, aResearch, copy, aInstability, aAspectList, aMainInput, aSideInputs); - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - e.printStackTrace(); - } - return null; - } - - - public static boolean registerPortholeBlacklistedBlock(final Block aBlock) { - try { - ((ArrayList) mField_PortholeBlacklist.get(null)).add(aBlock); - } catch (IllegalArgumentException | IllegalAccessException e) { - e.printStackTrace(); - return false; - } - return true; - } - - - public static String getTagFromAspectObject(Object aAspect) { - try { - if (mClass_Aspect == null || mField_Aspects == null) { - return null; - } - String aTafB = (String) mField_Aspects.get(aAspect); - if (aTafB == null) { - return null; - } - String aTag = aTafB.toLowerCase(); - return aTag; - } catch (IllegalArgumentException | IllegalAccessException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - return "error"; - } - } - - - public static void updateResearchNote(ItemStack a, TC_ResearchNoteData_Wrapper b) { - //updateData(a, b.getResearchNoteData()); - try { - mMethod_updateData.invoke(a, b.getResearchNoteData()); - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - e.printStackTrace(); - } - } - - public static Object getResearchNoteData(ItemStack a) { - //getData(a); - try { - return mMethod_getData.invoke(a); - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - e.printStackTrace(); - } - return null; - } - - public static boolean isItemResearchNotes(ItemStack aStack) { - if (aStack != null && aStack.getItem() == HANDLER_Thaumcraft.mResearchNotes && HANDLER_Thaumcraft.mResearchNotes.getClass().isInstance(aStack.getItem())) { - return true; - } - return false; - } - - public static boolean isItemStackValidResearchNotes(ItemStack aStack) { - if (isItemResearchNotes(aStack) && aStack.getItemDamage() < 64) { - return true; - } - return false; - } - - public static TC_ResearchNoteData_Wrapper gatherResults(ItemStack note) { - TC_ResearchNoteData_Wrapper research = null; - if (isItemResearchNotes(note)) { - research = new TC_ResearchNoteData_Wrapper(getResearchNoteData(note)); - } - return research; - } - - public static void placeAspectIntoResearchNote(ItemStack note, World aWorld, final int q, final int r, final TC_Aspect_Wrapper aspect) { - /*TC_ResearchNoteData_Wrapper data = gatherResults(note); - String mGTPP = CORE.gameProfile.getName(); - EntityPlayer player = CORE.getFakePlayer(aWorld); - - if (isItemResearchNotes(note) && data != null && note.getItemDamage() < 64) { - final boolean r2 = ResearchManager.isResearchComplete(mGTPP, "RESEARCHER1"); - final boolean r3 = ResearchManager.isResearchComplete(mGTPP, "RESEARCHER2"); - final HexUtils.Hex hex = new HexUtils.Hex(q, r); - ResearchManager.HexEntry he = null; - if (aspect != null) { - he = new ResearchManager.HexEntry(aspect, 2); - if (r3 && aWorld.rand.nextFloat() < 0.1f) { - aWorld.playSoundAtEntity((Entity) player, "random.orb", 0.2f, 0.9f + player.worldObj.rand.nextFloat() * 0.2f); - } - } else { - final float f = aWorld.rand.nextFloat(); - if (data.hexEntries.get(hex.toString()).aspect != null - && ((r2 && f < 0.25f) || (r3 && f < 0.5f))) { - aWorld.playSoundAtEntity((Entity) player, "random.orb", 0.2f, - 0.9f + player.worldObj.rand.nextFloat() * 0.2f); - ResearchManager.scheduleSave(player); - } - he = new ResearchManager.HexEntry((Aspect) null, 0); - } - data.hexEntries.put(hex.toString(), he); - data.hexes.put(hex.toString(), hex); - updateResearchNote(note, data); - if (!aWorld.isRemote && ResearchManager.checkResearchCompletion(note, data, player.getCommandSenderName())) { - note.setItemDamage(64); - } - }*/ - } - - public static void completeResearchNote(World aWorld, ItemStack aStack) { - if (!aWorld.isRemote) { - if (isItemResearchNotes(aStack)) { - aStack.setItemDamage(64); - } - } - } - - public static synchronized final TC_AspectList_Wrapper getAspectList_Ex(final List aAspects) { - final TC_AspectList_Wrapper rAspects = new TC_AspectList_Wrapper(); - for (final GTPP_AspectStack tAspect : aAspects) { - rAspects.add(tAspect.mAspect, tAspect.mAmount); - } - return rAspects; - } - - public static void addResearch(TC_ResearchItem_Wrapper tc_ResearchItem_Wrapper) { - // TODO Auto-generated method stub - - } + private static Class mClass_Aspect; + private static Field mField_Aspects; + + static { + mClass_Aspect = ReflectionUtils.getClass("thaumcraft.api.aspects.Aspect"); + if (mClass_Aspect != null) { + Field aTagF = ReflectionUtils.getField(mClass_Aspect, "tag"); + if (aTagF != null) { + mField_Aspects = aTagF; + } + } + } + + public static boolean addAspectToItem(ItemStack item, TC_Aspect_Wrapper aspect, int amount) { + return addAspectToItem(item, new TC_Aspect_Wrapper[] {aspect}, new Integer[] {amount}); + } + + public static boolean addAspectToItem(ItemStack item, TC_Aspect_Wrapper[] aspect, Integer[] amounts) { + GTPP_AspectStack[] aspects = new GTPP_AspectStack[aspect.length]; + for (int g = 0; g < aspect.length; g++) { + if (amounts[g] != null && amounts[g] > 0) { + // aspects[g] = new GTPP_AspectStack(aspect[g], amounts[g]); + } + } + Pair k = new Pair(item, aspects); + int mSizeA = sItemsToGetAspects.size(); + sItemsToGetAspects.put(k); + if (sItemsToGetAspects.size() > mSizeA) { + Logger.MATERIALS("[Aspect] Successfully queued an ItemStack for Aspect addition."); + return true; + } + Logger.MATERIALS("[Aspect] Failed to queue an ItemStack for Aspect addition."); + // Logger.INFO("[Aspect] "); + return false; + } + + public static TC_Aspect_Wrapper getAspect(String name) { + return TC_Aspect_Wrapper.getAspect(name); + } + + public static TC_Aspects getEnumAspect(String name) { + TC_Aspect_Wrapper r = getAspect(name); + return r.mGtEnumField; + } + + 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 aAspects, + ItemStack[] aResearchTriggers, + Object[] aPages) { + if (!GregTech_API.sRecipeFile.get(ConfigCategories.Recipes.researches, aResearch, true)) { + return null; + } + TC_ResearchCategoryList_Wrapper tCategory = TC_ResearchCategories_Wrapper.getResearchList(aCategory); + if (tCategory == null) { + return null; + } + for (Iterator i$ = tCategory.research.values().iterator(); i$.hasNext(); ) { + TC_ResearchItem_Wrapper tResearch = (TC_ResearchItem_Wrapper) i$.next(); + if ((tResearch.displayColumn == aX) && (tResearch.displayRow == aY)) { + aX += (aX > 0 ? 5 : -5); + aY += (aY > 0 ? 5 : -5); + } + } + TC_ResearchItem_Wrapper rResearch = new TC_ResearchItem_Wrapper( + aResearch, aCategory, getAspectList_Ex(aAspects), aX, aY, aComplexity, aIcon); + ArrayList tPages = new ArrayList(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 TC_ResearchPage_Wrapper((String) tPage)); + } else if ((tPage instanceof IRecipe)) { + tPages.add(new TC_ResearchPage_Wrapper((IRecipe) tPage)); + } else if ((tPage instanceof TC_IArcaneRecipe_Wrapper)) { + tPages.add(new TC_ResearchPage_Wrapper((TC_IArcaneRecipe_Wrapper) tPage)); + } else if ((tPage instanceof TC_CrucibleRecipe_Wrapper)) { + tPages.add(new TC_ResearchPage_Wrapper((TC_CrucibleRecipe_Wrapper) tPage)); + } else if ((tPage instanceof TC_InfusionRecipe_Wrapper)) { + tPages.add(new TC_ResearchPage_Wrapper((TC_InfusionRecipe_Wrapper) tPage)); + } else if ((tPage instanceof TC_InfusionEnchantmentRecipe_Wrapper)) { + tPages.add(new TC_ResearchPage_Wrapper((TC_InfusionEnchantmentRecipe_Wrapper) 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 tParentResearches = new ArrayList(); + 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(); + } + + Object[] aVarArgs = (TC_ResearchPage_Wrapper[]) tPages.toArray(new TC_ResearchPage_Wrapper[tPages.size()]); + rResearch.setPages(aVarArgs); + return rResearch.registerResearchItem(); + } + + public static Object addCrucibleRecipe( + final String aResearch, + final Object aInput, + final ItemStack aOutput, + final List aAspects) { + if (GT_Utility.isStringInvalid((Object) aResearch) + || aInput == null + || aOutput == null + || aAspects == null + || aAspects.isEmpty()) { + return null; + } + return 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 aAspects) { + if (GT_Utility.isStringInvalid((Object) aResearch) + || aMainInput == null + || aSideInputs == null + || aOutput == null + || aAspects == null + || aAspects.isEmpty()) { + return null; + } + return addInfusionCraftingRecipe( + aResearch, + (Object) GT_Utility.copy(new Object[] {aOutput}), + aInstability, + getAspectList_Ex(aAspects), + aMainInput, + aSideInputs); + } + + public static boolean registerThaumcraftAspectsToItem( + final ItemStack aExampleStack, final List aAspects, final String aOreDict) { + if (aAspects.isEmpty()) { + return false; + } + registerObjectTag(aOreDict, getAspectList_Ex(aAspects)); + return true; + } + + public static boolean registerThaumcraftAspectsToItem( + final ItemStack aStack, final List aAspects, final boolean aAdditive) { + try { + if (aAspects.isEmpty()) { + return false; + } + TC_AspectList_Wrapper h = getAspectList_Ex(aAspects); + if (aAdditive && (h != null && h.size() > 0)) { + registerComplexObjectTag(aStack, getAspectList_Ex(aAspects)); + return true; + } else { + Logger.MATERIALS("[Aspect] Failed adding aspects to " + aStack.getDisplayName() + "."); + } + final TC_AspectList_Wrapper tAlreadyRegisteredAspects = getObjectAspects(aStack); + if (tAlreadyRegisteredAspects == null || tAlreadyRegisteredAspects.size() <= 0) { + registerObjectTag(aStack, getAspectList_Ex(aAspects)); + } + return true; + } catch (Throwable t) { + Logger.MATERIALS("[Aspect] Failed adding aspects to " + aStack.getDisplayName() + "."); + t.printStackTrace(); + return false; + } + } + + private static final Class mClass_ThaumcraftApi; + private static final Class mClass_ThaumcraftApiHelper; + private static final Class mClass_AspectList; + private static final Class mClass_ResearchManager; + private static final Method mMethod_registerObjectTag1; + private static final Method mMethod_registerObjectTag2; + private static final Method mMethod_registerComplexObjectTag; + private static final Method mMethod_addInfusionCraftingRecipe; + private static final Method mMethod_addCrucibleRecipe; + private static final Method mMethod_getObjectAspects; + private static final Method mMethod_updateData; + private static final Method mMethod_getData; + + private static final Field mField_PortholeBlacklist; + + static { + /* + * Classes + */ + mClass_ThaumcraftApi = ReflectionUtils.getClass("thaumcraft.api.ThaumcraftApi"); + mClass_ThaumcraftApiHelper = ReflectionUtils.getClass("thaumcraft.api.ThaumcraftApiHelper"); + mClass_AspectList = ReflectionUtils.getClass("thaumcraft.api.aspects.AspectList"); + mClass_ResearchManager = ReflectionUtils.getClass("thaumcraft.common.lib.research.ResearchManager"); + + /* + * Methods + */ + mMethod_registerObjectTag1 = ReflectionUtils.getMethod( + mClass_ThaumcraftApi, "registerObjectTag", ItemStack.class, mClass_AspectList); + + mMethod_registerObjectTag2 = + ReflectionUtils.getMethod(mClass_ThaumcraftApi, "registerObjectTag", String.class, mClass_AspectList); + + mMethod_registerComplexObjectTag = ReflectionUtils.getMethod( + mClass_ThaumcraftApi, "registerComplexObjectTag", ItemStack.class, mClass_AspectList); + + mMethod_addInfusionCraftingRecipe = ReflectionUtils.getMethod( + mClass_ThaumcraftApi, + "addInfusionCraftingRecipe", + String.class, + Object.class, + int.class, + mClass_AspectList, + ItemStack.class, + ItemStack[].class); + + mMethod_addCrucibleRecipe = ReflectionUtils.getMethod( + mClass_ThaumcraftApi, + "addCrucibleRecipe", + String.class, + ItemStack.class, + Object.class, + mClass_AspectList); + + mMethod_getObjectAspects = + ReflectionUtils.getMethod(mClass_ThaumcraftApiHelper, "getObjectAspects", ItemStack.class); + + mMethod_updateData = ReflectionUtils.getMethod( + mClass_ResearchManager, + "updateData", + ItemStack.class, + ReflectionUtils.getClass("thaumcraft.common.lib.research.ResearchNoteData")); + mMethod_getData = ReflectionUtils.getMethod(mClass_ResearchManager, "getData", ItemStack.class); + + /* + * Fields + */ + mField_PortholeBlacklist = ReflectionUtils.getField(mClass_ThaumcraftApi, "portableHoleBlackList"); + } + + public static void registerObjectTag(ItemStack aStack, TC_AspectList_Wrapper aAspectList) { + try { + mMethod_registerObjectTag1.invoke(null, aStack, aAspectList.getVanillaAspectList()); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + e.printStackTrace(); + } + } + + public static void registerObjectTag(String aOreDict, TC_AspectList_Wrapper aAspectList) { + try { + mMethod_registerObjectTag2.invoke(null, aOreDict, aAspectList.getVanillaAspectList()); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + e.printStackTrace(); + } + } + + public static void registerComplexObjectTag(ItemStack aStack, TC_AspectList_Wrapper aAspectList) { + try { + mMethod_registerComplexObjectTag.invoke(null, aStack, aAspectList.getVanillaAspectList()); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + e.printStackTrace(); + } + } + + public static TC_AspectList_Wrapper getObjectAspects(ItemStack aStack) { + try { + return new TC_AspectList_Wrapper(mMethod_getObjectAspects.invoke(null, aStack)); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + e.printStackTrace(); + } + return null; + } + + public static Object addCrucibleRecipe( + String aResearch, ItemStack copy, Object aOutput, TC_AspectList_Wrapper aAspectList) { + try { + return mMethod_addCrucibleRecipe.invoke(null, aResearch, copy, aOutput, aAspectList); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + e.printStackTrace(); + } + return null; + } + + public static Object addInfusionCraftingRecipe( + String aResearch, + Object copy, + int aInstability, + TC_AspectList_Wrapper aAspectList, + ItemStack aMainInput, + ItemStack[] aSideInputs) { + try { + return mMethod_addInfusionCraftingRecipe.invoke( + null, aResearch, copy, aInstability, aAspectList, aMainInput, aSideInputs); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + e.printStackTrace(); + } + return null; + } + + public static boolean registerPortholeBlacklistedBlock(final Block aBlock) { + try { + ((ArrayList) mField_PortholeBlacklist.get(null)).add(aBlock); + } catch (IllegalArgumentException | IllegalAccessException e) { + e.printStackTrace(); + return false; + } + return true; + } + + public static String getTagFromAspectObject(Object aAspect) { + try { + if (mClass_Aspect == null || mField_Aspects == null) { + return null; + } + String aTafB = (String) mField_Aspects.get(aAspect); + if (aTafB == null) { + return null; + } + String aTag = aTafB.toLowerCase(); + return aTag; + } catch (IllegalArgumentException | IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return "error"; + } + } + + public static void updateResearchNote(ItemStack a, TC_ResearchNoteData_Wrapper b) { + // updateData(a, b.getResearchNoteData()); + try { + mMethod_updateData.invoke(a, b.getResearchNoteData()); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + e.printStackTrace(); + } + } + + public static Object getResearchNoteData(ItemStack a) { + // getData(a); + try { + return mMethod_getData.invoke(a); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + e.printStackTrace(); + } + return null; + } + + public static boolean isItemResearchNotes(ItemStack aStack) { + if (aStack != null + && aStack.getItem() == HANDLER_Thaumcraft.mResearchNotes + && HANDLER_Thaumcraft.mResearchNotes.getClass().isInstance(aStack.getItem())) { + return true; + } + return false; + } + + public static boolean isItemStackValidResearchNotes(ItemStack aStack) { + if (isItemResearchNotes(aStack) && aStack.getItemDamage() < 64) { + return true; + } + return false; + } + + public static TC_ResearchNoteData_Wrapper gatherResults(ItemStack note) { + TC_ResearchNoteData_Wrapper research = null; + if (isItemResearchNotes(note)) { + research = new TC_ResearchNoteData_Wrapper(getResearchNoteData(note)); + } + return research; + } + + public static void placeAspectIntoResearchNote( + ItemStack note, World aWorld, final int q, final int r, final TC_Aspect_Wrapper aspect) { + /*TC_ResearchNoteData_Wrapper data = gatherResults(note); + String mGTPP = CORE.gameProfile.getName(); + EntityPlayer player = CORE.getFakePlayer(aWorld); + + if (isItemResearchNotes(note) && data != null && note.getItemDamage() < 64) { + final boolean r2 = ResearchManager.isResearchComplete(mGTPP, "RESEARCHER1"); + final boolean r3 = ResearchManager.isResearchComplete(mGTPP, "RESEARCHER2"); + final HexUtils.Hex hex = new HexUtils.Hex(q, r); + ResearchManager.HexEntry he = null; + if (aspect != null) { + he = new ResearchManager.HexEntry(aspect, 2); + if (r3 && aWorld.rand.nextFloat() < 0.1f) { + aWorld.playSoundAtEntity((Entity) player, "random.orb", 0.2f, 0.9f + player.worldObj.rand.nextFloat() * 0.2f); + } + } else { + final float f = aWorld.rand.nextFloat(); + if (data.hexEntries.get(hex.toString()).aspect != null + && ((r2 && f < 0.25f) || (r3 && f < 0.5f))) { + aWorld.playSoundAtEntity((Entity) player, "random.orb", 0.2f, + 0.9f + player.worldObj.rand.nextFloat() * 0.2f); + ResearchManager.scheduleSave(player); + } + he = new ResearchManager.HexEntry((Aspect) null, 0); + } + data.hexEntries.put(hex.toString(), he); + data.hexes.put(hex.toString(), hex); + updateResearchNote(note, data); + if (!aWorld.isRemote && ResearchManager.checkResearchCompletion(note, data, player.getCommandSenderName())) { + note.setItemDamage(64); + } + }*/ + } + + public static void completeResearchNote(World aWorld, ItemStack aStack) { + if (!aWorld.isRemote) { + if (isItemResearchNotes(aStack)) { + aStack.setItemDamage(64); + } + } + } + + public static final synchronized TC_AspectList_Wrapper getAspectList_Ex(final List aAspects) { + final TC_AspectList_Wrapper rAspects = new TC_AspectList_Wrapper(); + for (final GTPP_AspectStack tAspect : aAspects) { + rAspects.add(tAspect.mAspect, tAspect.mAmount); + } + return rAspects; + } + + public static void addResearch(TC_ResearchItem_Wrapper tc_ResearchItem_Wrapper) { + // TODO Auto-generated method stub + + } } -- cgit