aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGDCloud <93287602+GDCloudstrike@users.noreply.github.com>2024-02-18 12:55:19 +0100
committerGitHub <noreply@github.com>2024-02-18 12:55:19 +0100
commit2a7811cd974957f675aa7e2cc48df76d78a4f509 (patch)
tree1f9dbaf08983f3359c41b3a599f5b7dda4247973 /src/main/java/com
parentd47bfec4706b927e62b160dba585cdbb647a886e (diff)
downloadGT5-Unofficial-2a7811cd974957f675aa7e2cc48df76d78a4f509.tar.gz
GT5-Unofficial-2a7811cd974957f675aa7e2cc48df76d78a4f509.tar.bz2
GT5-Unofficial-2a7811cd974957f675aa7e2cc48df76d78a4f509.zip
Migrate dissolution tank & digester to processingLogic (#86)
* dissolution tank * digester * update * address review * make dissolution tank void and stop if the input ratio is wrong * update --------- Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/elisis/gtnhlanth/common/tileentity/Digester.java60
-rw-r--r--src/main/java/com/elisis/gtnhlanth/common/tileentity/DissolutionTank.java60
2 files changed, 70 insertions, 50 deletions
diff --git a/src/main/java/com/elisis/gtnhlanth/common/tileentity/Digester.java b/src/main/java/com/elisis/gtnhlanth/common/tileentity/Digester.java
index 3af649987b..7cd4605e84 100644
--- a/src/main/java/com/elisis/gtnhlanth/common/tileentity/Digester.java
+++ b/src/main/java/com/elisis/gtnhlanth/common/tileentity/Digester.java
@@ -18,11 +18,10 @@ import static gregtech.api.enums.Textures.BlockIcons.casingTexturePages;
import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
import static gregtech.api.util.GT_StructureUtility.ofCoil;
-import java.util.ArrayList;
+import javax.annotation.Nonnull;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;
-import net.minecraftforge.fluids.FluidStack;
import com.elisis.gtnhlanth.api.recipe.LanthanidesRecipeMaps;
import com.elisis.gtnhlanth.util.DescTextLocalization;
@@ -36,10 +35,14 @@ import gregtech.api.enums.HeatingCoilLevel;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.logic.ProcessingLogic;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_EnhancedMultiBlockBase;
import gregtech.api.recipe.RecipeMap;
+import gregtech.api.recipe.check.CheckRecipeResult;
+import gregtech.api.recipe.check.CheckRecipeResultRegistry;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
+import gregtech.api.util.GT_OverclockCalculator;
import gregtech.api.util.GT_Recipe;
public class Digester extends GT_MetaTileEntity_EnhancedMultiBlockBase<Digester> implements ISurvivalConstructable {
@@ -101,37 +104,42 @@ public class Digester extends GT_MetaTileEntity_EnhancedMultiBlockBase<Digester>
}
@Override
- public boolean checkRecipe(ItemStack itemStack) {
- // GT_Log.out.print("Digester: in checkRecipe\n");
+ protected ProcessingLogic createProcessingLogic() {
+ return new ProcessingLogic() {
- ArrayList<FluidStack> tFluidInputs = this.getStoredFluids();
- FluidStack[] tFluidInputArray = tFluidInputs.toArray(new FluidStack[0]);
- ItemStack[] tItems = this.getStoredInputs().toArray(new ItemStack[0]);
- long tVoltage = this.getMaxInputVoltage();
+ @Nonnull
+ @Override
+ protected GT_OverclockCalculator createOverclockCalculator(@Nonnull GT_Recipe recipe) {
+ return super.createOverclockCalculator(recipe).enablePerfectOC();
+ }
- // GT_Log.out.print("Digester: " + Arrays.toString(mInventory));
+ @Override
+ protected @Nonnull CheckRecipeResult validateRecipe(@Nonnull GT_Recipe recipe) {
+ return recipe.mSpecialValue <= Digester.this.getCoilLevel().getHeat()
+ ? CheckRecipeResultRegistry.SUCCESSFUL
+ : CheckRecipeResultRegistry.insufficientHeat(recipe.mSpecialValue);
+ }
- GT_Recipe tRecipe = LanthanidesRecipeMaps.digesterRecipes
- .findRecipe(getBaseMetaTileEntity(), false, tVoltage, tFluidInputArray, tItems);
-
- if (tRecipe == null || !tRecipe.isRecipeInputEqual(true, tFluidInputArray, tItems)) return false;
- // GT_Log.out.print("Recipe not null\n");
+ };
+ }
- this.mEfficiency = (10000 - (this.getIdealStatus() - this.getRepairStatus()) * 1000);
- this.mEfficiencyIncrease = 10000;
- this.calculateOverclockedNessMultiInternal(tRecipe.mEUt, tRecipe.mDuration, 1, tVoltage, true);
+ @Override
+ public boolean supportsVoidProtection() {
+ return true;
+ }
- if (mMaxProgresstime == Integer.MAX_VALUE - 1 && this.mEUt == Integer.MAX_VALUE - 1) return false;
+ @Override
+ public boolean supportsInputSeparation() {
+ return true;
+ }
- if (this.mEUt > 0) this.mEUt = (-this.mEUt);
- // GT_Log.out.print("valid values");
+ @Override
+ public boolean supportsBatchMode() {
+ return true;
+ }
- if (tRecipe.mSpecialValue > this.getCoilLevel().getHeat()) return false;
- // GT_Log.out.print("Coils good\n");
- // GT_Log.out.print(tRecipe.getFluidOutput(0).getLocalizedName());
- this.mOutputFluids = tRecipe.mFluidOutputs;
- this.mOutputItems = tRecipe.mOutputs;
- this.updateSlots();
+ @Override
+ public boolean supportsSingleRecipeLocking() {
return true;
}
diff --git a/src/main/java/com/elisis/gtnhlanth/common/tileentity/DissolutionTank.java b/src/main/java/com/elisis/gtnhlanth/common/tileentity/DissolutionTank.java
index 2432ead38c..080fdc8c54 100644
--- a/src/main/java/com/elisis/gtnhlanth/common/tileentity/DissolutionTank.java
+++ b/src/main/java/com/elisis/gtnhlanth/common/tileentity/DissolutionTank.java
@@ -17,13 +17,18 @@ import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_OIL_CRACKER_G
import static gregtech.api.enums.Textures.BlockIcons.casingTexturePages;
import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
+import java.util.Arrays;
import java.util.List;
+import javax.annotation.Nonnull;
+
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import org.jetbrains.annotations.NotNull;
+
import com.elisis.gtnhlanth.api.recipe.LanthanidesRecipeMaps;
import com.elisis.gtnhlanth.util.DescTextLocalization;
import com.github.bartimaeusnek.bartworks.common.loaders.ItemRegistry;
@@ -37,8 +42,12 @@ import gregtech.api.interfaces.ISecondaryDescribable;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.logic.ProcessingLogic;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_EnhancedMultiBlockBase;
import gregtech.api.recipe.RecipeMap;
+import gregtech.api.recipe.check.CheckRecipeResult;
+import gregtech.api.recipe.check.CheckRecipeResultRegistry;
+import gregtech.api.recipe.check.SimpleCheckRecipeResult;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
@@ -96,36 +105,39 @@ public class DissolutionTank extends GT_MetaTileEntity_EnhancedMultiBlockBase<Di
}
@Override
- public boolean checkRecipe(ItemStack itemStack) {
- // GT_Log.out.print("in checkRecipe");
-
- List<FluidStack> tFluidInputs = this.getStoredFluids();
- FluidStack[] tFluidInputArray = tFluidInputs.toArray(new FluidStack[0]);
- ItemStack[] tItems = this.getStoredInputs().toArray(new ItemStack[0]);
- long tVoltage = this.getMaxInputVoltage();
-
- GT_Recipe tRecipe = LanthanidesRecipeMaps.dissolutionTankRecipes
- .findRecipe(getBaseMetaTileEntity(), false, tVoltage, tFluidInputArray, tItems);
+ protected ProcessingLogic createProcessingLogic() {
+ return new ProcessingLogic() {
- if (tRecipe == null || !tRecipe.isRecipeInputEqual(true, tFluidInputArray, tItems)) return false;
- // GT_Log.out.print("Recipe not null\n");
+ @NotNull
+ @Override
+ protected CheckRecipeResult onRecipeStart(@Nonnull GT_Recipe recipe) {
+ if (!checkRatio(recipe, Arrays.asList(inputFluids))) {
+ criticalStopMachine();
+ return SimpleCheckRecipeResult.ofFailurePersistOnShutdown("dissolution_ratio");
+ }
+ return CheckRecipeResultRegistry.SUCCESSFUL;
+ }
- this.mEfficiency = (10000 - (this.getIdealStatus() - this.getRepairStatus()) * 1000);
- this.mEfficiencyIncrease = 10000;
- this.calculateOverclockedNessMulti(tRecipe.mEUt, tRecipe.mDuration, 1, tVoltage);
+ };
+ }
- if (mMaxProgresstime == Integer.MAX_VALUE - 1 && this.mEUt == Integer.MAX_VALUE - 1) return false;
- if (this.mEUt > 0) this.mEUt = (-this.mEUt);
+ @Override
+ public boolean supportsVoidProtection() {
+ return true;
+ }
- this.updateSlots();
+ @Override
+ public boolean supportsInputSeparation() {
+ return true;
+ }
- if (!checkRatio(tRecipe, tFluidInputs)) {
- stopMachine();
- return false;
- }
+ @Override
+ public boolean supportsBatchMode() {
+ return true;
+ }
- this.mOutputFluids = new FluidStack[] { tRecipe.getFluidOutput(0) };
- this.mOutputItems = tRecipe.mOutputs;
+ @Override
+ public boolean supportsSingleRecipeLocking() {
return true;
}