Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix IMM and IAT aspect check #763

Merged
merged 3 commits into from
Jan 29, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -15,6 +15,7 @@
import static thaumcraft.common.lib.research.ResearchManager.getResearchForPlayer;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;

@@ -38,6 +39,7 @@
import com.Nxer.TwistSpaceTechnology.common.machine.multiMachineClasses.processingLogics.GTCM_ProcessingLogic;
import com.Nxer.TwistSpaceTechnology.common.misc.OverclockType;
import com.Nxer.TwistSpaceTechnology.common.recipeMap.GTCMRecipe;
import com.Nxer.TwistSpaceTechnology.common.recipeMap.metadata.IndustrialMagicMatrixRecipeIndexKey;
import com.Nxer.TwistSpaceTechnology.system.Thaumcraft.TCRecipeTools;
import com.Nxer.TwistSpaceTechnology.util.TextEnums;
import com.Nxer.TwistSpaceTechnology.util.TextLocalization;
@@ -128,32 +130,53 @@ protected CheckRecipeResult validateRecipe(@Nonnull GTRecipe recipe) {
int Para = createParallelHelper(recipe).setConsumption(false)
.build()
.getCurrentParallel();
for (TCRecipeTools.InfusionCraftingRecipe recipe1 : TCRecipeTools.ICR) {
if (recipe1.getOutput()
.isItemEqual(recipe.mOutputs[0])) {
if (!(isResearchComplete(recipe1.getResearch()))) {
return Research_not_completed;
}
if (!(getControllerSlot() == null)) {
if (getControllerSlot().isItemEqual(EssentiaCell_Creative)
|| getControllerSlot().isItemEqual(ProofOfHeroes)) {
return CheckRecipeResultRegistry.SUCCESSFUL;
}
}
for (Aspect aspect : recipe1.getInputAspects()
.getAspects()) {
if (mTileInfusionProvider.isEmpty()) return CheckRecipeResultRegistry.NO_RECIPE;
for (TileInfusionProvider hatch : mTileInfusionProvider) {

if (hatch.takeFromContainer(aspect, recipe1.getAspectAmount(aspect) * Para)) {
return CheckRecipeResultRegistry.SUCCESSFUL;
} else return Essentia_InsentiaL;
}
int recipeIndex = recipe.getMetadataOrDefault(IndustrialMagicMatrixRecipeIndexKey.INSTANCE, -1);
if (recipeIndex == -1) {
return CheckRecipeResultRegistry.NO_RECIPE;
}

TCRecipeTools.InfusionCraftingRecipe tcRecipe = TCRecipeTools.ICR.get(recipeIndex);

if (!tcRecipe.getOutput()
.isItemEqual(recipe.mOutputs[0])) {
return CheckRecipeResultRegistry.NO_RECIPE;
}

if (!(isResearchComplete(tcRecipe.getResearch()))) {
return Research_not_completed;
}

if (!(getControllerSlot() == null)) {
if (getControllerSlot().isItemEqual(EssentiaCell_Creative)
|| getControllerSlot().isItemEqual(ProofOfHeroes)) {
return CheckRecipeResultRegistry.SUCCESSFUL;
}
}

AspectList aspects = tcRecipe.getInputAspects();
if (aspects.visSize() == 0) {
return CheckRecipeResultRegistry.SUCCESSFUL;
}
if (mTileInfusionProvider.isEmpty()) {
return Essentia_InsentiaL;
}
HashMap<Aspect, TileInfusionProvider> hatchMap = new HashMap<>();
aspectLoop: for (Aspect aspect : aspects.getAspects()) {
for (TileInfusionProvider hatch : mTileInfusionProvider) {
if (hatch.doesContainerContainAmount(aspect, aspects.getAmount(aspect) * Para)) {
hatchMap.put(aspect, hatch);
continue aspectLoop;
}
}
return Essentia_InsentiaL;
}
for (Aspect aspect : aspects.getAspects()) {
hatchMap.get(aspect)
.takeFromContainer(aspect, aspects.getAmount(aspect) * Para);
}
return CheckRecipeResultRegistry.NO_RECIPE;

return CheckRecipeResultRegistry.SUCCESSFUL;
}
}.setMaxParallelSupplier(this::getMaxParallelRecipes);
}
Original file line number Diff line number Diff line change
@@ -46,6 +46,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;

@@ -169,16 +170,30 @@ protected CheckRecipeResult validateRecipe(@NotNull GTRecipe recipe) {
return CheckRecipeResultRegistry.SUCCESSFUL;
}
}
for (Aspect aspect : recipe1.getInputAspects()
.getAspects()) {
if (mTileInfusionProvider.isEmpty()) return CheckRecipeResultRegistry.NO_RECIPE;

AspectList aspects = recipe1.getInputAspects();
if (aspects.visSize() == 0) {
return CheckRecipeResultRegistry.SUCCESSFUL;
}
if (mTileInfusionProvider.isEmpty()) {
return Essentia_InsentiaL;
}
HashMap<Aspect, TileInfusionProvider> hatchMap = new HashMap<>();
aspectLoop: for (Aspect aspect : aspects.getAspects()) {
for (TileInfusionProvider hatch : mTileInfusionProvider) {
if (hatch.takeFromContainer(aspect, recipe1.getAspectAmount(aspect) * Para)) {
return CheckRecipeResultRegistry.SUCCESSFUL;
} else return Essentia_InsentiaL;
if (hatch.doesContainerContainAmount(aspect, aspects.getAmount(aspect) * Para)) {
hatchMap.put(aspect, hatch);
continue aspectLoop;
}
}
return Essentia_InsentiaL;
}
return CheckRecipeResultRegistry.NO_RECIPE;
for (Aspect aspect : aspects.getAspects()) {
hatchMap.get(aspect)
.takeFromContainer(aspect, aspects.getAmount(aspect) * Para);
}

return CheckRecipeResultRegistry.SUCCESSFUL;
}
}.setMaxParallelSupplier(this::getMaxParallelRecipes);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.Nxer.TwistSpaceTechnology.common.recipeMap.metadata;

import gregtech.api.recipe.RecipeMetadataKey;
import gregtech.api.recipe.metadata.SimpleRecipeMetadataKey;

public class IndustrialMagicMatrixRecipeIndexKey {

public static final RecipeMetadataKey<Integer> INSTANCE = SimpleRecipeMetadataKey
.create(Integer.class, "imm_recipe_index");
}
Original file line number Diff line number Diff line change
@@ -6,6 +6,7 @@
import static thaumcraft.common.config.ConfigBlocks.blockCosmeticSolid;
import static thaumcraft.common.config.ConfigItems.*;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

@@ -14,6 +15,7 @@

import com.Nxer.TwistSpaceTechnology.common.api.ModBlocksHandler;
import com.Nxer.TwistSpaceTechnology.common.recipeMap.GTCMRecipe;
import com.Nxer.TwistSpaceTechnology.common.recipeMap.metadata.IndustrialMagicMatrixRecipeIndexKey;
import com.Nxer.TwistSpaceTechnology.recipe.IRecipePool;
import com.Nxer.TwistSpaceTechnology.system.Thaumcraft.TCRecipeTools;
import com.Nxer.TwistSpaceTechnology.util.TextEnums;
@@ -71,7 +73,9 @@ public void loadRecipes() {
TCRecipeTools.getInfusionCraftingRecipe();

final IRecipeMap IIM = GTCMRecipe.IndustrialMagicMatrixRecipe;
for (TCRecipeTools.InfusionCraftingRecipe Recipe : TCRecipeTools.ICR) {
ArrayList<TCRecipeTools.InfusionCraftingRecipe> icr = TCRecipeTools.ICR;
for (int i = 0; i < icr.size(); i++) {
TCRecipeTools.InfusionCraftingRecipe Recipe = icr.get(i);
if (shouldSkip(
Recipe.getOutput()
.getItem()))
@@ -88,6 +92,7 @@ public void loadRecipes() {
.ignoreCollision()
.clearInvalid()
.special(Essence)
.metadata(IndustrialMagicMatrixRecipeIndexKey.INSTANCE, i)
.itemInputsUnified(checkInputSpecial(Recipe.getInputItem()))
.itemOutputs((Recipe.getOutput()))
.fluidInputs()