Add support for Aspect Recipe Index (#111)

Co-authored-by: Martin Robertz <dream-master@gmx.net>
This commit is contained in:
koolkrafter5andMartin Robertz authored and GitHub committed 2026-03-09 14:30:15 +01:00
1 parent 0536d96566
commit a150657e29
6 files changed
+136 -27

No files matched your search

+2 -1
View File
@@ -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 }
@@ -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;
}
}
@@ -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);
}
}
@@ -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];
}
}
@@ -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<AEEssentiaStack> {
@@ -278,7 +278,14 @@ public class AEEssentiaStack extends AEStack<AEEssentiaStack> {
@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,
@@ -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<AEEssentiaStack> {
@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;
}