diff --git a/dependencies.gradle b/dependencies.gradle index f9c01f45..a0c97158 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -5,8 +5,9 @@ dependencies { implementation("com.github.GTNewHorizons:CodeChickenCore:1.4.11:dev") implementation("com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-859-GTNH:dev") implementation("thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev") - implementation(rfg.deobf("curse.maven:thaumcraft-nei-plugin-225095:2241913")) { transitive = false } + devOnlyNonPublishable("com.github.GTNewHorizons:AspectRecipeIndex:1.0.0:dev") + compileOnly(rfg.deobf("curse.maven:thaumcraft-nei-plugin-225095:2241913")) { transitive = false } compileOnly("com.github.GTNewHorizons:waila:1.19.22:dev") { transitive = false } compileOnly("curse.maven:computercraft-67504:2269339") { transitive = false } compileOnly("curse.maven:cofh-lib-220333:2388748") { transitive = false } diff --git a/src/main/java/thaumicenergistics/common/integration/ModsList.java b/src/main/java/thaumicenergistics/common/integration/ModsList.java new file mode 100644 index 00000000..91917c51 --- /dev/null +++ b/src/main/java/thaumicenergistics/common/integration/ModsList.java @@ -0,0 +1,27 @@ +package thaumicenergistics.common.integration; + +import cpw.mods.fml.common.Loader; + +public enum ModsList { + + THAUMCRAFT_NEI_PLUGIN("thaumcraftneiplugin"), + ASPECT_RECIPE_INDEX("aspectrecipeindex"); + + private final String modID; + private Boolean isLoaded; + + ModsList(String modID) { + this.modID = modID; + } + + public boolean isLoaded() { + if (isLoaded == null) { + isLoaded = Loader.isModLoaded(modID); + } + return isLoaded; + } + + public String modID() { + return modID; + } +} diff --git a/src/main/java/thaumicenergistics/common/integration/ModuleNEI.java b/src/main/java/thaumicenergistics/common/integration/ModuleNEI.java index 5352b4fb..708378b9 100644 --- a/src/main/java/thaumicenergistics/common/integration/ModuleNEI.java +++ b/src/main/java/thaumicenergistics/common/integration/ModuleNEI.java @@ -14,6 +14,10 @@ import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import com.gtnewhorizons.aspectrecipeindex.nei.arcaneworkbench.ShapedArcaneRecipeHandler; +import com.gtnewhorizons.aspectrecipeindex.nei.arcaneworkbench.ShapelessArcaneRecipeHandler; +import com.gtnewhorizons.aspectrecipeindex.nei.arcaneworkbench.WandRecipeHandler; + import appeng.util.Platform; import codechicken.nei.PositionedStack; import codechicken.nei.api.API; @@ -22,6 +26,7 @@ import codechicken.nei.api.IOverlayHandler; import codechicken.nei.api.IStackPositioner; import codechicken.nei.recipe.IRecipeHandler; import cpw.mods.fml.common.Optional; +import cpw.mods.fml.common.event.FMLInterModComms; import thaumicenergistics.client.gui.GuiArcaneCraftingTerminal; import thaumicenergistics.client.gui.abstraction.ThEBaseGui; import thaumicenergistics.common.container.ContainerPartArcaneCraftingTerminal; @@ -277,10 +282,49 @@ public class ModuleNEI { thaumicenergistics.client.gui.GuiArcaneCraftingTerminal.class, arcaneOverlayHandler, "arcaneshapelessrecipes"); + API.registerGuiOverlayHandler( + thaumicenergistics.client.gui.GuiArcaneCraftingTerminal.class, + arcaneOverlayHandler, + "thaumcraft.arcane.shaped"); + API.registerGuiOverlayHandler( + thaumicenergistics.client.gui.GuiArcaneCraftingTerminal.class, + arcaneOverlayHandler, + "thaumcraft.arcane.shapeless"); + API.registerGuiOverlayHandler( + thaumicenergistics.client.gui.GuiArcaneCraftingTerminal.class, + arcaneOverlayHandler, + "thaumcraft.wands"); API.registerNEIGuiHandler(new NEIGuiHandler()); // Hide the crafting aspect item API.hideItem(ItemEnum.CRAFTING_ASPECT.getStack()); + + if (ModsList.ASPECT_RECIPE_INDEX.isLoaded()) { + registerCatalystInfo( + new ShapedArcaneRecipeHandler().getOverlayIdentifier(), + "thaumicenergistics:part.base:5"); + registerCatalystInfo( + new ShapedArcaneRecipeHandler().getOverlayIdentifier(), + "thaumicenergistics:thaumicenergistics.block.arcane.assembler"); + registerCatalystInfo(new WandRecipeHandler().getOverlayIdentifier(), "thaumicenergistics:part.base:5"); + registerCatalystInfo( + new WandRecipeHandler().getOverlayIdentifier(), + "thaumicenergistics:thaumicenergistics.block.arcane.assembler"); + registerCatalystInfo( + new ShapelessArcaneRecipeHandler().getOverlayIdentifier(), + "thaumicenergistics:part.base:5"); + registerCatalystInfo( + new ShapelessArcaneRecipeHandler().getOverlayIdentifier(), + "thaumicenergistics:thaumicenergistics.block.arcane.assembler"); + } + } + + private static void registerCatalystInfo(String handlerName, String stack) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setString("handlerID", handlerName); + nbt.setString("itemName", stack); + nbt.setInteger("priority", -1); + FMLInterModComms.sendMessage("NotEnoughItems", "registerCatalystInfo", nbt); } } diff --git a/src/main/java/thaumicenergistics/common/integration/tc/EssentiaItemContainerHelper.java b/src/main/java/thaumicenergistics/common/integration/tc/EssentiaItemContainerHelper.java index f2f4df78..ab1ae33f 100644 --- a/src/main/java/thaumicenergistics/common/integration/tc/EssentiaItemContainerHelper.java +++ b/src/main/java/thaumicenergistics/common/integration/tc/EssentiaItemContainerHelper.java @@ -4,9 +4,8 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import com.djgiannuzz.thaumcraftneiplugin.items.ItemAspect; +import com.gtnewhorizons.aspectrecipeindex.common.items.ItemAspect; -import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Optional; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.AspectList; @@ -21,6 +20,7 @@ import thaumcraft.common.items.ItemWispEssence; import thaumicenergistics.api.IThEEssentiaContainerPermission; import thaumicenergistics.api.IThETransportPermissions; import thaumicenergistics.api.ThEApi; +import thaumicenergistics.common.integration.ModsList; import thaumicenergistics.common.items.ItemBlockEssentiaVibrationChamber; import thaumicenergistics.common.tiles.abstraction.TileEVCBase; @@ -61,7 +61,12 @@ public final class EssentiaItemContainerHelper { /** * {@link com.djgiannuzz.thaumcraftneiplugin.items.ItemAspect} */ - ItemAspect; + TCNEIItemAspect, + + /** + * {@link ItemAspect} + */ + ARIItemAspect; } /** @@ -275,7 +280,7 @@ public final class EssentiaItemContainerHelper { /** * Gets the information about the container as it was registered to the whitelist. * - * @param itemstack + * @param itemStack * @return */ public IThEEssentiaContainerPermission getContainerInfo(final ItemStack itemStack) { @@ -333,8 +338,10 @@ public final class EssentiaItemContainerHelper { case WispEssence: return this.getAspectFromAnyContainerItem(itemStack); - case ItemAspect: - return this.getAspectFromItemAspect(itemStack); + case TCNEIItemAspect: + return this.getAspectFromTCNEIItemAspect(itemStack); + case ARIItemAspect: + return this.getAspectFromARIItemAspect(itemStack); case Invalid: break; @@ -381,9 +388,15 @@ public final class EssentiaItemContainerHelper { return AspectItemType.JarLabel; } - // ItemAspect? - if (Loader.isModLoaded("thaumcraftneiplugin") && item instanceof ItemAspect) { - return AspectItemType.ItemAspect; + // ARI ItemAspect? + if (ModsList.ASPECT_RECIPE_INDEX.isLoaded() && item instanceof ItemAspect) { + return AspectItemType.ARIItemAspect; + } + + // TCNEI ItemAspect? + if (ModsList.THAUMCRAFT_NEI_PLUGIN.isLoaded() + && item instanceof com.djgiannuzz.thaumcraftneiplugin.items.ItemAspect) { + return AspectItemType.TCNEIItemAspect; } } } @@ -440,7 +453,7 @@ public final class EssentiaItemContainerHelper { /** * Quick check to see if the item is whitelisted. * - * @param item + * @param container * @param metadata * @return */ @@ -451,7 +464,7 @@ public final class EssentiaItemContainerHelper { /** * Quick check to see if the itemstack is whitelisted. * - * @param item + * @param container * @return */ public boolean isContainerWhitelisted(final ItemStack container) { @@ -539,13 +552,24 @@ public final class EssentiaItemContainerHelper { } /** - * Get the aspect of the ItemAspect. + * Get the aspect of the ARI ItemAspect. + * + * @param itemStack + * @return + */ + @Optional.Method(modid = "aspectrecipeindex") + public Aspect getAspectFromARIItemAspect(ItemStack itemStack) { + return ItemAspect.getAspect(itemStack); + } + + /** + * Get the aspect of the TCNEI ItemAspect. * * @param itemStack * @return */ @Optional.Method(modid = "thaumcraftneiplugin") - public Aspect getAspectFromItemAspect(ItemStack itemStack) { - return ItemAspect.getAspects(itemStack).getAspects()[0]; + public Aspect getAspectFromTCNEIItemAspect(ItemStack itemStack) { + return com.djgiannuzz.thaumcraftneiplugin.items.ItemAspect.getAspects(itemStack).getAspects()[0]; } } diff --git a/src/main/java/thaumicenergistics/common/storage/AEEssentiaStack.java b/src/main/java/thaumicenergistics/common/storage/AEEssentiaStack.java index 2d6832c7..d70c02e6 100644 --- a/src/main/java/thaumicenergistics/common/storage/AEEssentiaStack.java +++ b/src/main/java/thaumicenergistics/common/storage/AEEssentiaStack.java @@ -25,7 +25,6 @@ import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEStackType; import appeng.api.storage.data.IAETagCompound; import appeng.util.item.AEStack; -import cpw.mods.fml.common.Loader; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; @@ -34,6 +33,7 @@ import thaumcraft.api.aspects.AspectList; import thaumcraft.common.Thaumcraft; import thaumicenergistics.client.gui.ThEGuiHelper; import thaumicenergistics.client.render.RendererAEEssentiaStack; +import thaumicenergistics.common.integration.ModsList; public class AEEssentiaStack extends AEStack { @@ -278,7 +278,14 @@ public class AEEssentiaStack extends AEStack { @Nullable @Override public ItemStack getItemStackForNEI() { - if (Loader.isModLoaded("thaumcraftneiplugin")) { + if (ModsList.ASPECT_RECIPE_INDEX.isLoaded()) { + ItemStack stack = new ItemStack( + com.gtnewhorizons.aspectrecipeindex.ModItems.itemAspect, + (int) Math.min(this.getStackSize(), Integer.MAX_VALUE)); + com.gtnewhorizons.aspectrecipeindex.common.items.ItemAspect.setAspect(stack, this.aspect); + return stack; + } + if (ModsList.THAUMCRAFT_NEI_PLUGIN.isLoaded()) { ItemStack stack = new ItemStack(ModItems.itemAspect); ItemAspect.setAspects( stack, diff --git a/src/main/java/thaumicenergistics/common/storage/AEEssentiaStackType.java b/src/main/java/thaumicenergistics/common/storage/AEEssentiaStackType.java index bc281155..e1508f23 100644 --- a/src/main/java/thaumicenergistics/common/storage/AEEssentiaStackType.java +++ b/src/main/java/thaumicenergistics/common/storage/AEEssentiaStackType.java @@ -14,12 +14,11 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Range; -import com.djgiannuzz.thaumcraftneiplugin.items.ItemAspect; +import com.gtnewhorizons.aspectrecipeindex.common.items.ItemAspect; import appeng.api.storage.data.IAEStackType; import appeng.api.storage.data.IItemList; import appeng.client.texture.ExtraBlockTextures; -import cpw.mods.fml.common.Loader; import io.netty.buffer.ByteBuf; import it.unimi.dsi.fastutil.objects.ObjectLongImmutablePair; import it.unimi.dsi.fastutil.objects.ObjectLongPair; @@ -31,6 +30,7 @@ import thaumcraft.common.blocks.ItemJarFilled; import thaumcraft.common.items.ItemEssence; import thaumicenergistics.api.IThEEssentiaContainerPermission; import thaumicenergistics.api.items.IRestrictedEssentiaContainerItem; +import thaumicenergistics.common.integration.ModsList; import thaumicenergistics.common.integration.tc.EssentiaItemContainerHelper; import thaumicenergistics.common.registries.ThEStrings; @@ -102,15 +102,21 @@ public class AEEssentiaStackType implements IAEStackType { @Override public @Nullable AEEssentiaStack convertStackFromItem(@NotNull ItemStack itemStack) { - if (Loader.isModLoaded("thaumcraftneiplugin") && itemStack.getItem() instanceof ItemAspect) { - AspectList list = ItemAspect.getAspects(itemStack); - if (list != null) { - Aspect aspect = list.getAspects()[0]; - if (aspect != null) { - return new AEEssentiaStack(aspect); - } + if (ModsList.ASPECT_RECIPE_INDEX.isLoaded() && itemStack.getItem() instanceof ItemAspect) { + Aspect aspect = ItemAspect.getAspect(itemStack); + if (aspect != null) { + return new AEEssentiaStack(aspect, itemStack.stackSize); } - } + } else if (ModsList.THAUMCRAFT_NEI_PLUGIN.isLoaded() + && itemStack.getItem() instanceof com.djgiannuzz.thaumcraftneiplugin.items.ItemAspect) { + AspectList list = com.djgiannuzz.thaumcraftneiplugin.items.ItemAspect.getAspects(itemStack); + if (list != null) { + Aspect aspect = list.getAspects()[0]; + if (aspect != null) { + return new AEEssentiaStack(aspect, itemStack.stackSize); + } + } + } return null; }