aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java')
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java111
1 files changed, 36 insertions, 75 deletions
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java b/src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java
index eb4ad6a79f..86b16fe67d 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java
@@ -1,15 +1,12 @@
package goodgenerator.blocks.tileEntity;
import static com.github.bartimaeusnek.bartworks.util.BW_Util.ofGlassTieredMixed;
-import static com.github.bartimaeusnek.bartworks.util.RecipeFinderForParallel.getMultiOutput;
-import static com.github.bartimaeusnek.bartworks.util.RecipeFinderForParallel.handleParallelRecipe;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
import static goodgenerator.util.DescTextLocalization.BLUE_PRINT_INFO;
import static gregtech.api.enums.GT_HatchElement.*;
import static gregtech.api.metatileentity.BaseTileEntity.TOOLTIP_DELAY;
import static gregtech.api.util.GT_StructureUtility.ofFrame;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@@ -20,9 +17,9 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.StatCollector;
import net.minecraftforge.common.util.ForgeDirection;
-import net.minecraftforge.fluids.FluidStack;
-import com.github.bartimaeusnek.bartworks.util.Pair;
+import org.jetbrains.annotations.NotNull;
+
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyMulti;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
@@ -34,7 +31,6 @@ import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
import com.gtnewhorizons.modularui.common.widget.CycleButtonWidget;
-import goodgenerator.blocks.tileEntity.base.GT_MetaTileEntity_LongPowerUsageBase;
import goodgenerator.client.GUI.GG_UITextures;
import goodgenerator.loader.Loaders;
import goodgenerator.util.DescTextLocalization;
@@ -48,15 +44,20 @@ import gregtech.api.interfaces.IIconContainer;
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.GregTechTileClientEvents;
import gregtech.api.metatileentity.implementations.*;
+import gregtech.api.recipe.check.CheckRecipeResult;
+import gregtech.api.recipe.check.CheckRecipeResultRegistry;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_HatchElementBuilder;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
+import gregtech.api.util.GT_OverclockCalculator;
+import gregtech.api.util.GT_ParallelHelper;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
-public class PreciseAssembler extends GT_MetaTileEntity_LongPowerUsageBase<PreciseAssembler>
+public class PreciseAssembler extends GT_MetaTileEntity_ExtendedPowerMultiBlockBase<PreciseAssembler>
implements IConstructable, ISurvivalConstructable {
private static final IIconContainer textureFontOn = new Textures.BlockIcons.CustomIcon("iconsets/OVERLAY_QTANK");
@@ -72,7 +73,6 @@ public class PreciseAssembler extends GT_MetaTileEntity_LongPowerUsageBase<Preci
protected int machineTier;
protected int mode;
protected int energyHatchTier;
- private GT_Recipe lastRecipe;
public PreciseAssembler(String name) {
super(name);
@@ -202,68 +202,33 @@ public class PreciseAssembler extends GT_MetaTileEntity_LongPowerUsageBase<Preci
}
@Override
- public boolean checkRecipe(ItemStack itemStack) {
- if (casingTier < 0 || machineTier < 0) return false;
- FluidStack[] inputFluids = getStoredFluids().toArray(new FluidStack[0]);
- if (this.mode == 0) {
- for (GT_MetaTileEntity_Hatch_InputBus bus : mInputBusses) {
- if (!isValidMetaTileEntity(bus)) continue;
- this.lastRecipe = getRecipeMap().findRecipe(
- this.getBaseMetaTileEntity(),
- this.lastRecipe,
- false,
- Math.min(getMachineVoltageLimit(), getRealVoltage()),
- inputFluids,
- getStoredItemFromHatch(bus));
- if (this.lastRecipe != null && this.lastRecipe.mSpecialValue <= (casingTier + 1)) {
- this.mEfficiency = (10000 - (this.getIdealStatus() - this.getRepairStatus()) * 1000);
- this.mEfficiencyIncrease = 10000;
- this.lastRecipe.isRecipeInputEqual(true, inputFluids, getStoredItemFromHatch(bus));
- mOutputItems = this.lastRecipe.mOutputs;
- calculateOverclockedNessMulti(this.lastRecipe.mEUt, this.lastRecipe.mDuration, 1, getRealVoltage());
- this.updateSlots();
- if (this.lEUt > 0) {
- this.lEUt = (-this.lEUt);
+ protected ProcessingLogic createProcessingLogic() {
+ return new ProcessingLogic() {
+
+ @NotNull
+ @Override
+ protected CheckRecipeResult validateRecipe(@NotNull GT_Recipe recipe) {
+ if (mode == 0) {
+ if (recipe.mSpecialValue > (casingTier + 1)) {
+ return CheckRecipeResultRegistry.insufficientMachineTier(recipe.mSpecialValue);
}
- return true;
}
+ return CheckRecipeResultRegistry.SUCCESSFUL;
}
- } else {
- for (GT_MetaTileEntity_Hatch_InputBus bus : mInputBusses) {
- if (!isValidMetaTileEntity(bus) || getStoredItemFromHatch(bus).length < 1) continue;
- this.lastRecipe = getRecipeMap().findRecipe(
- this.getBaseMetaTileEntity(),
- this.lastRecipe,
- false,
- Math.min(getMachineVoltageLimit(), getRealVoltage()),
- inputFluids,
- getStoredItemFromHatch(bus));
- if (this.lastRecipe != null) {
- this.mEfficiency = (10000 - (this.getIdealStatus() - this.getRepairStatus()) * 1000);
- this.mEfficiencyIncrease = 10000;
- long fullInput = getRealVoltage();
- int pall = handleParallelRecipe(
- this.lastRecipe,
- inputFluids,
- getStoredItemFromHatch(bus),
- (int) Math.min((long) Math.pow(2, 4 + (casingTier + 1)), fullInput / this.lastRecipe.mEUt));
- if (pall <= 0) continue;
- Pair<ArrayList<FluidStack>, ArrayList<ItemStack>> Outputs = getMultiOutput(this.lastRecipe, pall);
- mOutputItems = Outputs.getValue().toArray(new ItemStack[0]);
- calculateOverclockedNessMulti(
- (long) this.lastRecipe.mEUt * (long) pall,
- this.lastRecipe.mDuration / 2,
- 1,
- getRealVoltage());
- this.updateSlots();
- if (this.lEUt > 0) {
- this.lEUt = (-this.lEUt);
- }
- return true;
- }
+
+ @NotNull
+ @Override
+ protected GT_OverclockCalculator createOverclockCalculator(@NotNull GT_Recipe recipe,
+ @NotNull GT_ParallelHelper helper) {
+ return super.createOverclockCalculator(recipe, helper).setSpeedBoost(0.5F);
}
- }
- return false;
+ }.setMaxParallelSupplier(() -> (int) Math.pow(2, 4 + (casingTier + 1)));
+ }
+
+ @Override
+ protected void setProcessingLogicPower(ProcessingLogic logic) {
+ logic.setAvailableVoltage(getMachineVoltageLimit());
+ logic.setAvailableAmperage(getMaxInputAmps());
}
@Override
@@ -277,15 +242,6 @@ public class PreciseAssembler extends GT_MetaTileEntity_LongPowerUsageBase<Preci
else return GT_Values.V[Math.min(machineTier, energyHatchTier)];
}
- public ItemStack[] getStoredItemFromHatch(GT_MetaTileEntity_Hatch_InputBus tHatch) {
- ArrayList<ItemStack> rList = new ArrayList<>();
- for (int i = tHatch.getBaseMetaTileEntity().getSizeInventory() - 1; i >= 0; i--) {
- if (tHatch.getBaseMetaTileEntity().getStackInSlot(i) != null)
- rList.add(tHatch.getBaseMetaTileEntity().getStackInSlot(i));
- }
- return rList.toArray(new ItemStack[0]);
- }
-
@Override
public GT_Recipe.GT_Recipe_Map getRecipeMap() {
if (this.mode == 0) return MyRecipeAdder.instance.PA;
@@ -476,4 +432,9 @@ public class PreciseAssembler extends GT_MetaTileEntity_LongPowerUsageBase<Preci
public boolean isInputSeparationEnabled() {
return true;
}
+
+ @Override
+ public boolean supportsBatchMode() {
+ return true;
+ }
}