mirror of
https://github.com/GTNewHorizons/ThaumicEnergistics.git
synced 2026-10-25 20:32:27 +00:00
Add support for Aspect Recipe Index (#111)
Co-authored-by: Martin Robertz <dream-master@gmx.net>
This commit is contained in:
1 parent
0536d96566
commit
a150657e29
6 files changed
+136
-27
No files matched your search
+2
-1
@@ -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);
|
||||
}
|
||||
}
|
||||
+38
-14
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user