Skip to content
This repository has been archived by the owner on May 24, 2024. It is now read-only.

Commit

Permalink
Implement generic processing logic (#226)
Browse files Browse the repository at this point in the history
* Migrated EoH

* Added deprecation for checkRecipe_EM

* Migrated QC

* Migrated DB

* Migrated AT

* Migrated RS and scanner

* Migrated EI

* Migrated switch

* Migrated microwave

* Migrated tesla tower

* Fixed implementation of texts

* update deps

* Addressed review comments

* Update dependencies.gradle

* Update dependencies.gradle

* update deps

---------

Co-authored-by: Martin Robertz <[email protected]>
  • Loading branch information
minecraft7771 and Dream-Master authored Jul 10, 2023
1 parent d470579 commit 423d4c4
Show file tree
Hide file tree
Showing 13 changed files with 186 additions and 79 deletions.
12 changes: 6 additions & 6 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@

dependencies {
shadowImplementation('com.github.GTNewHorizons:AVRcore:1.0.1')
api('com.github.GTNewHorizons:GT5-Unofficial:5.09.43.104:dev')
api('com.github.GTNewHorizons:GT5-Unofficial:5.09.43.122:dev')
api('com.github.GTNewHorizons:Yamcl:0.5.86:dev')
implementation('com.github.GTNewHorizons:GTNEIOrePlugin:1.1.1:dev')

compileOnly("TGregworks:TGregworks:1.7.10-GTNH-1.0.23:deobf") {transitive=false}
compileOnly('com.github.GTNewHorizons:TinkersConstruct:1.9.38-GTNH:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:OpenModularTurrets:2.2.11-247:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:OpenComputers:1.9.8-GTNH:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:GTplusplus:1.9.52:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:Avaritia:1.43:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:OpenComputers:1.9.12-GTNH:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:GTplusplus:1.9.54:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:Avaritia:1.45:dev') {transitive=false}

compileOnly('curse.maven:cofh-lib-220333:2388748') {transitive=false}
compileOnly('curse.maven:computercraft-67504:2269339') {transitive=false}
Expand All @@ -21,10 +21,10 @@ dependencies {
// for testing EOH recipes
//runtimeOnlyNonPublishable("TGregworks:TGregworks:1.7.10-GTNH-1.0.23:deobf")
//runtimeOnlyNonPublishable('com.github.GTNewHorizons:TinkersConstruct:1.9.38-GTNH:dev')
//runtimeOnlyNonPublishable('com.github.GTNewHorizons:NewHorizonsCoreMod:2.1.66:dev')
//runtimeOnlyNonPublishable('com.github.GTNewHorizons:NewHorizonsCoreMod:2.1.79:dev')
//runtimeOnlyNonPublishable('com.github.GTNewHorizons:GoodGenerator:0.6.11:dev') {
// exclude group: "com.github.GTNewHorizons", module: "TecTech"
//}
//runtimeOnlyNonPublishable("curse.maven:extra-utilities-225561:2264384") {transitive=false}
//runtimeOnlyNonPublishable('com.github.GTNewHorizons:Avaritia:1.43:dev') {transitive=false}
//runtimeOnlyNonPublishable('com.github.GTNewHorizons:Avaritia:1.45:dev') {transitive=false}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
import net.minecraftforge.fluids.FluidStack;

import org.apache.commons.lang3.tuple.Pair;
import org.jetbrains.annotations.NotNull;

import com.github.technus.tectech.recipe.EyeOfHarmonyRecipe;
import com.github.technus.tectech.thing.block.TileEyeOfHarmony;
Expand All @@ -72,6 +73,9 @@
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input;
import gregtech.api.recipe.check.CheckRecipeResult;
import gregtech.api.recipe.check.CheckRecipeResultRegistry;
import gregtech.api.recipe.check.SimpleCheckRecipeResult;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_OutputBus_ME;
import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_Output_ME;
Expand Down Expand Up @@ -1072,27 +1076,31 @@ private void drainFluidFromHatchesAndStoreInternally() {
private long currentCircuitMultiplier = 0;

@Override
public boolean checkRecipe_EM(ItemStack aStack) {
if (aStack == null) {
return false;
@NotNull
protected CheckRecipeResult checkProcessing_EM() {
ItemStack controllerStack = getControllerSlot();
if (controllerStack == null) {
return SimpleCheckRecipeResult.ofFailure("no_planet_block");
}

lagPreventer++;
if (lagPreventer < RECIPE_CHECK_INTERVAL) {
lagPreventer = 0;
// No item in multi gui slot.

currentRecipe = eyeOfHarmonyRecipeStorage.recipeLookUp(aStack);
currentRecipe = eyeOfHarmonyRecipeStorage.recipeLookUp(controllerStack);
if (currentRecipe == null) {
return false;
return CheckRecipeResultRegistry.NO_RECIPE;
}
if (processRecipe(currentRecipe)) {
return true;
CheckRecipeResult result = processRecipe(currentRecipe);

if (result.wasSuccessful()) {
return result;
}

currentRecipe = null;
}
return false;
return CheckRecipeResultRegistry.NO_RECIPE;
}

private long getHydrogenStored() {
Expand All @@ -1103,7 +1111,7 @@ private long getHeliumStored() {
return validFluidMap.get(Materials.Helium.getGas(1));
}

public boolean processRecipe(EyeOfHarmonyRecipe recipeObject) {
public CheckRecipeResult processRecipe(EyeOfHarmonyRecipe recipeObject) {

// Get circuit damage, clamp it and then use it later for overclocking.
ItemStack circuit = mInputBusses.get(0).getStackInSlot(0);
Expand All @@ -1114,34 +1122,32 @@ public boolean processRecipe(EyeOfHarmonyRecipe recipeObject) {
}

// Debug mode, overwrites the required fluids to initiate the recipe to 100L of each.
if (EOH_DEBUG_MODE) {
if ((getHydrogenStored() < 100) || (getHeliumStored() < 100)) {
return false;
}
} else {
if ((getHydrogenStored() < currentRecipe.getHydrogenRequirement())
|| (getHeliumStored() < currentRecipe.getHeliumRequirement())) {
return false;
}
if ((EOH_DEBUG_MODE && getHydrogenStored() < 100)
|| (getHydrogenStored() < currentRecipe.getHydrogenRequirement())) {
return SimpleCheckRecipeResult.ofFailure("no_hydrogen");
}
if ((EOH_DEBUG_MODE && getHeliumStored() < 100) || (getHeliumStored() < currentRecipe.getHeliumRequirement())) {
return SimpleCheckRecipeResult.ofFailure("no_helium");
}

if (spacetimeCompressionFieldMetadata == -1) {
return false;
return CheckRecipeResultRegistry
.insufficientMachineTier((int) recipeObject.getSpacetimeCasingTierRequired());
}

// Check tier of spacetime compression blocks is high enough.
if ((spacetimeCompressionFieldMetadata + 1) < recipeObject.getSpacetimeCasingTierRequired()) {
return false;
return CheckRecipeResultRegistry
.insufficientMachineTier((int) recipeObject.getSpacetimeCasingTierRequired());
}

startEU = recipeObject.getEUStartCost();

// Remove EU from the users network.
if (!addEUToGlobalEnergyMap(
userUUID,
(long) (-startEU * (Math.log(currentCircuitMultiplier + 1) / LOG_BASE_CONSTANT + 1)
* pow(0.77, currentCircuitMultiplier)))) {
return false;
long usedEU = (long) (-startEU * (Math.log(currentCircuitMultiplier + 1) / LOG_BASE_CONSTANT + 1)
* pow(0.77, currentCircuitMultiplier));
if (!addEUToGlobalEnergyMap(userUUID, usedEU)) {
return CheckRecipeResultRegistry.insufficientPower(usedEU);
}

mMaxProgresstime = recipeProcessTimeCalculator(
Expand Down Expand Up @@ -1194,7 +1200,7 @@ public boolean processRecipe(EyeOfHarmonyRecipe recipeObject) {
}

recipeRunning = true;
return true;
return CheckRecipeResultRegistry.SUCCESSFUL;
}

private void createRenderBlock(final EyeOfHarmonyRecipe currentRecipe) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.util.ForgeDirection;

import org.jetbrains.annotations.NotNull;

import com.github.technus.tectech.mechanics.dataTransport.QuantumDataPacket;
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_InputData;
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_OutputData;
Expand All @@ -54,6 +56,9 @@
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase;
import gregtech.api.recipe.check.CheckRecipeResult;
import gregtech.api.recipe.check.CheckRecipeResultRegistry;
import gregtech.api.recipe.check.SimpleCheckRecipeResult;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.IGT_HatchAdder;

Expand Down Expand Up @@ -232,22 +237,23 @@ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
}

@Override
public boolean checkRecipe_EM(ItemStack itemStack) {
@NotNull
protected CheckRecipeResult checkProcessing_EM() {
parametrization.setToDefaults(false, true);
eAvailableData = 0;
double maxTemp = 0;
double overClockRatio = overclock.get();
double overVoltageRatio = overvolt.get();
if (Double.isNaN(overClockRatio) || Double.isNaN(overVoltageRatio)) {
return false;
return SimpleCheckRecipeResult.ofFailure("no_computing");
}
if (overclock.getStatus(true).isOk && overvolt.getStatus(true).isOk) {
float eut = V[8] * (float) overVoltageRatio * (float) overClockRatio;
if (eut < Integer.MAX_VALUE - 7) {
mEUt = -(int) eut;
} else {
mEUt = -(int) V[8];
return false;
return CheckRecipeResultRegistry.POWER_OVERFLOW;
}
short thingsActive = 0;
int rackComputation;
Expand Down Expand Up @@ -281,7 +287,7 @@ public boolean checkRecipe_EM(ItemStack itemStack) {
mEfficiencyIncrease = 10000;
maxCurrentTemp.set(maxTemp);
availableData.set(eAvailableData);
return true;
return SimpleCheckRecipeResult.ofSuccess("computing");
} else {
eAvailableData = 0;
mEUt = -(int) V[8];
Expand All @@ -290,10 +296,10 @@ public boolean checkRecipe_EM(ItemStack itemStack) {
mEfficiencyIncrease = 10000;
maxCurrentTemp.set(maxTemp);
availableData.set(eAvailableData);
return true;
return SimpleCheckRecipeResult.ofSuccess("no_computing");
}
}
return false;
return SimpleCheckRecipeResult.ofFailure("no_computing");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.util.ForgeDirection;

import org.jetbrains.annotations.NotNull;

import com.github.technus.tectech.Reference;
import com.github.technus.tectech.mechanics.dataTransport.InventoryDataPacket;
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_InputDataItems;
Expand All @@ -42,6 +44,8 @@
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_DataAccess;
import gregtech.api.recipe.check.CheckRecipeResult;
import gregtech.api.recipe.check.SimpleCheckRecipeResult;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.IGT_HatchAdder;

Expand Down Expand Up @@ -137,15 +141,16 @@ public boolean checkMachine_EM(IGregTechTileEntity iGregTechTileEntity, ItemStac
}

@Override
public boolean checkRecipe_EM(ItemStack itemStack) {
@NotNull
protected CheckRecipeResult checkProcessing_EM() {
if (eDataAccessHatches.size() > 0 && eStacksDataOutputs.size() > 0) {
mEUt = -(int) V[slave ? 6 : 4];
eAmpereFlow = 1 + eStacksDataOutputs.size() * eDataAccessHatches.size();
mMaxProgresstime = 20;
mEfficiencyIncrease = 10000;
return true;
return SimpleCheckRecipeResult.ofSuccess("providing_data");
}
return false;
return SimpleCheckRecipeResult.ofFailure("no_data");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fluids.FluidStack;

import org.jetbrains.annotations.NotNull;

import com.github.technus.tectech.Reference;
import com.github.technus.tectech.TecTech;
import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM;
Expand All @@ -29,6 +31,8 @@
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus;
import gregtech.api.recipe.check.CheckRecipeResult;
import gregtech.api.recipe.check.SimpleCheckRecipeResult;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_InputBus_ME;
import ic2.api.item.ElectricItem;
Expand Down Expand Up @@ -152,7 +156,8 @@ public boolean checkMachine_EM(IGregTechTileEntity iGregTechTileEntity, ItemStac
}

@Override
public boolean checkRecipe_EM(ItemStack itemStack) {
@NotNull
protected CheckRecipeResult checkProcessing_EM() {
for (GT_MetaTileEntity_Hatch_InputBus inputBus : mInputBusses) {
if (inputBus instanceof GT_MetaTileEntity_Hatch_InputBus_ME) continue;
for (int i = 0; i < inputBus.getSizeInventory(); i++) {
Expand All @@ -167,11 +172,11 @@ public boolean checkRecipe_EM(ItemStack itemStack) {
} else {
mEfficiencyIncrease = 10000;
mMaxProgresstime = 20;
return true;
return SimpleCheckRecipeResult.ofSuccess("charging");
}
}
}
return false;
return SimpleCheckRecipeResult.ofFailure("no_chargeable_item");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import net.minecraftforge.common.util.ForgeDirection;

import org.apache.commons.lang3.reflect.FieldUtils;
import org.jetbrains.annotations.NotNull;

import com.github.technus.tectech.recipe.TT_recipe;
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyMulti;
Expand All @@ -58,6 +59,9 @@
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase;
import gregtech.api.recipe.check.CheckRecipeResult;
import gregtech.api.recipe.check.CheckRecipeResultRegistry;
import gregtech.api.recipe.check.SimpleCheckRecipeResult;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
Expand Down Expand Up @@ -346,45 +350,49 @@ public boolean checkMachine_EM(IGregTechTileEntity iGregTechTileEntity, ItemStac
}

@Override
public boolean checkRecipe_EM(ItemStack itemStack) {
@NotNull
protected CheckRecipeResult checkProcessing_EM() {
ItemStack controllerStack = getControllerSlot();
tRecipe = null;
aRecipe = null;
if (!eHolders.isEmpty() && eHolders.get(0).mInventory[0] != null) {
holdItem = eHolders.get(0).mInventory[0].copy();
if (ItemList.Tool_DataStick.isStackEqual(itemStack, false, true)) {
if (ItemList.Tool_DataStick.isStackEqual(controllerStack, false, true)) {
for (GT_Recipe.GT_Recipe_AssemblyLine assRecipe : TT_recipe.GT_Recipe_MapTT.sAssemblylineRecipes) {
if (GT_Utility.areStacksEqual(assRecipe.mResearchItem, holdItem, true)) {
machineType = assembly;
tRecipe = assRecipe;
// if found
if (iterateRecipes()) return true;
if (iterateRecipes()) return SimpleCheckRecipeResult.ofSuccess("researching");
}
}
} else if (ItemList.Tool_DataOrb.isStackEqual(itemStack, false, true)) {
} else if (ItemList.Tool_DataOrb.isStackEqual(controllerStack, false, true)) {
for (TT_recipe.TT_assLineRecipe assRecipeTT : TT_recipe.TT_Recipe_Map.sMachineRecipes.recipeList()) {
if (GT_Utility.areStacksEqual(assRecipeTT.mResearchItem, holdItem, true)) {
aRecipe = assRecipeTT;
machineType = machine;
// if found
if (iterateRecipes()) return true;
if (iterateRecipes()) return SimpleCheckRecipeResult.ofSuccess("researching");
}
}
for (TT_recipe.TT_assLineRecipe assRecipeTT : TT_recipe.TT_Recipe_Map.sCrafterRecipes.recipeList()) {
if (GT_Utility.areStacksEqual(assRecipeTT.mResearchItem, holdItem, true)) {
aRecipe = assRecipeTT;
machineType = crafter;
// if found
if (iterateRecipes()) return true;
if (iterateRecipes()) return SimpleCheckRecipeResult.ofSuccess("researching");
}
}
} else {
return CheckRecipeResultRegistry.NO_DATA_STICKS;
}
}
holdItem = null;
computationRequired = computationRemaining = 0;
for (GT_MetaTileEntity_Hatch_Holder r : eHolders) {
r.getBaseMetaTileEntity().setActive(false);
}
return false;
return SimpleCheckRecipeResult.ofFailure("no_research_item");
}

@Override
Expand Down
Loading

0 comments on commit 423d4c4

Please sign in to comment.