diff options
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/thaumcraft')
19 files changed, 1803 insertions, 1808 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java index b1353cc481..bbda74449b 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java @@ -10,50 +10,51 @@ 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()+"."); - } - } - } - }*/ - } - } - +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/main/java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java index 56ad95c5e3..c3d256a132 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java @@ -1,11 +1,5 @@ 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; @@ -13,188 +7,167 @@ 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 java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; 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"); + 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_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_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_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; - } - } + 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"); + } - 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; - } + private TC_Aspect_Wrapper get(TC_Aspects aGtObjects) { + try { + return TC_Aspect_Wrapper.generate(aGtObjects.mAspect); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + return null; + } + } - -}
\ No newline at end of file + public static final synchronized 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; + } +} diff --git a/src/main/java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java index 23e9035f40..e48bd64e53 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java @@ -4,12 +4,11 @@ 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; - } + 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/main/java/gtPlusPlus/xmod/thaumcraft/commands/CommandDumpAspects.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/commands/CommandDumpAspects.java index dda5a62b27..6f1d53bc33 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/commands/CommandDumpAspects.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/commands/CommandDumpAspects.java @@ -2,89 +2,90 @@ 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 java.util.ArrayList; +import java.util.List; 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."); - } + private final List<String> aliases; + public static long mLastScanTime = System.currentTimeMillis(); - @Override - public int compareTo(final Object o) { - return 0; - } + 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 String getCommandName() { - return "DumpAspects"; - } + @Override + public int compareTo(final Object o) { + return 0; + } - @Override - public String getCommandUsage(final ICommandSender var1) { - return "/DumpAspects"; - } + @Override + public String getCommandName() { + return "DumpAspects"; + } - @Override - public List<String> getCommandAliases() { - return this.aliases; - } + @Override + public String getCommandUsage(final ICommandSender var1) { + return "/DumpAspects"; + } - @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 List<String> getCommandAliases() { + return this.aliases; + } - @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 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 List<?> addTabCompletionOptions(final ICommandSender var1, final String[] var2) { - return null; - } + @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 boolean isUsernameIndex(final String[] var1, final int var2) { - return false; - } + @Override + public List<?> addTabCompletionOptions(final ICommandSender var1, final String[] var2) { + return null; + } - private static Thread createNewThread() { - return new ThreadAspectScanner(); - } + @Override + public boolean isUsernameIndex(final String[] var1, final int var2) { + return false; + } -}
\ No newline at end of file + private static Thread createNewThread() { + return new ThreadAspectScanner(); + } +} diff --git a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/ThreadAspectScanner.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/ThreadAspectScanner.java index fdcf7b8498..896c68aa3a 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/ThreadAspectScanner.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/ThreadAspectScanner.java @@ -1,13 +1,5 @@ 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; @@ -15,144 +7,150 @@ import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.data.FileUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.xmod.thaumcraft.commands.CommandDumpAspects; +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 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; - } + public static boolean mDoWeScan = false; + private static final Map<String, AutoMap<ItemStack>> mAllGameContent = new HashMap<String, AutoMap<ItemStack>>(); + public final File mAspectCacheFile; - 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); - } + public ThreadAspectScanner() { + mAspectCacheFile = FileUtils.getFile("config/GTplusplus", "AspectInfo", "txt"); + mDoWeScan = true; + } - @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; + 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); + } - // 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); + @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; - // 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); + // 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); - Set<String> y = mAllGameContent.keySet(); - Logger.INFO("Beginning iteration of "+y.size()+" itemstacks for aspect information."); + // 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); - 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; - } + 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/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java index 9df38ca384..346d0d3c8b 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java @@ -4,37 +4,29 @@ import net.minecraft.item.ItemStack; public class TC_AspectList_Wrapper { + // thaumcraft.api.aspects.Aspect; + // thaumcraft.api.aspects.AspectList; - //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 - - } - - - + 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/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java index fda0fd27c5..6847fcfe69 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java @@ -1,18 +1,17 @@ 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 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 net.minecraft.util.ResourceLocation; /** @@ -23,305 +22,300 @@ import net.minecraft.util.ResourceLocation; */ 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; - } + 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; + } - /** - * - * 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); - } + private static TC_Aspect_Wrapper[] generateAspectArrayInternal(Field aField, Object aInstance) { + // thaumcraft.api.aspects.Aspect.Aspect() + Object[] components; + TC_Aspect_Wrapper[] aAspectArray; + try { + components = (Object[]) aField.get(aInstance); + 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)); + i++; + } + } + } catch (IllegalArgumentException | IllegalAccessException e) { + e.printStackTrace(); + aAspectArray = new TC_Aspect_Wrapper[0]; + } + return aAspectArray; + } - /** - * - * 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; + /** + * Tasty code to generate TC Aspects reflectively. + * @return + */ + public Object generateTcAspect() { + try { + // thaumcraft.api.aspects.Aspect.Aspect() + Object aAspectArray = (Object[]) Array.newInstance(mClass_Aspect, 0); + if (components.length > 0) { + aAspectArray = (Object[]) Array.newInstance(mClass_Aspect, components.length); + int i = 0; + for (TC_Aspect_Wrapper g : components) { + if (g != null && g.mAspect != null) ((Object[]) aAspectArray)[i++] = g.mAspect; + } + } + Constructor constructor = mClass_Aspect.getConstructor( + String.class, int.class, aAspectArray.getClass(), ResourceLocation.class, int.class); + Object myObject = constructor.newInstance(tag, color, aAspectArray, image, blend); - 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; - } - - - private static TC_Aspect_Wrapper[] generateAspectArrayInternal(Field aField, Object aInstance) { - //thaumcraft.api.aspects.Aspect.Aspect() - Object[] components; - TC_Aspect_Wrapper[] aAspectArray; - try { - components = (Object[]) aField.get(aInstance); - 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)); - i++; - } - } - } catch (IllegalArgumentException | IllegalAccessException e) { - e.printStackTrace(); - aAspectArray = new TC_Aspect_Wrapper[0]; - } - return aAspectArray; - } + // Set chat colour + if (chatcolor != null && chatcolor.length() > 0) { + Method setChatColour = ReflectionUtils.getMethod(mClass_Aspect, "setChatcolor", String.class); + if (setChatColour != null) { + setChatColour.invoke(myObject, chatcolor); + } + } + return myObject; + } catch (Throwable t) { + t.printStackTrace(); + return null; + } + } - /** - * Tasty code to generate TC Aspects reflectively. - * @return - */ - public Object generateTcAspect() { - try { - //thaumcraft.api.aspects.Aspect.Aspect() - Object aAspectArray = (Object[]) Array.newInstance(mClass_Aspect, 0); - if (components.length > 0) { - aAspectArray = (Object[]) Array.newInstance(mClass_Aspect, components.length); - int i = 0; - for (TC_Aspect_Wrapper g : components) { - if (g != null && g.mAspect != null) - ((Object[]) aAspectArray)[i++] = g.mAspect; - } - } - Constructor constructor = mClass_Aspect.getConstructor(String.class, int.class, aAspectArray.getClass(), ResourceLocation.class, int.class); - Object myObject = constructor.newInstance(tag, color, aAspectArray, image, blend); - - //Set chat colour - if (chatcolor != null && chatcolor.length() > 0) { - Method setChatColour = ReflectionUtils.getMethod(mClass_Aspect, "setChatcolor", String.class); - if (setChatColour != null) { - setChatColour.invoke(myObject, chatcolor); - } - } - return myObject; - } catch (Throwable t) { - t.printStackTrace(); - return null; - } - } - - public static boolean isObjectAnAspect(Object aAspect) { - return mClass_Aspect.isInstance(aAspect); - } - + public static boolean isObjectAnAspect(Object aAspect) { + return mClass_Aspect.isInstance(aAspect); + } } diff --git a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/Base_Recipe_Wrapper.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/Base_Recipe_Wrapper.java index 914144445c..8a173e2b0a 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/Base_Recipe_Wrapper.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/Base_Recipe_Wrapper.java @@ -4,7 +4,7 @@ import net.minecraft.item.ItemStack; public interface Base_Recipe_Wrapper { - public abstract ItemStack getRecipeOutput(); + public abstract ItemStack getRecipeOutput(); - public abstract ItemStack getRecipeInput(); + public abstract ItemStack getRecipeInput(); } diff --git a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_CrucibleRecipe_Wrapper.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_CrucibleRecipe_Wrapper.java index 8ee4e7011d..004c18955c 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_CrucibleRecipe_Wrapper.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_CrucibleRecipe_Wrapper.java @@ -4,16 +4,15 @@ import net.minecraft.item.ItemStack; public class TC_CrucibleRecipe_Wrapper implements Base_Recipe_Wrapper { - @Override - public ItemStack getRecipeInput() { - // TODO Auto-generated method stub - return null; - } - - @Override - public ItemStack getRecipeOutput() { - // TODO Auto-generated method stub - return null; - } + @Override + public ItemStack getRecipeInput() { + // TODO Auto-generated method stub + return null; + } + @Override + public ItemStack getRecipeOutput() { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_IArcaneRecipe_Wrapper.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_IArcaneRecipe_Wrapper.java index fede079f7b..8276af9f0e 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_IArcaneRecipe_Wrapper.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_IArcaneRecipe_Wrapper.java @@ -4,16 +4,15 @@ import net.minecraft.item.ItemStack; public class TC_IArcaneRecipe_Wrapper implements Base_Recipe_Wrapper { - @Override - public ItemStack getRecipeInput() { - // TODO Auto-generated method stub - return null; - } - - @Override - public ItemStack getRecipeOutput() { - // TODO Auto-generated method stub - return null; - } + @Override + public ItemStack getRecipeInput() { + // TODO Auto-generated method stub + return null; + } + @Override + public ItemStack getRecipeOutput() { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionEnchantmentRecipe_Wrapper.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionEnchantmentRecipe_Wrapper.java index b52fa0e6a7..9431978ca0 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionEnchantmentRecipe_Wrapper.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionEnchantmentRecipe_Wrapper.java @@ -4,16 +4,15 @@ import net.minecraft.item.ItemStack; public class TC_InfusionEnchantmentRecipe_Wrapper implements Base_Recipe_Wrapper { - @Override - public ItemStack getRecipeInput() { - // TODO Auto-generated method stub - return null; - } - - @Override - public ItemStack getRecipeOutput() { - // TODO Auto-generated method stub - return null; - } + @Override + public ItemStack getRecipeInput() { + // TODO Auto-generated method stub + return null; + } + @Override + public ItemStack getRecipeOutput() { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionRecipe_Wrapper.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionRecipe_Wrapper.java index a0c539f937..0338644949 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionRecipe_Wrapper.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionRecipe_Wrapper.java @@ -4,16 +4,15 @@ import net.minecraft.item.ItemStack; public class TC_InfusionRecipe_Wrapper implements Base_Recipe_Wrapper { - @Override - public ItemStack getRecipeInput() { - // TODO Auto-generated method stub - return null; - } - - @Override - public ItemStack getRecipeOutput() { - // TODO Auto-generated method stub - return null; - } + @Override + public ItemStack getRecipeInput() { + // TODO Auto-generated method stub + return null; + } + @Override + public ItemStack getRecipeOutput() { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_PageType_Wrapper.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_PageType_Wrapper.java index d6c7f66988..3a06ac1b90 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_PageType_Wrapper.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_PageType_Wrapper.java @@ -2,16 +2,15 @@ package gtPlusPlus.xmod.thaumcraft.objects.wrapper.research; public class TC_PageType_Wrapper { - public static final TC_PageType_Wrapper TEXT = null; - public static final TC_PageType_Wrapper TEXT_CONCEALED = null; - public static final TC_PageType_Wrapper NORMAL_CRAFTING = null; - public static final TC_PageType_Wrapper ARCANE_CRAFTING = null; - public static final TC_PageType_Wrapper CRUCIBLE_CRAFTING = null; - public static final TC_PageType_Wrapper INFUSION_CRAFTING = null; - public static final TC_PageType_Wrapper COMPOUND_CRAFTING = null; - public static final TC_PageType_Wrapper SMELTING = null; - public static final TC_PageType_Wrapper INFUSION_ENCHANTMENT = null; - public static final TC_PageType_Wrapper IMAGE = null; - public static final TC_PageType_Wrapper ASPECTS = null; - + public static final TC_PageType_Wrapper TEXT = null; + public static final TC_PageType_Wrapper TEXT_CONCEALED = null; + public static final TC_PageType_Wrapper NORMAL_CRAFTING = null; + public static final TC_PageType_Wrapper ARCANE_CRAFTING = null; + public static final TC_PageType_Wrapper CRUCIBLE_CRAFTING = null; + public static final TC_PageType_Wrapper INFUSION_CRAFTING = null; + public static final TC_PageType_Wrapper COMPOUND_CRAFTING = null; + public static final TC_PageType_Wrapper SMELTING = null; + public static final TC_PageType_Wrapper INFUSION_ENCHANTMENT = null; + public static final TC_PageType_Wrapper IMAGE = null; + public static final TC_PageType_Wrapper ASPECTS = null; } diff --git a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategories_Wrapper.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategories_Wrapper.java index 93869cb8d8..0130ca3b96 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategories_Wrapper.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategories_Wrapper.java @@ -6,84 +6,83 @@ import java.util.Iterator; import java.util.LinkedHashMap; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; - import org.apache.logging.log4j.Level; public class TC_ResearchCategories_Wrapper { - - public static LinkedHashMap<String, TC_ResearchCategoryList_Wrapper> researchCategories = new LinkedHashMap<String, TC_ResearchCategoryList_Wrapper>(); - - public static TC_ResearchCategoryList_Wrapper getResearchList(String key) { - return (TC_ResearchCategoryList_Wrapper) researchCategories.get(key); - } - - public static String getCategoryName(String key) { - return StatCollector.translateToLocal("tc.research_category." + key); - } - - public static TC_ResearchItem_Wrapper getResearch(String key) { - Collection rc = researchCategories.values(); - Iterator i$ = rc.iterator(); - - while (i$.hasNext()) { - Object cat = i$.next(); - Collection rl = ((TC_ResearchCategoryList_Wrapper) cat).research.values(); - Iterator i$1 = rl.iterator(); - - while (i$1.hasNext()) { - Object ri = i$1.next(); - if (((TC_ResearchItem_Wrapper) ri).key.equals(key)) { - return (TC_ResearchItem_Wrapper) ri; - } - } - } - - return null; - } - - public static void registerCategory(String key, ResourceLocation icon, ResourceLocation background) { - if (getResearchList(key) == null) { - TC_ResearchCategoryList_Wrapper rl = new TC_ResearchCategoryList_Wrapper(icon, background); - researchCategories.put(key, rl); - } - - } - - public static void addResearch(TC_ResearchItem_Wrapper ri) { - TC_ResearchCategoryList_Wrapper rl = getResearchList(ri.category); - if (rl != null && !rl.research.containsKey(ri.key)) { - if (!ri.isVirtual()) { - Iterator i$ = rl.research.values().iterator(); - - while (i$.hasNext()) { - TC_ResearchItem_Wrapper rr = (TC_ResearchItem_Wrapper) i$.next(); - if (rr.displayColumn == ri.displayColumn && rr.displayRow == ri.displayRow) { - FMLLog.log(Level.FATAL, - "[Thaumcraft] Research [" + ri.getName() - + "] not added as it overlaps with existing research [" + rr.getName() + "]", - new Object[0]); - return; - } - } - } - - rl.research.put(ri.key, ri); - if (ri.displayColumn < rl.minDisplayColumn) { - rl.minDisplayColumn = ri.displayColumn; - } - - if (ri.displayRow < rl.minDisplayRow) { - rl.minDisplayRow = ri.displayRow; - } - - if (ri.displayColumn > rl.maxDisplayColumn) { - rl.maxDisplayColumn = ri.displayColumn; - } - - if (ri.displayRow > rl.maxDisplayRow) { - rl.maxDisplayRow = ri.displayRow; - } - } - - } -}
\ No newline at end of file + + public static LinkedHashMap<String, TC_ResearchCategoryList_Wrapper> researchCategories = + new LinkedHashMap<String, TC_ResearchCategoryList_Wrapper>(); + + public static TC_ResearchCategoryList_Wrapper getResearchList(String key) { + return (TC_ResearchCategoryList_Wrapper) researchCategories.get(key); + } + + public static String getCategoryName(String key) { + return StatCollector.translateToLocal("tc.research_category." + key); + } + + public static TC_ResearchItem_Wrapper getResearch(String key) { + Collection rc = researchCategories.values(); + Iterator i$ = rc.iterator(); + + while (i$.hasNext()) { + Object cat = i$.next(); + Collection rl = ((TC_ResearchCategoryList_Wrapper) cat).research.values(); + Iterator i$1 = rl.iterator(); + + while (i$1.hasNext()) { + Object ri = i$1.next(); + if (((TC_ResearchItem_Wrapper) ri).key.equals(key)) { + return (TC_ResearchItem_Wrapper) ri; + } + } + } + + return null; + } + + public static void registerCategory(String key, ResourceLocation icon, ResourceLocation background) { + if (getResearchList(key) == null) { + TC_ResearchCategoryList_Wrapper rl = new TC_ResearchCategoryList_Wrapper(icon, background); + researchCategories.put(key, rl); + } + } + + public static void addResearch(TC_ResearchItem_Wrapper ri) { + TC_ResearchCategoryList_Wrapper rl = getResearchList(ri.category); + if (rl != null && !rl.research.containsKey(ri.key)) { + if (!ri.isVirtual()) { + Iterator i$ = rl.research.values().iterator(); + + while (i$.hasNext()) { + TC_ResearchItem_Wrapper rr = (TC_ResearchItem_Wrapper) i$.next(); + if (rr.displayColumn == ri.displayColumn && rr.displayRow == ri.displayRow) { + FMLLog.log( + Level.FATAL, + "[Thaumcraft] Research [" + ri.getName() + + "] not added as it overlaps with existing research [" + rr.getName() + "]", + new Object[0]); + return; + } + } + } + + rl.research.put(ri.key, ri); + if (ri.displayColumn < rl.minDisplayColumn) { + rl.minDisplayColumn = ri.displayColumn; + } + + if (ri.displayRow < rl.minDisplayRow) { + rl.minDisplayRow = ri.displayRow; + } + + if (ri.displayColumn > rl.maxDisplayColumn) { + rl.maxDisplayColumn = ri.displayColumn; + } + + if (ri.displayRow > rl.maxDisplayRow) { + rl.maxDisplayRow = ri.displayRow; + } + } + } +} diff --git a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategoryList_Wrapper.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategoryList_Wrapper.java index 3e6f5b78f2..08c69cdca5 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategoryList_Wrapper.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategoryList_Wrapper.java @@ -2,20 +2,19 @@ package gtPlusPlus.xmod.thaumcraft.objects.wrapper.research; import java.util.HashMap; import java.util.Map; - import net.minecraft.util.ResourceLocation; public class TC_ResearchCategoryList_Wrapper { - public int minDisplayColumn; - public int minDisplayRow; - public int maxDisplayColumn; - public int maxDisplayRow; - public ResourceLocation icon; - public ResourceLocation background; - public Map<String, TC_ResearchItem_Wrapper> research = new HashMap<String, TC_ResearchItem_Wrapper>(); + public int minDisplayColumn; + public int minDisplayRow; + public int maxDisplayColumn; + public int maxDisplayRow; + public ResourceLocation icon; + public ResourceLocation background; + public Map<String, TC_ResearchItem_Wrapper> research = new HashMap<String, TC_ResearchItem_Wrapper>(); - public TC_ResearchCategoryList_Wrapper(ResourceLocation icon, ResourceLocation background) { - this.icon = icon; - this.background = background; - } + public TC_ResearchCategoryList_Wrapper(ResourceLocation icon, ResourceLocation background) { + this.icon = icon; + this.background = background; + } } diff --git a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchItem_Wrapper.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchItem_Wrapper.java index 6372cc0371..be0ae26e61 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchItem_Wrapper.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchItem_Wrapper.java @@ -9,238 +9,242 @@ import net.minecraft.util.StatCollector; public class TC_ResearchItem_Wrapper { - public final String key; - public final String category; - public final TC_AspectList_Wrapper tags; - public String[] parents = null; - public String[] parentsHidden = null; - public String[] siblings = null; - public final int displayColumn; - public final int displayRow; - public final ItemStack icon_item; - public final ResourceLocation icon_resource; - private int complexity; - private boolean isSpecial; - private boolean isSecondary; - private boolean isRound; - private boolean isStub; - private boolean isVirtual; - private boolean isConcealed; - private boolean isHidden; - private boolean isLost; - private boolean isAutoUnlock; - private ItemStack[] itemTriggers; - private String[] entityTriggers; - private TC_Aspect_Wrapper[] aspectTriggers; - private Object[] pages = null; - - public TC_ResearchItem_Wrapper(String key, String category) { - this.key = key; - this.category = category; - this.tags = new TC_AspectList_Wrapper(); - this.icon_resource = null; - this.icon_item = null; - this.displayColumn = 0; - this.displayRow = 0; - this.setVirtual(); - } - - public TC_ResearchItem_Wrapper(String key, String category, TC_AspectList_Wrapper tags, int col, int row, int complex, - ResourceLocation icon) { - this.key = key; - this.category = category; - this.tags = tags; - this.icon_resource = icon; - this.icon_item = null; - this.displayColumn = col; - this.displayRow = row; - this.complexity = complex; - if (this.complexity < 1) { - this.complexity = 1; - } - - if (this.complexity > 3) { - this.complexity = 3; - } - - } - - public TC_ResearchItem_Wrapper(String key, String category, TC_AspectList_Wrapper tags, int col, int row, int complex, ItemStack icon) { - this.key = key; - this.category = category; - this.tags = tags; - this.icon_item = icon; - this.icon_resource = null; - this.displayColumn = col; - this.displayRow = row; - this.complexity = complex; - if (this.complexity < 1) { - this.complexity = 1; - } - - if (this.complexity > 3) { - this.complexity = 3; - } - - } - - public TC_ResearchItem_Wrapper setSpecial() { - this.isSpecial = true; - return this; - } - - public TC_ResearchItem_Wrapper setStub() { - this.isStub = true; - return this; - } - - public TC_ResearchItem_Wrapper setLost() { - this.isLost = true; - return this; - } - - public TC_ResearchItem_Wrapper setConcealed() { - this.isConcealed = true; - return this; - } - - public TC_ResearchItem_Wrapper setHidden() { - this.isHidden = true; - return this; - } - - public TC_ResearchItem_Wrapper setVirtual() { - this.isVirtual = true; - return this; - } - - public TC_ResearchItem_Wrapper setParents(String... par) { - this.parents = par; - return this; - } - - public TC_ResearchItem_Wrapper setParentsHidden(String... par) { - this.parentsHidden = par; - return this; - } - - public TC_ResearchItem_Wrapper setSiblings(String... sib) { - this.siblings = sib; - return this; - } - - public TC_ResearchItem_Wrapper setPages(Object... par) { - this.pages = par; - return this; - } - - public Object[] getPages() { - return this.pages; - } - - public TC_ResearchItem_Wrapper setItemTriggers(ItemStack... par) { - this.itemTriggers = par; - return this; - } - - public TC_ResearchItem_Wrapper setEntityTriggers(String... par) { - this.entityTriggers = par; - return this; - } - - public TC_ResearchItem_Wrapper setAspectTriggers(TC_Aspect_Wrapper... par) { - this.aspectTriggers = par; - return this; - } - - public ItemStack[] getItemTriggers() { - return this.itemTriggers; - } - - public String[] getEntityTriggers() { - return this.entityTriggers; - } - - public TC_Aspect_Wrapper[] getAspectTriggers() { - return this.aspectTriggers; - } - - public TC_ResearchItem_Wrapper registerResearchItem() { - ThaumcraftUtils.addResearch(this); - return this; - } - - public String getName() { - return StatCollector.translateToLocal("tc.research_name." + this.key); - } - - public String getText() { - return StatCollector.translateToLocal("tc.research_text." + this.key); - } - - public boolean isSpecial() { - return this.isSpecial; - } - - public boolean isStub() { - return this.isStub; - } - - public boolean isLost() { - return this.isLost; - } - - public boolean isConcealed() { - return this.isConcealed; - } - - public boolean isHidden() { - return this.isHidden; - } - - public boolean isVirtual() { - return this.isVirtual; - } - - public boolean isAutoUnlock() { - return this.isAutoUnlock; - } - - public TC_ResearchItem_Wrapper setAutoUnlock() { - this.isAutoUnlock = true; - return this; - } - - public boolean isRound() { - return this.isRound; - } - - public TC_ResearchItem_Wrapper setRound() { - this.isRound = true; - return this; - } - - public boolean isSecondary() { - return this.isSecondary; - } - - public TC_ResearchItem_Wrapper setSecondary() { - this.isSecondary = true; - return this; - } - - public int getComplexity() { - return this.complexity; - } - - public TC_ResearchItem_Wrapper setComplexity(int complexity) { - this.complexity = complexity; - return this; - } - - public TC_Aspect_Wrapper getResearchPrimaryTag() { - //TODO - return null; - } - + public final String key; + public final String category; + public final TC_AspectList_Wrapper tags; + public String[] parents = null; + public String[] parentsHidden = null; + public String[] siblings = null; + public final int displayColumn; + public final int displayRow; + public final ItemStack icon_item; + public final ResourceLocation icon_resource; + private int complexity; + private boolean isSpecial; + private boolean isSecondary; + private boolean isRound; + private boolean isStub; + private boolean isVirtual; + private boolean isConcealed; + private boolean isHidden; + private boolean isLost; + private boolean isAutoUnlock; + private ItemStack[] itemTriggers; + private String[] entityTriggers; + private TC_Aspect_Wrapper[] aspectTriggers; + private Object[] pages = null; + + public TC_ResearchItem_Wrapper(String key, String category) { + this.key = key; + this.category = category; + this.tags = new TC_AspectList_Wrapper(); + this.icon_resource = null; + this.icon_item = null; + this.displayColumn = 0; + this.displayRow = 0; + this.setVirtual(); + } + + public TC_ResearchItem_Wrapper( + String key, + String category, + TC_AspectList_Wrapper tags, + int col, + int row, + int complex, + ResourceLocation icon) { + this.key = key; + this.category = category; + this.tags = tags; + this.icon_resource = icon; + this.icon_item = null; + this.displayColumn = col; + this.displayRow = row; + this.complexity = complex; + if (this.complexity < 1) { + this.complexity = 1; + } + + if (this.complexity > 3) { + this.complexity = 3; + } + } + + public TC_ResearchItem_Wrapper( + String key, String category, TC_AspectList_Wrapper tags, int col, int row, int complex, ItemStack icon) { + this.key = key; + this.category = category; + this.tags = tags; + this.icon_item = icon; + this.icon_resource = null; + this.displayColumn = col; + this.displayRow = row; + this.complexity = complex; + if (this.complexity < 1) { + this.complexity = 1; + } + + if (this.complexity > 3) { + this.complexity = 3; + } + } + + public TC_ResearchItem_Wrapper setSpecial() { + this.isSpecial = true; + return this; + } + + public TC_ResearchItem_Wrapper setStub() { + this.isStub = true; + return this; + } + + public TC_ResearchItem_Wrapper setLost() { + this.isLost = true; + return this; + } + + public TC_ResearchItem_Wrapper setConcealed() { + this.isConcealed = true; + return this; + } + + public TC_ResearchItem_Wrapper setHidden() { + this.isHidden = true; + return this; + } + + public TC_ResearchItem_Wrapper setVirtual() { + this.isVirtual = true; + return this; + } + + public TC_ResearchItem_Wrapper setParents(String... par) { + this.parents = par; + return this; + } + + public TC_ResearchItem_Wrapper setParentsHidden(String... par) { + this.parentsHidden = par; + return this; + } + + public TC_ResearchItem_Wrapper setSiblings(String... sib) { + this.siblings = sib; + return this; + } + + public TC_ResearchItem_Wrapper setPages(Object... par) { + this.pages = par; + return this; + } + + public Object[] getPages() { + return this.pages; + } + + public TC_ResearchItem_Wrapper setItemTriggers(ItemStack... par) { + this.itemTriggers = par; + return this; + } + + public TC_ResearchItem_Wrapper setEntityTriggers(String... par) { + this.entityTriggers = par; + return this; + } + + public TC_ResearchItem_Wrapper setAspectTriggers(TC_Aspect_Wrapper... par) { + this.aspectTriggers = par; + return this; + } + + public ItemStack[] getItemTriggers() { + return this.itemTriggers; + } + + public String[] getEntityTriggers() { + return this.entityTriggers; + } + + public TC_Aspect_Wrapper[] getAspectTriggers() { + return this.aspectTriggers; + } + + public TC_ResearchItem_Wrapper registerResearchItem() { + ThaumcraftUtils.addResearch(this); + return this; + } + + public String getName() { + return StatCollector.translateToLocal("tc.research_name." + this.key); + } + + public String getText() { + return StatCollector.translateToLocal("tc.research_text." + this.key); + } + + public boolean isSpecial() { + return this.isSpecial; + } + + public boolean isStub() { + return this.isStub; + } + + public boolean isLost() { + return this.isLost; + } + + public boolean isConcealed() { + return this.isConcealed; + } + + public boolean isHidden() { + return this.isHidden; + } + + public boolean isVirtual() { + return this.isVirtual; + } + + public boolean isAutoUnlock() { + return this.isAutoUnlock; + } + + public TC_ResearchItem_Wrapper setAutoUnlock() { + this.isAutoUnlock = true; + return this; + } + + public boolean isRound() { + return this.isRound; + } + + public TC_ResearchItem_Wrapper setRound() { + this.isRound = true; + return this; + } + + public boolean isSecondary() { + return this.isSecondary; + } + + public TC_ResearchItem_Wrapper setSecondary() { + this.isSecondary = true; + return this; + } + + public int getComplexity() { + return this.complexity; + } + + public TC_ResearchItem_Wrapper setComplexity(int complexity) { + this.complexity = complexity; + return this; + } + + public TC_Aspect_Wrapper getResearchPrimaryTag() { + // TODO + return null; + } } diff --git a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchNoteData_Wrapper.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchNoteData_Wrapper.java index 5adf0150d9..df8d21bbaa 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchNoteData_Wrapper.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchNoteData_Wrapper.java @@ -2,13 +2,12 @@ package gtPlusPlus.xmod.thaumcraft.objects.wrapper.research; public class TC_ResearchNoteData_Wrapper { - public TC_ResearchNoteData_Wrapper(Object researchNoteData) { - // TODO Auto-generated constructor stub - } - - public Object getResearchNoteData() { - // TODO Auto-generated method stub - return null; - } - + public TC_ResearchNoteData_Wrapper(Object researchNoteData) { + // TODO Auto-generated constructor stub + } + + public Object getResearchNoteData() { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchPage_Wrapper.java b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchPage_Wrapper.java index 998f37bf8c..83ddd106a5 100644 --- a/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchPage_Wrapper.java +++ b/src/main/java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchPage_Wrapper.java @@ -1,12 +1,11 @@ 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; import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_InfusionRecipe_Wrapper; +import java.util.List; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.item.crafting.IRecipe; @@ -14,215 +13,214 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; public class TC_ResearchPage_Wrapper { - public TC_PageType_Wrapper type; - public String text; - public String research; - public ResourceLocation image; - public TC_AspectList_Wrapper aspects; - public Object recipe; - public ItemStack recipeOutput; - - public TC_ResearchPage_Wrapper(String text) { - this.type = TC_PageType_Wrapper.TEXT; - this.text = null; - this.research = null; - this.image = null; - this.aspects = null; - this.recipe = null; - this.recipeOutput = null; - this.type = TC_PageType_Wrapper.TEXT; - this.text = text; - } - - public TC_ResearchPage_Wrapper(String research, String text) { - this.type = TC_PageType_Wrapper.TEXT; - this.text = null; - this.research = null; - this.image = null; - this.aspects = null; - this.recipe = null; - this.recipeOutput = null; - this.type = TC_PageType_Wrapper.TEXT_CONCEALED; - this.research = research; - this.text = text; - } - - public TC_ResearchPage_Wrapper(IRecipe recipe) { - this.type = TC_PageType_Wrapper.TEXT; - this.text = null; - this.research = null; - this.image = null; - this.aspects = null; - this.recipe = null; - this.recipeOutput = null; - this.type = TC_PageType_Wrapper.NORMAL_CRAFTING; - this.recipe = recipe; - this.recipeOutput = recipe.getRecipeOutput(); - } - - public TC_ResearchPage_Wrapper(IRecipe[] recipe) { - this.type = TC_PageType_Wrapper.TEXT; - this.text = null; - this.research = null; - this.image = null; - this.aspects = null; - this.recipe = null; - this.recipeOutput = null; - this.type = TC_PageType_Wrapper.NORMAL_CRAFTING; - this.recipe = recipe; - } - - public TC_ResearchPage_Wrapper(TC_IArcaneRecipe_Wrapper[] recipe) { - this.type = TC_PageType_Wrapper.TEXT; - this.text = null; - this.research = null; - this.image = null; - this.aspects = null; - this.recipe = null; - this.recipeOutput = null; - this.type = TC_PageType_Wrapper.ARCANE_CRAFTING; - this.recipe = recipe; - } - - public TC_ResearchPage_Wrapper(TC_CrucibleRecipe_Wrapper[] recipe) { - this.type = TC_PageType_Wrapper.TEXT; - this.text = null; - this.research = null; - this.image = null; - this.aspects = null; - this.recipe = null; - this.recipeOutput = null; - this.type = TC_PageType_Wrapper.CRUCIBLE_CRAFTING; - this.recipe = recipe; - } - - public TC_ResearchPage_Wrapper(TC_InfusionRecipe_Wrapper[] recipe) { - this.type = TC_PageType_Wrapper.TEXT; - this.text = null; - this.research = null; - this.image = null; - this.aspects = null; - this.recipe = null; - this.recipeOutput = null; - this.type = TC_PageType_Wrapper.INFUSION_CRAFTING; - this.recipe = recipe; - } - - public TC_ResearchPage_Wrapper(List recipe) { - this.type = TC_PageType_Wrapper.TEXT; - this.text = null; - this.research = null; - this.image = null; - this.aspects = null; - this.recipe = null; - this.recipeOutput = null; - this.type = TC_PageType_Wrapper.COMPOUND_CRAFTING; - this.recipe = recipe; - } - - public TC_ResearchPage_Wrapper(TC_IArcaneRecipe_Wrapper recipe) { - this.type = TC_PageType_Wrapper.TEXT; - this.text = null; - this.research = null; - this.image = null; - this.aspects = null; - this.recipe = null; - this.recipeOutput = null; - this.type = TC_PageType_Wrapper.ARCANE_CRAFTING; - this.recipe = recipe; - this.recipeOutput = recipe.getRecipeOutput(); - } - - public TC_ResearchPage_Wrapper(TC_CrucibleRecipe_Wrapper recipe) { - this.type = TC_PageType_Wrapper.TEXT; - this.text = null; - this.research = null; - this.image = null; - this.aspects = null; - this.recipe = null; - this.recipeOutput = null; - this.type = TC_PageType_Wrapper.CRUCIBLE_CRAFTING; - this.recipe = recipe; - this.recipeOutput = recipe.getRecipeOutput(); - } - - public TC_ResearchPage_Wrapper(ItemStack input) { - this.type = TC_PageType_Wrapper.TEXT; - this.text = null; - this.research = null; - this.image = null; - this.aspects = null; - this.recipe = null; - this.recipeOutput = null; - this.type = TC_PageType_Wrapper.SMELTING; - this.recipe = input; - this.recipeOutput = FurnaceRecipes.smelting().getSmeltingResult(input); - } - - public TC_ResearchPage_Wrapper(TC_InfusionRecipe_Wrapper recipe) { - this.type = TC_PageType_Wrapper.TEXT; - this.text = null; - this.research = null; - this.image = null; - this.aspects = null; - this.recipe = null; - this.recipeOutput = null; - this.type = TC_PageType_Wrapper.INFUSION_CRAFTING; - this.recipe = recipe; - if (recipe.getRecipeOutput() instanceof ItemStack) { - this.recipeOutput = (ItemStack) recipe.getRecipeOutput(); - } else { - this.recipeOutput = recipe.getRecipeInput(); - } - - } - - public TC_ResearchPage_Wrapper(TC_InfusionEnchantmentRecipe_Wrapper recipe) { - this.type = TC_PageType_Wrapper.TEXT; - this.text = null; - this.research = null; - this.image = null; - this.aspects = null; - this.recipe = null; - this.recipeOutput = null; - this.type = TC_PageType_Wrapper.INFUSION_ENCHANTMENT; - this.recipe = recipe; - } - - public TC_ResearchPage_Wrapper(ResourceLocation image, String caption) { - this.type = TC_PageType_Wrapper.TEXT; - this.text = null; - this.research = null; - this.image = null; - this.aspects = null; - this.recipe = null; - this.recipeOutput = null; - this.type = TC_PageType_Wrapper.IMAGE; - this.image = image; - this.text = caption; - } - - public TC_ResearchPage_Wrapper(TC_AspectList_Wrapper as) { - this.type = TC_PageType_Wrapper.TEXT; - this.text = null; - this.research = null; - this.image = null; - this.aspects = null; - this.recipe = null; - this.recipeOutput = null; - this.type = TC_PageType_Wrapper.ASPECTS; - this.aspects = as; - } - - public String getTranslatedText() { - String ret = ""; - if (this.text != null) { - ret = StatCollector.translateToLocal(this.text); - if (ret.isEmpty()) { - ret = this.text; - } - } - - return ret; - } -}
\ No newline at end of file + public TC_PageType_Wrapper type; + public String text; + public String research; + public ResourceLocation image; + public TC_AspectList_Wrapper aspects; + public Object recipe; + public ItemStack recipeOutput; + + public TC_ResearchPage_Wrapper(String text) { + this.type = TC_PageType_Wrapper.TEXT; + this.text = null; + this.research = null; + this.image = null; + this.aspects = null; + this.recipe = null; + this.recipeOutput = null; + this.type = TC_PageType_Wrapper.TEXT; + this.text = text; + } + + public TC_ResearchPage_Wrapper(String research, String text) { + this.type = TC_PageType_Wrapper.TEXT; + this.text = null; + this.research = null; + this.image = null; + this.aspects = null; + this.recipe = null; + this.recipeOutput = null; + this.type = TC_PageType_Wrapper.TEXT_CONCEALED; + this.research = research; + this.text = text; + } + + public TC_ResearchPage_Wrapper(IRecipe recipe) { + this.type = TC_PageType_Wrapper.TEXT; + this.text = null; + this.research = null; + this.image = null; + this.aspects = null; + this.recipe = null; + this.recipeOutput = null; + this.type = TC_PageType_Wrapper.NORMAL_CRAFTING; + this.recipe = recipe; + this.recipeOutput = recipe.getRecipeOutput(); + } + + public TC_ResearchPage_Wrapper(IRecipe[] recipe) { + this.type = TC_PageType_Wrapper.TEXT; + this.text = null; + this.research = null; + this.image = null; + this.aspects = null; + this.recipe = null; + this.recipeOutput = null; + this.type = TC_PageType_Wrapper.NORMAL_CRAFTING; + this.recipe = recipe; + } + + public TC_ResearchPage_Wrapper(TC_IArcaneRecipe_Wrapper[] recipe) { + this.type = TC_PageType_Wrapper.TEXT; + this.text = null; + this.research = null; + this.image = null; + this.aspects = null; + this.recipe = null; + this.recipeOutput = null; + this.type = TC_PageType_Wrapper.ARCANE_CRAFTING; + this.recipe = recipe; + } + + public TC_ResearchPage_Wrapper(TC_CrucibleRecipe_Wrapper[] recipe) { + this.type = TC_PageType_Wrapper.TEXT; + this.text = null; + this.research = null; + this.image = null; + this.aspects = null; + this.recipe = null; + this.recipeOutput = null; + this.type = TC_PageType_Wrapper.CRUCIBLE_CRAFTING; + this.recipe = recipe; + } + + public TC_ResearchPage_Wrapper(TC_InfusionRecipe_Wrapper[] recipe) { + this.type = TC_PageType_Wrapper.TEXT; + this.text = null; + this.research = null; + this.image = null; + this.aspects = null; + this.recipe = null; + this.recipeOutput = null; + this.type = TC_PageType_Wrapper.INFUSION_CRAFTING; + this.recipe = recipe; + } + + public TC_ResearchPage_Wrapper(List recipe) { + this.type = TC_PageType_Wrapper.TEXT; + this.text = null; + this.research = null; + this.image = null; + this.aspects = null; + this.recipe = null; + this.recipeOutput = null; + this.type = TC_PageType_Wrapper.COMPOUND_CRAFTING; + this.recipe = recipe; + } + + public TC_ResearchPage_Wrapper(TC_IArcaneRecipe_Wrapper recipe) { + this.type = TC_PageType_Wrapper.TEXT; + this.text = null; + this.research = null; + this.image = null; + this.aspects = null; + this.recipe = null; + this.recipeOutput = null; + this.type = TC_PageType_Wrapper.ARCANE_CRAFTING; + this.recipe = recipe; + this.recipeOutput = recipe.getRecipeOutput(); + } + + public TC_ResearchPage_Wrapper(TC_CrucibleRecipe_Wrapper recipe) { + this.type = TC_PageType_Wrapper.TEXT; + this.text = null; + this.research = null; + this.image = null; + this.aspects = null; + this.recipe = null; + this.recipeOutput = null; + this.type = TC_PageType_Wrapper.CRUCIBLE_CRAFTING; + this.recipe = recipe; + this.recipeOutput = recipe.getRecipeOutput(); + } + + public TC_ResearchPage_Wrapper(ItemStack input) { + this.type = TC_PageType_Wrapper.TEXT; + this.text = null; + this.research = null; + this.image = null; + this.aspects = null; + this.recipe = null; + this.recipeOutput = null; + this.type = TC_PageType_Wrapper.SMELTING; + this.recipe = input; + this.recipeOutput = FurnaceRecipes.smelting().getSmeltingResult(input); + } + + public TC_ResearchPage_Wrapper(TC_InfusionRecipe_Wrapper recipe) { + this.type = TC_PageType_Wrapper.TEXT; + this.text = null; + this.research = null; + this.image = null; + this.aspects = null; + this.recipe = null; + this.recipeOutput = null; + this.type = TC_PageType_Wrapper.INFUSION_CRAFTING; + this.recipe = recipe; + if (recipe.getRecipeOutput() instanceof ItemStack) { + this.recipeOutput = (ItemStack) recipe.getRecipeOutput(); + } else { + this.recipeOutput = recipe.getRecipeInput(); + } + } + + public TC_ResearchPage_Wrapper(TC_InfusionEnchantmentRecipe_Wrapper recipe) { + this.type = TC_PageType_Wrapper.TEXT; + this.text = null; + this.research = null; + this.image = null; + this.aspects = null; + this.recipe = null; + this.recipeOutput = null; + this.type = TC_PageType_Wrapper.INFUSION_ENCHANTMENT; + this.recipe = recipe; + } + + public TC_ResearchPage_Wrapper(ResourceLocation image, String caption) { + this.type = TC_PageType_Wrapper.TEXT; + this.text = null; + this.research = null; + this.image = null; + this.aspects = null; + this.recipe = null; + this.recipeOutput = null; + this.type = TC_PageType_Wrapper.IMAGE; + this.image = image; + this.text = caption; + } + + public TC_ResearchPage_Wrapper(TC_AspectList_Wrapper as) { + this.type = TC_PageType_Wrapper.TEXT; + this.text = null; + this.research = null; + this.image = null; + this.aspects = null; + this.recipe = null; + this.recipeOutput = null; + this.type = TC_PageType_Wrapper.ASPECTS; + this.aspects = as; + } + + public String getTranslatedText() { + String ret = ""; + if (this.text != null) { + ret = StatCollector.translateToLocal(this.text); + if (ret.isEmpty()) { + ret = this.text; + } + } + + return ret; + } +} 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<aspect.length;g++) { - if (amounts[g] != null && amounts[g] > 0) { - //aspects[g] = new GTPP_AspectStack(aspect[g], amounts[g]); - } - } - Pair<ItemStack, GTPP_AspectStack[]> k = new Pair<ItemStack, GTPP_AspectStack[]>(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<GTPP_AspectStack> 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<TC_ResearchItem_Wrapper> 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<Object> tPages = new ArrayList<Object>(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<String> tParentResearches = new ArrayList<String>(); - for (String tParent : aParentResearches) { - if (GregTech_API.sRecipeFile.get(ConfigCategories.Recipes.researches, aResearch, true)) { - tParentResearches.add(tParent); - } - } - if (tParentResearches.size() > 0) { - rResearch.setParents((String[]) tParentResearches.toArray(new String[tParentResearches.size()])); - rResearch.setConcealed(); - } - } - if (aResearchTriggers != null) { - rResearch.setItemTriggers(aResearchTriggers); - rResearch.setHidden(); - } - - 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<GTPP_AspectStack> 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<GTPP_AspectStack> 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<GTPP_AspectStack> 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<GTPP_AspectStack> 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<Block>) 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<GTPP_AspectStack> 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<ItemStack, GTPP_AspectStack[]> k = new Pair<ItemStack, GTPP_AspectStack[]>(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<GTPP_AspectStack> 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<TC_ResearchItem_Wrapper> 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<Object> tPages = new ArrayList<Object>(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<String> tParentResearches = new ArrayList<String>(); + for (String tParent : aParentResearches) { + if (GregTech_API.sRecipeFile.get(ConfigCategories.Recipes.researches, aResearch, true)) { + tParentResearches.add(tParent); + } + } + if (tParentResearches.size() > 0) { + rResearch.setParents((String[]) tParentResearches.toArray(new String[tParentResearches.size()])); + rResearch.setConcealed(); + } + } + if (aResearchTriggers != null) { + rResearch.setItemTriggers(aResearchTriggers); + rResearch.setHidden(); + } + + 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<GTPP_AspectStack> 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<GTPP_AspectStack> 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<GTPP_AspectStack> 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<GTPP_AspectStack> 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<Block>) 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<GTPP_AspectStack> 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 + + } } |