aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2019-03-04 21:05:08 +0000
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2019-03-04 21:05:08 +0000
commit94f842fa9223d1d0fa233266495a20a00eafa030 (patch)
tree76563fe6342b4dd540651491776f331e02068344 /src
parentaf27ff015c4197bb5a6ddb7dd38769f8950a4ac9 (diff)
downloadGT5-Unofficial-94f842fa9223d1d0fa233266495a20a00eafa030.tar.gz
GT5-Unofficial-94f842fa9223d1d0fa233266495a20a00eafa030.tar.bz2
GT5-Unofficial-94f842fa9223d1d0fa233266495a20a00eafa030.zip
% Final touches to TC aspects. The 5 custom ones added by GT++ now have names and proper handling.
Diffstat (limited to 'src')
-rw-r--r--src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java7
-rw-r--r--src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java7
-rw-r--r--src/Java/gtPlusPlus/core/material/Material.java4
-rw-r--r--src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java9
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java58
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java (renamed from src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_AspectList_Wrapper.java)2
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java (renamed from src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_Aspect_Wrapper.java)26
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_PageType_Wrapper.java (renamed from src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_PageType_Wrapper.java)2
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategories_Wrapper.java (renamed from src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_ResearchCategories_Wrapper.java)2
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategoryList_Wrapper.java (renamed from src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_ResearchCategoryList_Wrapper.java)2
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchItem_Wrapper.java (renamed from src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_ResearchItem_Wrapper.java)4
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchNoteData_Wrapper.java (renamed from src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_ResearchNoteData_Wrapper.java)2
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchPage_Wrapper.java (renamed from src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_ResearchPage_Wrapper.java)3
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java14
-rw-r--r--src/resources/assets/miscutils/textures/aspects/Sagrausten.pngbin0 -> 2997 bytes
-rw-r--r--src/resources/assets/miscutils/textures/aspects/Slusium.pngbin0 -> 697 bytes
-rw-r--r--src/resources/assets/miscutils/textures/aspects/Xablum.pngbin0 -> 563 bytes
-rw-r--r--src/resources/assets/miscutils/textures/aspects/Xenil.pngbin0 -> 1000 bytes
-rw-r--r--src/resources/assets/miscutils/textures/aspects/Zetralt.pngbin0 -> 1461 bytes
21 files changed, 104 insertions, 42 deletions
diff --git a/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java b/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java
index 4dbb5851f2..522b7e900e 100644
--- a/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java
+++ b/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java
@@ -8,6 +8,7 @@ import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.TC_Aspects;
import gregtech.api.enums.TextureSet;
import gregtech.api.util.GT_OreDictUnificator;
import gtPlusPlus.api.objects.Logger;
@@ -21,7 +22,7 @@ import gtPlusPlus.core.util.math.MathUtils;
import gtPlusPlus.core.util.minecraft.EntityUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.sys.KeyboardUtils;
-import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_Aspects;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_Aspect_Wrapper;
import gtPlusPlus.xmod.thaumcraft.util.ThaumcraftUtils;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
@@ -66,9 +67,9 @@ public class BaseItemComponent extends Item{
GT_OreDictUnificator.registerOre(componentType.getOreDictName()+material.getUnlocalizedName(), ItemUtils.getSimpleStack(this));
if (LoadedMods.Thaumcraft) {
- ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), GTPP_Aspects.METALLUM, 1);
+ ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), TC_Aspect_Wrapper.generate(TC_Aspects.METALLUM.mAspect), 1);
if (componentMaterial.isRadioactive) {
- ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), GTPP_Aspects.RADIO, 2);
+ ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), TC_Aspect_Wrapper.generate(TC_Aspects.RADIO.mAspect), componentMaterial.vRadiationLevel);
}
}
registerComponent();
diff --git a/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java b/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java
index 2b3f477c56..de47ed8225 100644
--- a/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java
+++ b/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java
@@ -16,6 +16,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.TC_Aspects;
import gregtech.api.util.GT_OreDictUnificator;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.creative.AddToCreativeTab;
@@ -26,7 +27,7 @@ import gtPlusPlus.core.material.state.MaterialState;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.minecraft.EntityUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
-import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_Aspects;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_Aspect_Wrapper;
import gtPlusPlus.xmod.thaumcraft.util.ThaumcraftUtils;
public class BaseOreComponent extends Item{
@@ -57,9 +58,9 @@ public class BaseOreComponent extends Item{
registerComponent();
GT_OreDictUnificator.registerOre(componentType.getComponent()+material.getUnlocalizedName(), ItemUtils.getSimpleStack(this));
if (LoadedMods.Thaumcraft) {
- ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), GTPP_Aspects.METALLUM, 2);
+ ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), TC_Aspect_Wrapper.generate(TC_Aspects.METALLUM.mAspect), 1);
if (componentMaterial.isRadioactive) {
- ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), GTPP_Aspects.RADIO, 4);
+ ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), TC_Aspect_Wrapper.generate(TC_Aspects.RADIO.mAspect), componentMaterial.vRadiationLevel);
}
}
diff --git a/src/Java/gtPlusPlus/core/material/Material.java b/src/Java/gtPlusPlus/core/material/Material.java
index ba572efe90..58a7f68afe 100644
--- a/src/Java/gtPlusPlus/core/material/Material.java
+++ b/src/Java/gtPlusPlus/core/material/Material.java
@@ -23,7 +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 gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_Aspect_Wrapper;
import gtPlusPlus.xmod.tinkers.material.BaseTinkersMaterial;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
@@ -78,7 +78,7 @@ public class Material {
public int vToolQuality;
public int vHarvestLevel;
- private GTPP_Aspects[] vAspects;
+ private TC_Aspect_Wrapper[] vAspects;
public BaseTinkersMaterial vTiConHandler;
diff --git a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java
index 617728cdec..722a4f3ff7 100644
--- a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java
+++ b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java
@@ -107,6 +107,9 @@ public class ReflectionUtils {
* @return - Valid, {@link Class} object, or {@link null}.
*/
public static Class getClass(String aClassCanonicalName) {
+ if (aClassCanonicalName == null || aClassCanonicalName.length() <= 0) {
+ return null;
+ }
Class y = mCachedClasses.get(aClassCanonicalName);
if (y == null) {
y = getClass_Internal(aClassCanonicalName);
@@ -140,6 +143,9 @@ public class ReflectionUtils {
* @return - Valid, non-final, {@link Method} object, or {@link null}.
*/
public static Method getMethod(Class aClass, String aMethodName, Class... aTypes) {
+ if (aClass == null || aMethodName == null || aMethodName.length() <= 0) {
+ return null;
+ }
String aMethodKey = ArrayUtils.toString(aTypes);
//Logger.REFLECTION("Looking up method in cache: "+(aClass.getName()+"."+aMethodName + "." + aMethodKey));
CachedMethod y = mCachedMethods.get(aClass.getName()+"."+aMethodName + "." + aMethodKey);
@@ -166,6 +172,9 @@ public class ReflectionUtils {
* @return - Valid, non-final, {@link Field} object, or {@link null}.
*/
public static Field getField(final Class aClass, final String aFieldName) {
+ if (aClass == null || aFieldName == null || aFieldName.length() <= 0) {
+ return null;
+ }
CachedField y = mCachedFields.get(aClass.getName()+"."+aFieldName);
if (y == null) {
Field u;
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java b/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java
index b02ba40392..35e608b0ca 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java
@@ -45,7 +45,7 @@ public class HANDLER_Thaumcraft {
//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()) {
+ 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());
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java
index ea4c97fbfc..d5a19a91fc 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java
@@ -10,6 +10,9 @@ 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.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 {
@@ -99,8 +102,8 @@ public class GTPP_AspectCompat {
// Custom Aspects
ASPECT_BALANCE =
new TC_Aspect_Wrapper(
- "Purity",
- 15647411,
+ "Sagrausten",
+ Utils.rgbtoHexValue(125, 125, 125),
new TC_Aspect_Wrapper[]{
get(TC_Aspects.GELUM),
get(TC_Aspects.IGNIS)
@@ -108,10 +111,11 @@ public class GTPP_AspectCompat {
new ResourceLocation("gregtech:textures/aspects/" + TC_Aspects.RADIO.name() + ".png"),
false,
1);
+
ASPECT_LUST =
new TC_Aspect_Wrapper(
- "Vengeance",
- 15647411,
+ "Slusium",
+ Utils.rgbtoHexValue(175, 125, 25),
new TC_Aspect_Wrapper[]{
get(TC_Aspects.CORPUS),
get(TC_Aspects.ORDO)
@@ -119,6 +123,42 @@ public class GTPP_AspectCompat {
new ResourceLocation("gregtech:textures/aspects/" + TC_Aspects.NEBRISUM.name() + ".png"),
false,
1);
+
+ ASPECT_STARBOUND =
+ new TC_Aspect_Wrapper(
+ "Xenil",
+ Utils.rgbtoHexValue(25, 25, 25),
+ new TC_Aspect_Wrapper[]{
+ get(TC_Aspects.ALIENIS),
+ ASPECT_BALANCE
+ },
+ new ResourceLocation("gregtech:textures/aspects/" + TC_Aspects.NEBRISUM.name() + ".png"),
+ false,
+ 1);
+
+ ASPECT_TOXIC =
+ new TC_Aspect_Wrapper(
+ "Xablum",
+ Utils.rgbtoHexValue(25, 185, 25),
+ new TC_Aspect_Wrapper[]{
+ get(TC_Aspects.CORPUS),
+ ASPECT_LUST
+ },
+ new ResourceLocation("gregtech:textures/aspects/" + TC_Aspects.NEBRISUM.name() + ".png"),
+ false,
+ 1);
+
+ ASPECT_HEAVEN =
+ new TC_Aspect_Wrapper(
+ "Zetralt",
+ Utils.rgbtoHexValue(225, 225, 225),
+ new TC_Aspect_Wrapper[]{
+ get(TC_Aspects.COGNITIO),
+ ASPECT_BALANCE
+ },
+ new ResourceLocation("gregtech:textures/aspects/" + TC_Aspects.NEBRISUM.name() + ".png"),
+ false,
+ 1);
@@ -131,11 +171,11 @@ public class GTPP_AspectCompat {
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.Purity", "Balance");
- GT_LanguageManager.addStringLocalization("tc.aspect.Vengeance", "Lust");
- GT_LanguageManager.addStringLocalization("tc.aspect.custom3", "Starbound");
- GT_LanguageManager.addStringLocalization("tc.aspect.custom4", "Toxic");
- GT_LanguageManager.addStringLocalization("tc.aspect.custom5", "Heaven");
+ GT_LanguageManager.addStringLocalization("tc.aspect.Sagrausten", "Balance");
+ GT_LanguageManager.addStringLocalization("tc.aspect.Slusium", "Lust");
+ GT_LanguageManager.addStringLocalization("tc.aspect.Xenil", "Starbound");
+ GT_LanguageManager.addStringLocalization("tc.aspect.Xablum", "Toxic");
+ GT_LanguageManager.addStringLocalization("tc.aspect.Zetralt", "Zetralt");
}
private TC_Aspect_Wrapper get(TC_Aspects aGtObjects) {
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java
index d7cfa7d326..23e9035f40 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java
@@ -1,5 +1,7 @@
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;
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_AspectList_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java
index 0a7f2d6a3c..9df38ca384 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_AspectList_Wrapper.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java
@@ -1,4 +1,4 @@
-package gtPlusPlus.xmod.thaumcraft.aspect;
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect;
import net.minecraft.item.ItemStack;
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_Aspect_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java
index 78c2a670bb..ba448442d2 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_Aspect_Wrapper.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java
@@ -1,4 +1,4 @@
-package gtPlusPlus.xmod.thaumcraft.aspect;
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
@@ -11,6 +11,7 @@ import gregtech.api.enums.TC_Aspects;
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;
/**
@@ -133,7 +134,13 @@ public class TC_Aspect_Wrapper {
public TC_Aspect_Wrapper(String tag, int color, TC_Aspect_Wrapper[] components, ResourceLocation image, boolean vanilla, int blend) {
if (getAspectList().containsKey(tag.toLowerCase())) {
- throw new IllegalArgumentException(tag + " already registered!");
+ this.tag = tag.toLowerCase();
+ this.components = components;
+ this.color = color;
+ this.image = image;
+ this.blend = blend;
+ this.mAspect = null;
+ this.mGtEnumField = null;
} else {
this.tag = tag.toLowerCase();
this.components = components;
@@ -147,9 +154,9 @@ public class TC_Aspect_Wrapper {
for (TC_Aspects e : TC_Aspects.values()) {
TC_Aspect_Wrapper g;
try {
- g = generate(e.mAspect);
- if (g != null) {
- if (g.tag.equals(this.tag)) {
+ String gtTag = ThaumcraftUtils.getTagFromAspectObject(e.mAspect);
+ if (gtTag != null) {
+ if (gtTag.equals(this.tag)) {
y = e;
break;
}
@@ -158,9 +165,8 @@ public class TC_Aspect_Wrapper {
e1.printStackTrace();
}
}
- mGtEnumField = y;
-
-
+ this.mGtEnumField = y;
+ mInternalAspectCache.put(this.tag, this);
Logger.INFO("[Thaumcraft++] Adding support for Aspect: "+tag);
}
}
@@ -254,8 +260,8 @@ public class TC_Aspect_Wrapper {
TC_Aspect_Wrapper[] aAspectArray;
try {
components = (Object[]) aField.get(aInstance);
- aAspectArray = new TC_Aspect_Wrapper[components.length];
- if (components.length > 0) {
+ aAspectArray = new TC_Aspect_Wrapper[components == null ? 0 : components.length];
+ if (aAspectArray.length > 0) {
int i = 0;
for (Object g : components) {
aAspectArray[i] = getAspect((String) ReflectionUtils.getField(mClass_Aspect, "tag").get(g));
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_PageType_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_PageType_Wrapper.java
index 5a608e290f..d6c7f66988 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_PageType_Wrapper.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_PageType_Wrapper.java
@@ -1,4 +1,4 @@
-package gtPlusPlus.xmod.thaumcraft.aspect;
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.research;
public class TC_PageType_Wrapper {
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_ResearchCategories_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategories_Wrapper.java
index 3392dbcff9..93869cb8d8 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_ResearchCategories_Wrapper.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategories_Wrapper.java
@@ -1,4 +1,4 @@
-package gtPlusPlus.xmod.thaumcraft.aspect;
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.research;
import cpw.mods.fml.common.FMLLog;
import java.util.Collection;
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_ResearchCategoryList_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategoryList_Wrapper.java
index 4c9102648a..3e6f5b78f2 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_ResearchCategoryList_Wrapper.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategoryList_Wrapper.java
@@ -1,4 +1,4 @@
-package gtPlusPlus.xmod.thaumcraft.aspect;
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.research;
import java.util.HashMap;
import java.util.Map;
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_ResearchItem_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchItem_Wrapper.java
index 399ec5ad09..6372cc0371 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_ResearchItem_Wrapper.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchItem_Wrapper.java
@@ -1,5 +1,7 @@
-package gtPlusPlus.xmod.thaumcraft.aspect;
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.research;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_AspectList_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_Aspect_Wrapper;
import gtPlusPlus.xmod.thaumcraft.util.ThaumcraftUtils;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_ResearchNoteData_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchNoteData_Wrapper.java
index dbec20cdb8..5adf0150d9 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_ResearchNoteData_Wrapper.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchNoteData_Wrapper.java
@@ -1,4 +1,4 @@
-package gtPlusPlus.xmod.thaumcraft.aspect;
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.research;
public class TC_ResearchNoteData_Wrapper {
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_ResearchPage_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchPage_Wrapper.java
index 23d3a9f575..998f37bf8c 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/TC_ResearchPage_Wrapper.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchPage_Wrapper.java
@@ -1,7 +1,8 @@
-package gtPlusPlus.xmod.thaumcraft.aspect;
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.research;
import java.util.List;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_AspectList_Wrapper;
import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_CrucibleRecipe_Wrapper;
import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_IArcaneRecipe_Wrapper;
import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_InfusionEnchantmentRecipe_Wrapper;
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java b/src/Java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java
index c60a140819..8beaa8df5e 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java
@@ -19,17 +19,17 @@ import gtPlusPlus.api.objects.data.Pair;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
import gtPlusPlus.xmod.thaumcraft.HANDLER_Thaumcraft;
import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_AspectStack;
-import gtPlusPlus.xmod.thaumcraft.aspect.TC_AspectList_Wrapper;
-import gtPlusPlus.xmod.thaumcraft.aspect.TC_Aspect_Wrapper;
-import gtPlusPlus.xmod.thaumcraft.aspect.TC_ResearchCategories_Wrapper;
-import gtPlusPlus.xmod.thaumcraft.aspect.TC_ResearchCategoryList_Wrapper;
-import gtPlusPlus.xmod.thaumcraft.aspect.TC_ResearchItem_Wrapper;
-import gtPlusPlus.xmod.thaumcraft.aspect.TC_ResearchNoteData_Wrapper;
-import gtPlusPlus.xmod.thaumcraft.aspect.TC_ResearchPage_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_AspectList_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_Aspect_Wrapper;
import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_CrucibleRecipe_Wrapper;
import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_IArcaneRecipe_Wrapper;
import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_InfusionEnchantmentRecipe_Wrapper;
import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_InfusionRecipe_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.research.TC_ResearchCategories_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.research.TC_ResearchCategoryList_Wrapper;
+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 net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
diff --git a/src/resources/assets/miscutils/textures/aspects/Sagrausten.png b/src/resources/assets/miscutils/textures/aspects/Sagrausten.png
new file mode 100644
index 0000000000..a2c461f94e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/aspects/Sagrausten.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/aspects/Slusium.png b/src/resources/assets/miscutils/textures/aspects/Slusium.png
new file mode 100644
index 0000000000..fd2c42414d
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/aspects/Slusium.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/aspects/Xablum.png b/src/resources/assets/miscutils/textures/aspects/Xablum.png
new file mode 100644
index 0000000000..a19d64039a
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/aspects/Xablum.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/aspects/Xenil.png b/src/resources/assets/miscutils/textures/aspects/Xenil.png
new file mode 100644
index 0000000000..e3b5ecda82
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/aspects/Xenil.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/aspects/Zetralt.png b/src/resources/assets/miscutils/textures/aspects/Zetralt.png
new file mode 100644
index 0000000000..001edf8ea3
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/aspects/Zetralt.png
Binary files differ