aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/xmod/thaumcraft
diff options
context:
space:
mode:
author‭huajijam <strhuaji@gmail.com>2019-03-18 20:52:30 +0800
committer‭huajijam <strhuaji@gmail.com>2019-03-18 20:52:30 +0800
commit8b090e1fd20eb4c301996b5e1dfeb78353e595e4 (patch)
tree52152dd767d195c76baa8fd8bacb14b105aaa146 /src/Java/gtPlusPlus/xmod/thaumcraft
parent40d7e5da9f5b84213e2c3e4596fdc69b94bd523e (diff)
downloadGT5-Unofficial-8b090e1fd20eb4c301996b5e1dfeb78353e595e4.tar.gz
GT5-Unofficial-8b090e1fd20eb4c301996b5e1dfeb78353e595e4.tar.bz2
GT5-Unofficial-8b090e1fd20eb4c301996b5e1dfeb78353e595e4.zip
fix a bug
Diffstat (limited to 'src/Java/gtPlusPlus/xmod/thaumcraft')
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java39
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java295
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java15
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_Aspects.java77
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/ResearchNoteDataWrapper.java25
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java40
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java327
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/Base_Recipe_Wrapper.java10
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_CrucibleRecipe_Wrapper.java19
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_IArcaneRecipe_Wrapper.java19
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionEnchantmentRecipe_Wrapper.java19
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionRecipe_Wrapper.java19
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_PageType_Wrapper.java17
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategories_Wrapper.java89
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategoryList_Wrapper.java21
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchItem_Wrapper.java246
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchNoteData_Wrapper.java14
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchPage_Wrapper.java228
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java351
19 files changed, 1506 insertions, 364 deletions
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java b/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java
index 558b134ea9..35e608b0ca 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java
@@ -3,31 +3,23 @@ package gtPlusPlus.xmod.thaumcraft;
import java.util.Arrays;
import java.util.List;
-import net.minecraft.init.Items;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-
-import gregtech.api.enums.GT_Values;
-import gregtech.api.interfaces.internal.IThaumcraftCompat;
-import gregtech.api.util.GT_Utility;
-
import gtPlusPlus.api.objects.Logger;
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_Aspects.TC_AspectStack_Ex;
+import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_AspectCompat;
+import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_AspectStack;
import gtPlusPlus.xmod.thaumcraft.util.ThaumcraftUtils;
+import net.minecraft.init.Items;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
public class HANDLER_Thaumcraft {
- public static IThaumcraftCompat sThaumcraftCompat;
+ public static GTPP_AspectCompat sThaumcraftCompat;
public static Item mResearchNotes;
- 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 final AutoMap<Pair<ItemStack, GTPP_AspectStack[]>> sItemsToGetAspects = new AutoMap<Pair<ItemStack, GTPP_AspectStack[]>>();
public static void preInit(){
if (LoadedMods.Thaumcraft){
@@ -37,10 +29,9 @@ public class HANDLER_Thaumcraft {
public static void init(){
if (LoadedMods.Thaumcraft){
try {
- mResearchNotes = (Item) ReflectionUtils.getField(Class.forName("thaumcraft.common.config.ConfigItems"), "itemResearchNotes").get(null);
+ mResearchNotes = (Item) ReflectionUtils.getField(ReflectionUtils.getClass("thaumcraft.common.config.ConfigItems"), "itemResearchNotes").get(null);
}
- catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException
- | ClassNotFoundException e) {
+ catch (IllegalArgumentException | IllegalAccessException e) {
mResearchNotes = Items.paper;
}
}
@@ -48,10 +39,16 @@ public class HANDLER_Thaumcraft {
public static void postInit(){
if (LoadedMods.Thaumcraft){
- if (!sItemsToGetAspects.isEmpty()) {
- for (Pair<ItemStack, TC_AspectStack_Ex[]> j : sItemsToGetAspects) {
+ //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<TC_AspectStack_Ex> list = Arrays.asList(j.getValue());
+ 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()+".");
}
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java
index e3aeed75bd..6cd5af02b6 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java
@@ -1,114 +1,191 @@
package gtPlusPlus.xmod.thaumcraft.aspect;
-import gregtech.common.GT_ThaumcraftCompat;
-
-import gtPlusPlus.api.objects.Logger;
-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.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
-import net.minecraft.block.Block;
-import net.minecraft.item.ItemStack;
+import gregtech.api.enums.TC_Aspects;
+import gregtech.api.util.GT_LanguageManager;
+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;
-import thaumcraft.api.aspects.Aspect;
-import thaumcraft.api.aspects.AspectList;
-public class GTPP_AspectCompat implements IThaumcraftCompat {
+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() {
- // 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;
+
+
+ // 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
- 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");
+ 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 AspectList getAspectList(final List<TC_AspectStack_Ex> aAspects) {
- AspectList o = 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("getAspectList", List.class);
+ m = GT_ThaumcraftCompat.class.getDeclaredMethod("getTC_AspectList_Wrapper", List.class);
m.setAccessible(true);
}
if (m != null) {
- o = (AspectList) m.invoke(null, aAspects);
+ o = (TC_AspectList_Wrapper) m.invoke(null, aAspects);
}
}
catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
@@ -119,44 +196,6 @@ public class GTPP_AspectCompat implements IThaumcraftCompat {
}
return o;
}
-
- public static synchronized final AspectList getAspectList_Ex(final List<TC_AspectStack_Ex> aAspects) {
- final AspectList rAspects = new AspectList();
- for (final TC_AspectStack_Ex tAspect : aAspects) {
- rAspects.add((Aspect) tAspect.mAspect.mAspect, (int) tAspect.mAmount);
- }
- return rAspects;
- }
-
- @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_AspectStack.java b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java
new file mode 100644
index 0000000000..23e9035f40
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java
@@ -0,0 +1,15 @@
+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/aspect/GTPP_Aspects.java b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_Aspects.java
deleted file mode 100644
index e1df0dabf5..0000000000
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_Aspects.java
+++ /dev/null
@@ -1,77 +0,0 @@
-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/objects/ResearchNoteDataWrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/ResearchNoteDataWrapper.java
deleted file mode 100644
index 7ca5c117f0..0000000000
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/ResearchNoteDataWrapper.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package gtPlusPlus.xmod.thaumcraft.objects;
-
-import thaumcraft.common.lib.research.ResearchNoteData;
-
-public class ResearchNoteDataWrapper extends ResearchNoteData {
-
- public ResearchNoteDataWrapper() {
- super();
- }
-
- public ResearchNoteDataWrapper(ResearchNoteData data) {
- key = data.key;
- color = data.color;
- hexEntries = data.hexEntries;
- hexes = data.hexes;
- complete = data.complete;
- copies = data.copies;
- }
-
- public void completeResearch() {
- this.complete = true;
- }
-
-
-}
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
new file mode 100644
index 0000000000..9df38ca384
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java
@@ -0,0 +1,40 @@
+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
new file mode 100644
index 0000000000..fda0fd27c5
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java
@@ -0,0 +1,327 @@
+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(mCl