diff options
| author | Martin Robertz <dream-master@gmx.net> | 2021-12-15 16:11:54 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-15 16:11:54 +0100 |
| commit | 128c74faa99dfef8d056c1d82c6e4388b9d470e8 (patch) | |
| tree | 2c84162154ba681232f86dffd4106db530236814 /src/Java/gtPlusPlus/xmod/thaumcraft | |
| parent | 47ce336f288a45aa3244c8ae1177499fa5080942 (diff) | |
| parent | ff4b8c7068c2ea7d654e9beda00646d23e62b314 (diff) | |
| download | GT5-Unofficial-128c74faa99dfef8d056c1d82c6e4388b9d470e8.tar.gz GT5-Unofficial-128c74faa99dfef8d056c1d82c6e4388b9d470e8.tar.bz2 GT5-Unofficial-128c74faa99dfef8d056c1d82c6e4388b9d470e8.zip | |
Merge pull request #65 from GTNewHorizons/unified-build-script2
Move sources and resources
Diffstat (limited to 'src/Java/gtPlusPlus/xmod/thaumcraft')
19 files changed, 0 insertions, 2054 deletions
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java b/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java deleted file mode 100644 index b1353cc481..0000000000 --- a/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java +++ /dev/null @@ -1,59 +0,0 @@ -package gtPlusPlus.xmod.thaumcraft; - -import gtPlusPlus.api.objects.data.AutoMap; -import gtPlusPlus.api.objects.data.Pair; -import gtPlusPlus.core.lib.LoadedMods; -import gtPlusPlus.core.util.reflect.ReflectionUtils; -import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_AspectCompat; -import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_AspectStack; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -public class HANDLER_Thaumcraft { - - public static GTPP_AspectCompat sThaumcraftCompat; - public static Item mResearchNotes; - public static final AutoMap<Pair<ItemStack, GTPP_AspectStack[]>> sItemsToGetAspects = new AutoMap<Pair<ItemStack, GTPP_AspectStack[]>>(); - - public static void preInit(){ - if (LoadedMods.Thaumcraft){ - } - } - - public static void init(){ - if (LoadedMods.Thaumcraft){ - try { - mResearchNotes = (Item) ReflectionUtils.getField(ReflectionUtils.getClass("thaumcraft.common.config.ConfigItems"), "itemResearchNotes").get(null); - } - catch (IllegalArgumentException | IllegalAccessException e) { - mResearchNotes = Items.paper; - } - } - } - - public static void postInit(){ - if (LoadedMods.Thaumcraft){ - //Add Custom Aspects - - - //sThaumcraftCompat = (IThaumcraftCompat) GT_Utility.callConstructor("gtPlusPlus.xmod.thaumcraft.aspect.GTPP_AspectCompat", 0, null, GT_Values.D1, new Object[0]); - //sThaumcraftCompat = new GTPP_AspectCompat(); - - /*if (!sItemsToGetAspects.isEmpty() && false) { - for (Pair<ItemStack, GTPP_AspectStack[]> j : sItemsToGetAspects) { - if (j .getKey() != null && (j.getValue() != null && j.getValue().length > 0)) { - List<GTPP_AspectStack> list = Arrays.asList(j.getValue()); - if (ThaumcraftUtils.registerThaumcraftAspectsToItem(j.getKey(), list, true)) { - Logger.WARNING("[Aspect] Successfully added Aspects to "+j.getKey().getDisplayName()+"."); - } - else { - Logger.WARNING("[Aspect] Failed adding Aspects to "+j.getKey().getDisplayName()+"."); - } - } - } - }*/ - } - } - -} diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java deleted file mode 100644 index 56ad95c5e3..0000000000 --- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java +++ /dev/null @@ -1,200 +0,0 @@ -package gtPlusPlus.xmod.thaumcraft.aspect; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; - -import gregtech.api.enums.TC_Aspects; -import gregtech.common.GT_ThaumcraftCompat; -import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.util.Utils; -import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_AspectList_Wrapper; -import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_Aspect_Wrapper; -import net.minecraft.util.ResourceLocation; - -public class GTPP_AspectCompat { - - public static volatile Method m = null; - - private static HashMap<String, TC_Aspect_Wrapper> mAspectCache = new LinkedHashMap<String, TC_Aspect_Wrapper>(); - - - public static TC_Aspect_Wrapper ASPECT_BALANCE; - public static TC_Aspect_Wrapper ASPECT_LUST; - public static TC_Aspect_Wrapper ASPECT_STARBOUND; - public static TC_Aspect_Wrapper ASPECT_TOXIC; - public static TC_Aspect_Wrapper ASPECT_HEAVEN; - - -/* TC_Aspects.AER.mAspect = Aspect.AIR; - TC_Aspects.ALIENIS.mAspect = Aspect.ELDRITCH; - TC_Aspects.AQUA.mAspect = Aspect.WATER; - TC_Aspects.ARBOR.mAspect = Aspect.TREE; - TC_Aspects.AURAM.mAspect = Aspect.AURA; - TC_Aspects.BESTIA.mAspect = Aspect.BEAST; - TC_Aspects.COGNITIO.mAspect = Aspect.MIND; - TC_Aspects.CORPUS.mAspect = Aspect.FLESH; - TC_Aspects.EXANIMIS.mAspect = Aspect.UNDEAD; - TC_Aspects.FABRICO.mAspect = Aspect.CRAFT; - TC_Aspects.FAMES.mAspect = Aspect.HUNGER; - TC_Aspects.GELUM.mAspect = Aspect.COLD; - TC_Aspects.GRANUM.mAspect = Aspect.PLANT; - TC_Aspects.HERBA.mAspect = Aspect.PLANT; - TC_Aspects.HUMANUS.mAspect = Aspect.MAN; - TC_Aspects.IGNIS.mAspect = Aspect.FIRE; - TC_Aspects.INSTRUMENTUM.mAspect = Aspect.TOOL; - TC_Aspects.ITER.mAspect = Aspect.TRAVEL; - TC_Aspects.LIMUS.mAspect = Aspect.SLIME; - TC_Aspects.LUCRUM.mAspect = Aspect.GREED; - TC_Aspects.LUX.mAspect = Aspect.LIGHT; - TC_Aspects.MACHINA.mAspect = Aspect.MECHANISM; - TC_Aspects.MESSIS.mAspect = Aspect.CROP; - TC_Aspects.METALLUM.mAspect = Aspect.METAL; - TC_Aspects.METO.mAspect = Aspect.HARVEST; - TC_Aspects.MORTUUS.mAspect = Aspect.DEATH; - TC_Aspects.MOTUS.mAspect = Aspect.MOTION; - TC_Aspects.ORDO.mAspect = Aspect.ORDER; - TC_Aspects.PANNUS.mAspect = Aspect.CLOTH; - TC_Aspects.PERDITIO.mAspect = Aspect.ENTROPY; - TC_Aspects.PERFODIO.mAspect = Aspect.MINE; - TC_Aspects.PERMUTATIO.mAspect = Aspect.EXCHANGE; - TC_Aspects.POTENTIA.mAspect = Aspect.ENERGY; - TC_Aspects.PRAECANTATIO.mAspect = Aspect.MAGIC; - TC_Aspects.SANO.mAspect = Aspect.HEAL; - TC_Aspects.SENSUS.mAspect = Aspect.SENSES; - TC_Aspects.SPIRITUS.mAspect = Aspect.SOUL; - TC_Aspects.TELUM.mAspect = Aspect.WEAPON; - TC_Aspects.TERRA.mAspect = Aspect.EARTH; - TC_Aspects.TEMPESTAS.mAspect = Aspect.WEATHER; - TC_Aspects.TENEBRAE.mAspect = Aspect.DARKNESS; - TC_Aspects.TUTAMEN.mAspect = Aspect.ARMOR; - TC_Aspects.VACUOS.mAspect = Aspect.VOID; - TC_Aspects.VENENUM.mAspect = Aspect.POISON; - TC_Aspects.VICTUS.mAspect = Aspect.LIFE; - TC_Aspects.VINCULUM.mAspect = Aspect.TRAP; - TC_Aspects.VITIUM.mAspect = Aspect.TAINT; - TC_Aspects.VITREUS.mAspect = Aspect.CRYSTAL; - TC_Aspects.VOLATUS.mAspect = Aspect.FLIGHT;*/ - - - public GTPP_AspectCompat() { - - - // Generate all existing Aspects as TC_Aspects - LinkedHashMap<String, Object> h = TC_Aspect_Wrapper.getVanillaAspectList(); - for (String g : h.keySet()) { - Object aBaseAspect = h.get(g); - if (aBaseAspect != null && TC_Aspect_Wrapper.isObjectAnAspect(aBaseAspect)) { - TC_Aspect_Wrapper aS = TC_Aspect_Wrapper.getAspect(g); - if (aS != null) { - mAspectCache.put(g, aS); - continue; - } - } - } - - - - - // Custom Aspects - ASPECT_BALANCE = - new TC_Aspect_Wrapper( - "Sagrausten", - Utils.rgbtoHexValue(125, 125, 125), - new TC_Aspect_Wrapper[]{ - ASPECT_STARBOUND, - get(TC_Aspects.RADIO) - }, - new ResourceLocation(CORE.MODID+":textures/aspects/" + "Sagrausten.png"), - false, - 1, - "Ancient Knowledge"); - - ASPECT_LUST = - new TC_Aspect_Wrapper( - "Slusium", - Utils.rgbtoHexValue(175, 125, 25), - new TC_Aspect_Wrapper[]{ - ASPECT_BALANCE, - get(TC_Aspects.NEBRISUM) - }, - new ResourceLocation(CORE.MODID+":textures/aspects/" + "Slusium.png"), - false, - 1, - "Warped Thoughts"); - - ASPECT_STARBOUND = - new TC_Aspect_Wrapper( - "Xenil", - Utils.rgbtoHexValue(25, 25, 25), - new TC_Aspect_Wrapper[]{ - get(TC_Aspects.MAGNETO), - get(TC_Aspects.RADIO)}, - new ResourceLocation(CORE.MODID+":textures/aspects/" + "Xenil.png"), - false, - 1, - "A beginning to something new"); - - ASPECT_TOXIC = - new TC_Aspect_Wrapper( - "Xablum", - Utils.rgbtoHexValue(25, 185, 25), - new TC_Aspect_Wrapper[]{ - ASPECT_STARBOUND, - ASPECT_LUST - }, - new ResourceLocation(CORE.MODID+":textures/aspects/" + "Xablum.png"), - false, - 1, - "Insanity"); - - ASPECT_HEAVEN = - new TC_Aspect_Wrapper( - "Zetralt", - Utils.rgbtoHexValue(225, 225, 225), - new TC_Aspect_Wrapper[]{ - get(TC_Aspects.AURAM), - ASPECT_TOXIC - }, - new ResourceLocation(CORE.MODID+":textures/aspects/" + "Zetralt.png"), - false, - 1, - "Control, Respect, Glory"); - - - } - - private TC_Aspect_Wrapper get(TC_Aspects aGtObjects) { - try { - return TC_Aspect_Wrapper.generate(aGtObjects.mAspect); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - return null; - } - } - - public static synchronized final TC_AspectList_Wrapper getTC_AspectList_Wrapper(final List<GTPP_AspectStack> aAspects) { - TC_AspectList_Wrapper o = null; - try { - if (m == null || (m != null && !m.isAccessible())) { - m = GT_ThaumcraftCompat.class.getDeclaredMethod("getTC_AspectList_Wrapper", List.class); - m.setAccessible(true); - } - if (m != null) { - o = (TC_AspectList_Wrapper) m.invoke(null, aAspects); - } - } - catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - e.printStackTrace(); - } - if (o == null) { - Logger.REFLECTION("[Aspect] Did not retrieve valid aspect list from reflective invocation."); - } - return o; - } - - -}
\ No newline at end of file diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java deleted file mode 100644 index 23e9035f40..0000000000 --- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java +++ /dev/null @@ -1,15 +0,0 @@ -package gtPlusPlus.xmod.thaumcraft.aspect; - -import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_Aspect_Wrapper; - -public class GTPP_AspectStack { - - public final TC_Aspect_Wrapper mAspect; - public final int mAmount; - - public GTPP_AspectStack(TC_Aspect_Wrapper aAspect, int aAmount) { - mAspect = aAspect; - mAmount= aAmount; - } - -} diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/commands/CommandDumpAspects.java b/src/Java/gtPlusPlus/xmod/thaumcraft/commands/CommandDumpAspects.java deleted file mode 100644 index dda5a62b27..0000000000 --- a/src/Java/gtPlusPlus/xmod/thaumcraft/commands/CommandDumpAspects.java +++ /dev/null @@ -1,90 +0,0 @@ -package gtPlusPlus.xmod.thaumcraft.commands; - -import static gtPlusPlus.core.util.minecraft.PlayerUtils.messagePlayer; - -import java.util.ArrayList; -import java.util.List; - -import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.core.commands.CommandUtils; -import gtPlusPlus.core.util.minecraft.PlayerUtils; -import gtPlusPlus.xmod.thaumcraft.objects.ThreadAspectScanner; -import net.minecraft.command.ICommand; -import net.minecraft.command.ICommandSender; -import net.minecraft.entity.player.EntityPlayer; - -public class CommandDumpAspects implements ICommand { - private final List<String> aliases; - public static long mLastScanTime = System.currentTimeMillis(); - - public CommandDumpAspects() { - this.aliases = new ArrayList<>(); - this.aliases.add("DA"); - this.aliases.add("da"); - this.aliases.add("dumpaspects"); - this.aliases.add("dumptc"); - Logger.INFO("Registered Aspect Dump Command."); - } - - @Override - public int compareTo(final Object o) { - return 0; - } - - @Override - public String getCommandName() { - return "DumpAspects"; - } - - @Override - public String getCommandUsage(final ICommandSender var1) { - return "/DumpAspects"; - } - - @Override - public List<String> getCommandAliases() { - return this.aliases; - } - - @Override - public void processCommand(final ICommandSender S, final String[] argString) { - final EntityPlayer P = CommandUtils.getPlayer(S); - final long T = System.currentTimeMillis(); - final long D = T - mLastScanTime; - final int Z = (int) (D / 1000); - if (Z >= 30) { - // Lets process this in the Background on a new Thread. - Thread t = createNewThread(); - messagePlayer(P, "Beginning to dump information about all items/blocks & their aspects to file."); - messagePlayer(P, "Please do not close your game during this process, you will be notified upon completion."); - t.start(); - } else { - messagePlayer(P, "Your last run of DA was less than 30 seconds ago, please wait " + (30 - Z) - + " seconds before trying again."); - } - } - - @Override - public boolean canCommandSenderUseCommand(final ICommandSender var1) { - final EntityPlayer P = CommandUtils.getPlayer(var1); - if (P == null || !PlayerUtils.isPlayerOP(P)) { - return false; - } - return true; - } - - @Override - public List<?> addTabCompletionOptions(final ICommandSender var1, final String[] var2) { - return null; - } - - @Override - public boolean isUsernameIndex(final String[] var1, final int var2) { - return false; - } - - private static Thread createNewThread() { - return new ThreadAspectScanner(); - } - -}
\ No newline at end of file diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/ThreadAspectScanner.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/ThreadAspectScanner.java deleted file mode 100644 index fdcf7b8498..0000000000 --- a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/ThreadAspectScanner.java +++ /dev/null @@ -1,158 +0,0 @@ -package gtPlusPlus.xmod.thaumcraft.objects; - -import java.io.File; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.api.objects.data.AutoMap; -import gtPlusPlus.api.objects.data.Pair; -import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.data.FileUtils; -import gtPlusPlus.core.util.minecraft.ItemUtils; -import gtPlusPlus.xmod.thaumcraft.commands.CommandDumpAspects; -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -public class ThreadAspectScanner extends Thread { - - public static boolean mDoWeScan = false; - private static final Map<String, AutoMap<ItemStack>> mAllGameContent = new HashMap<String, AutoMap<ItemStack>>(); - public final File mAspectCacheFile; - - public ThreadAspectScanner() { - mAspectCacheFile = FileUtils.getFile("config/GTplusplus", "AspectInfo", "txt"); - mDoWeScan = true; - } - - private void tryCacheObject(ItemStack aStack) { - if (aStack == null) { - return; - } - String nameKey; - try { - nameKey = ItemUtils.getUnlocalizedItemName(aStack); - } catch (NullPointerException n) { - try { - nameKey = Utils.sanitizeString(aStack.getDisplayName().toLowerCase()); - } catch (NullPointerException n2) { - try { - nameKey = aStack.getItem().getUnlocalizedName(); - } catch (NullPointerException n3) { - nameKey = "BadItemsGalore"; - } - } - } - AutoMap<ItemStack> m = new AutoMap<ItemStack>(); - if (mAllGameContent.containsKey(nameKey)) { - m = mAllGameContent.get(nameKey); - } - m.put(aStack); - mAllGameContent.put(nameKey, m); - } - - @SuppressWarnings({ "rawtypes" }) - @Override - public void run() { - if (mDoWeScan) { - Iterator iterator; - Logger.INFO("Finding Blocks and Items to scan for Aspect data."); - long mBlocksCounter = 0; - long mItemsCounter = 0; - - // First, find blocks - iterator = Block.blockRegistry.getKeys().iterator(); - while (iterator.hasNext()) { - String s = (String) iterator.next(); - Block block = (Block) Block.blockRegistry.getObject(s); - if (block != null) { - tryCacheObject(ItemUtils.getSimpleStack(block)); - mBlocksCounter++; - } - } - Logger.INFO("Completed Block Scan. Counted "+mBlocksCounter); - - // Second Find items, Skipping things that exist. - iterator = Item.itemRegistry.getKeys().iterator(); - while (iterator.hasNext()) { - String s = (String) iterator.next(); - Item item = (Item) Item.itemRegistry.getObject(s); - if (item != null) { - if (item.getHasSubtypes()) { - List q1 = new ArrayList(); - item.getSubItems(item, item.getCreativeTab(), q1); - if (q1 != null && q1.size() > 0) { - for (int e = 0; e < q1.size(); e++) { - ItemStack check = ItemUtils.simpleMetaStack(item, e, 1); - if (check != null) { - tryCacheObject(check); - mItemsCounter++; - } - } - } else { - tryCacheObject(ItemUtils.getSimpleStack(item)); - mItemsCounter++; - } - } else { - tryCacheObject(ItemUtils.getSimpleStack(item)); - mItemsCounter++; - } - } - } - Logger.INFO("Completed Item Scan. Counted "+mItemsCounter); - - Set<String> y = mAllGameContent.keySet(); - Logger.INFO("Beginning iteration of "+y.size()+" itemstacks for aspect information."); - - for (String key : y) { - //Logger.INFO("Looking for key: "+key); - if (mAllGameContent.containsKey(key)) { - AutoMap<ItemStack> group = mAllGameContent.get(key); - if (group == null || group.size() <= 0) { - continue; - } - for (ItemStack stack : group) { - thaumcraft.api.aspects.AspectList a = thaumcraft.common.lib.crafting.ThaumcraftCraftingManager - .getObjectTags(stack); - if (a == null) { - continue; - } else { - AutoMap<Pair<String, Integer>> aspectPairs = new AutoMap<Pair<String, Integer>>(); - for (thaumcraft.api.aspects.Aspect c : a.getAspectsSortedAmount()) { - if (c != null) { - aspectPairs.put(new Pair<String, Integer>(c.getName(), a.getAmount(c))); - } - } - try { - List<String> mList = new ArrayList<String>(); - mList.add(stack.getDisplayName() + " | Meta: " + stack.getItemDamage() - + " | Unlocal: " + stack.getUnlocalizedName()); - for (Pair<String, Integer> r : aspectPairs) { - if (r != null) { - mList.add(r.getKey() + " x" + r.getValue()); - } - } - mList.add(""); - if (mAspectCacheFile != null && mList.size() >= 3) { - FileUtils.appendListToFile(mAspectCacheFile, mList); - } - } - catch (Throwable t) { - Logger.INFO("Error while iterating one item. "+t); - } - } - } - } - } - Logger.INFO("Completed Aspect Iteration. AspectInfo.txt is now available to process in the GTplusplus configuration folder."); - CommandDumpAspects.mLastScanTime = System.currentTimeMillis(); - } - return; - } - -} diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java deleted file mode 100644 index 9df38ca384..0000000000 --- a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java +++ /dev/null @@ -1,40 +0,0 @@ -package gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect; - -import net.minecraft.item.ItemStack; - -public class TC_AspectList_Wrapper { - - - //thaumcraft.api.aspects.Aspect; - //thaumcraft.api.aspects.AspectList; - - public TC_AspectList_Wrapper() { - - } - - public TC_AspectList_Wrapper(ItemStack stack) { - - } - - public TC_AspectList_Wrapper(Object invoke) { - // TODO Auto-generated constructor stub - } - - public int size() { - // TODO Auto-generated method stub - return 0; - } - - public Object getVanillaAspectList() { - // TODO Auto-generated method stub - return null; - } - - public void add(TC_Aspect_Wrapper mAspect, int mAmount) { - // TODO Auto-generated method stub - - } - - - -} diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java deleted file mode 100644 index fda0fd27c5..0000000000 --- a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java +++ /dev/null @@ -1,327 +0,0 @@ -package gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect; - -import java.lang.reflect.Array; -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.LinkedHashMap; -import java.util.Map; - -import gregtech.api.enums.TC_Aspects; -import gregtech.api.util.GT_LanguageManager; -import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.util.reflect.ReflectionUtils; -import gtPlusPlus.xmod.thaumcraft.util.ThaumcraftUtils; -import net.minecraft.util.ResourceLocation; - -/** - * Wrapper class for Thaumcraft Aspects. - * Used to avoid compile time dependencies. - * @author Alkalus - * - */ -public class TC_Aspect_Wrapper { - - private static Class mClass_Aspect; - private static Field mField_Aspects; - - private final String tag; - private final TC_Aspect_Wrapper[] components; - private final int color; - private String chatcolor; - private final ResourceLocation image; - private final int blend; - - public final Object mAspect; - - /** - * May be null, but links back to the TC_Aspects class from GT for convinience. - */ - public final TC_Aspects mGtEnumField; - - - - - /** - * Statically set the Class objects - */ - static { - mClass_Aspect = ReflectionUtils.getClass("thaumcraft.api.aspects.Aspect"); - } - - /** - * Gets the total aspect list from Thaumcraft, which should contain all other registered aspects. - * @return - A LinkedHashMap(String, Aspect); - */ - public static LinkedHashMap<String, Object> getVanillaAspectList() { - try { - if (mField_Aspects == null) { - mField_Aspects = ReflectionUtils.getField(mClass_Aspect, "aspects"); - } - return (LinkedHashMap<String, Object>) mField_Aspects.get(null); - } catch (IllegalArgumentException | IllegalAccessException e) { - Logger.REFLECTION("Failed configuring TC Aspect compatibility."); - return new LinkedHashMap<String, Object>(); - } - } - - public static Object getVanillaAspectObject(String aAspectName) { - return getVanillaAspectList().get(aAspectName); - } - - - - - - - - - - - - - - - /** - * Vanilla Aspect Constructor - * @param tag - Aspect Name - * @param color - * @param chatcolor - * @param blend - */ - public TC_Aspect_Wrapper(String tag, int color, String chatcolor, int blend, String aTooltip) { - this(tag, color, (TC_Aspect_Wrapper[]) null, blend, aTooltip); - this.chatcolor = chatcolor; - } - - /** - * - * Vanilla Aspect Constructor - * @param tag - Aspect Name - * @param color - * @param components - */ - public TC_Aspect_Wrapper(String tag, int color, TC_Aspect_Wrapper[] components, String aTooltip) { - this(tag, color, components, false, 1, aTooltip); - } - - /** - * - * Vanilla Aspect Constructor - * @param tag - Aspect Name - * @param color - * @param components - * @param blend - */ - public TC_Aspect_Wrapper(String tag, int color, TC_Aspect_Wrapper[] components, int blend, String aTooltip) { - this(tag, color, components, false, blend, aTooltip); - } - - - /** - * - * Vanilla Aspect Constructor - * @param tag - Aspect Name - * @param color - * @param components - * @param image - * @param blend - */ - public TC_Aspect_Wrapper(String tag, int color, TC_Aspect_Wrapper[] components, boolean vanilla, int blend, String aTooltip) { - this(tag, color, components, vanilla ? new ResourceLocation("thaumcraft", "textures/aspects/" + tag.toLowerCase() + ".png") : new ResourceLocation(CORE.MODID, "textures/aspects/" + tag.toLowerCase() + ".png"), vanilla, blend, aTooltip); - } - - private static int aInternalAspectIDAllocation = 1; - - public TC_Aspect_Wrapper(String tag, int color, TC_Aspect_Wrapper[] components, ResourceLocation image, boolean vanilla, int blend, String aTooltip) { - if (components == null) { - components = new TC_Aspect_Wrapper[] {}; - } - //String aTag = vanilla ? tag.toLowerCase() : "custom"+(aInternalAspectIDAllocation++); - String aTag = tag.toLowerCase(); - if (getAspectList().containsKey(tag.toLowerCase())) { - this.tag = aTag; - this.components = components; - this.color = color; - this.image = image; - this.blend = blend; - this.mAspect = null; - this.mGtEnumField = null; - } else { - this.tag = aTag; - this.components = components; - this.color = color; - this.image = image; - this.blend = blend; - this.mAspect = vanilla ? getVanillaAspectObject(this.tag) : this.generateTcAspect(); - - // Set GT Type if exists - TC_Aspects y = null; - for (TC_Aspects e : TC_Aspects.values()) { - try { - String gtTag = ThaumcraftUtils.getTagFromAspectObject(e.mAspect); - if (gtTag != null) { - if (gtTag.equals(this.tag)) { - y = e; - break; - } - } - } catch (IllegalArgumentException e1) { - e1.printStackTrace(); - } - } - this.mGtEnumField = y; - mInternalAspectCache.put(this.tag, this); - // Double link custom Aspects, but internalise names using custom# instead - if (!vanilla) { - mInternalAspectCache.put("custom"+(aInternalAspectIDAllocation++), this); - GT_LanguageManager.addStringLocalization("tc.aspect."+aTag, aTooltip); - } - Logger.INFO("[Thaumcraft++] Adding support for Aspect: "+tag); - } - } - - - - /** - * Generates a TC_Aspect from an object, presummed to be a TC Aspect. - * @param aBaseAspect - The TC Aspect to generate from. - * @return - * @throws IllegalArgumentException - * @throws IllegalAccessException - */ - @SuppressWarnings("unused") - public static TC_Aspect_Wrapper generate(Object aBaseAspect) { - try { - Field aTagF = ReflectionUtils.getField(mClass_Aspect, "tag"); - if (aTagF == null) { - return null; - } - String aTafB = (String) aTagF.get(aBaseAspect); - if (aTafB == null) { - return null; - } - String aTag = aTafB.toLowerCase(); - if (aTag != null && getAspectList().containsKey(aTag.toLowerCase())) { - return getAspect(aTag); - } else { - TC_Aspect_Wrapper aTemp = new TC_Aspect_Wrapper( - aTag, - (int) ReflectionUtils.getField(mClass_Aspect, "color").get(aBaseAspect), - generateAspectArrayInternal(ReflectionUtils.getField(mClass_Aspect, "components"), (aBaseAspect)), - (ResourceLocation) ReflectionUtils.getField(mClass_Aspect, "image").get(aBaseAspect), - true, - (int) ReflectionUtils.getField(mClass_Aspect, "blend").get(aBaseAspect), - "" - ); - if (aTemp != null) { - aTemp.chatcolor = (String) ReflectionUtils.getField(mClass_Aspect, "chatcolor").get(aBaseAspect); - return aTemp; - } - else { - return null; - } - } - } - catch (Throwable t) { - t.printStackTrace(); - return null; - } - } - - - /** - * Internal Map containing all the TC_Aspects. - */ - private static Map<String, TC_Aspect_Wrapper> mInternalAspectCache = new LinkedHashMap<String, TC_Aspect_Wrapper>(); - - /** - * Public getter for all TC_Aspects - * @param aAspectName - Aspect Name - * @return - A GT++ Aspect wrapper or null. (TC_Aspect) - */ - public static TC_Aspect_Wrapper getAspect(String aAspectName) { - String aName = aAspectName.toLowerCase(); - TC_Aspect_Wrapper g = mInternalAspectCache.get(aName); - if (g != null) { - return g; - } - else { - try { - TC_Aspect_Wrapper aTemp = generate(getVanillaAspectList().get(aName)); - if (aTemp != null) { - mInternalAspectCache.put(aName, aTemp); - return aTemp; - } - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } - } - return null; - } - - public static Map<String, TC_Aspect_Wrapper> getAspectList(){ - return mInternalAspectCache; - } - - |
