Skip to content

Commit

Permalink
Add Continuous Recipe for Multiblock (#41)
Browse files Browse the repository at this point in the history
* Create Continuous Multiblock logic

* Finish Continuous Multiblock recipe and convert Fluidized bed reactor to use it
  • Loading branch information
mrquentin authored Apr 24, 2023
1 parent 9c06699 commit 0778f24
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package supersymmetry.api.capability.impl;

import gregtech.api.capability.impl.MultiblockRecipeLogic;
import gregtech.api.metatileentity.multiblock.RecipeMapMultiblockController;
import gregtech.api.recipes.Recipe;
import gregtech.api.util.GTUtility;

public class ContinuousMultiblockRecipeLogic extends MultiblockRecipeLogic {
public ContinuousMultiblockRecipeLogic(RecipeMapMultiblockController tileEntity) {
super(tileEntity);
}

public ContinuousMultiblockRecipeLogic(RecipeMapMultiblockController tileEntity, boolean hasPerfectOC) {
super(tileEntity, hasPerfectOC);
}

@Override
protected boolean prepareRecipe(Recipe recipe) {
recipe = Recipe.trimRecipeOutputs(recipe, this.getRecipeMap(), this.metaTileEntity.getItemOutputLimit(), this.metaTileEntity.getFluidOutputLimit());

int recipeTier = GTUtility.getTierByVoltage(recipe.getEUt());
int maximumTier = getOverclockForTier(getMaximumOverclockVoltage());
int numberOfOCs = maximumTier - recipeTier;
double parallelLimitDouble = Math.pow(this.getOverclockingDurationDivisor(), numberOfOCs) / recipe.getDuration();
int parallelLimit = parallelLimitDouble <= 1 ? 1 : (int) parallelLimitDouble;

recipe = findParallelRecipe(this, recipe,
getInputInventory(), getInputTank(),
getOutputInventory(), getOutputTank(),
getMaxParallelVoltage(), parallelLimit);

if (recipe != null && this.setupAndConsumeRecipeInputs(recipe, this.getInputInventory())) {
this.setupRecipe(recipe);
return true;
}

return false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,8 @@
import supersymmetry.api.metatileentity.steam.SuSySteamProgressIndicators;
import supersymmetry.api.recipes.SuSyRecipeMaps;
import supersymmetry.client.renderer.textures.SusyTextures;
import supersymmetry.common.metatileentities.multi.electric.MetaTileEntityFluidizedBedReactor;
import supersymmetry.common.metatileentities.multi.electric.MetaTileEntityPolmyerizationTank;
import supersymmetry.common.metatileentities.multi.electric.*;
import supersymmetry.common.metatileentities.multi.primitive.MetaTileEntityCoagulationTank;
import supersymmetry.common.metatileentities.multi.electric.MetaTileEntityMagneticRefrigerator;
import supersymmetry.common.metatileentities.multi.electric.MetaTileEntitySinteringOven;
import supersymmetry.common.metatileentities.single.electric.MetaTileEntityLatexCollector;
import supersymmetry.common.metatileentities.single.steam.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package supersymmetry.common.metatileentities.multi.electric;

import gregtech.api.capability.impl.MultiblockRecipeLogic;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
import gregtech.api.metatileentity.multiblock.IMultiblockPart;
Expand All @@ -23,12 +22,13 @@
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import supersymmetry.api.capability.impl.ContinuousMultiblockRecipeLogic;
import supersymmetry.api.recipes.SuSyRecipeMaps;

public class MetaTileEntityFluidizedBedReactor extends RecipeMapMultiblockController {
public MetaTileEntityFluidizedBedReactor(ResourceLocation metaTileEntityId) {
super(metaTileEntityId, SuSyRecipeMaps.FLUIDIZED_BED_REACTOR_RECIPES);
this.recipeMapWorkable = new MultiblockRecipeLogic(this, true);
this.recipeMapWorkable = new ContinuousMultiblockRecipeLogic(this, true);
}

public MetaTileEntity createMetaTileEntity(IGregTechTileEntity tileEntity) {
Expand Down

0 comments on commit 0778f24

Please sign in to comment.