diff options
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity')
3 files changed, 33 insertions, 28 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Input.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Input.java index e3b94dec47..b6eb19b5aa 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Input.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Input.java @@ -53,6 +53,11 @@ public class GT_MetaTileEntity_Hatch_Input extends GT_MetaTileEntity_Hatch { super(aID, aName, aNameRegional, aTier, aSlot, aDescription); } + public GT_MetaTileEntity_Hatch_Input(int aID, String aName, String aNameRegional, int aTier, int allSlotCount, + String[] strings) { + super(aID, aName, aNameRegional, aTier, allSlotCount, strings); + } + public int getCapacityPerTank(int aTier, int aSlot) { return (int) (8000L * (1L << aTier) / aSlot); } diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java index e7cddffc12..5769cd82c2 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java @@ -30,8 +30,6 @@ import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.modularui.IAddUIWidgets; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; -import gregtech.api.recipe.check.CheckRecipeResult; -import gregtech.api.recipe.check.CheckRecipeResultRegistry; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_ClientPreference; import gregtech.api.util.GT_OreDictUnificator; @@ -39,9 +37,10 @@ import gregtech.api.util.GT_Recipe.GT_Recipe_Map; import gregtech.api.util.GT_TooltipDataCache; import gregtech.api.util.GT_Utility; import gregtech.api.util.extensions.ArrayExt; +import gregtech.common.tileentities.machines.IRecipeProcessingAwareHatch; public class GT_MetaTileEntity_Hatch_InputBus extends GT_MetaTileEntity_Hatch - implements IConfigurationCircuitSupport, IAddUIWidgets { + implements IConfigurationCircuitSupport, IAddUIWidgets, IRecipeProcessingAwareHatch { private static final String SORTING_MODE_TOOLTIP = "GT5U.machines.sorting_mode.tooltip"; private static final String ONE_STACK_LIMIT_TOOLTIP = "GT5U.machines.one_stack_limit.tooltip"; @@ -264,29 +263,6 @@ public class GT_MetaTileEntity_Hatch_InputBus extends GT_MetaTileEntity_Hatch return mInventory[aIndex] == null; } - /** - * Called when multiblock controller starts processing. - * {@link #endRecipeProcessing(GT_MetaTileEntity_MultiBlockBase)} is called on the same tick. - */ - public void startRecipeProcessing() {} - - /** - * Called when multiblock controller ends processing. {@link #startRecipeProcessing()} is called on the same tick. - * - * @param controller Caller of this method. - * @return Result of the process of this method. {@code !wasSuccessful()} means the returned result should - * overwrite the result calculated on multiblock whatever the reason is. - */ - public CheckRecipeResult endRecipeProcessing(GT_MetaTileEntity_MultiBlockBase controller) { - endRecipeProcessing(); - return CheckRecipeResultRegistry.SUCCESSFUL; - } - - /** - * Simple version of {@link #endRecipeProcessing(GT_MetaTileEntity_MultiBlockBase)}. Maybe use it instead. - */ - public void endRecipeProcessing() {} - @Override public boolean allowSelectCircuit() { return true; diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java index d9d5f4c731..1d3fa80ef5 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java @@ -14,6 +14,7 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Optional; +import java.util.function.Consumer; import java.util.function.Function; import javax.annotation.Nonnull; @@ -88,10 +89,12 @@ import gregtech.client.GT_SoundLoop; import gregtech.common.GT_Pollution; import gregtech.common.gui.modularui.widget.CheckRecipeResultSyncer; import gregtech.common.items.GT_MetaGenerated_Tool_01; +import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_Input_ME; import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_OutputBus_ME; import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_Output_ME; import gregtech.common.tileentities.machines.IDualInputHatch; import gregtech.common.tileentities.machines.IDualInputInventory; +import gregtech.common.tileentities.machines.IRecipeProcessingAwareHatch; import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_LargeTurbine; import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; @@ -1341,6 +1344,14 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity rList.add(tFluid); } } + } else if (tHatch instanceof GT_MetaTileEntity_Hatch_Input_ME) { + if (isValidMetaTileEntity(tHatch)) { + for (FluidStack fluidStack : ((GT_MetaTileEntity_Hatch_Input_ME) tHatch).getStoredFluids()) { + if (fluidStack == null) continue; + + rList.add(fluidStack); + } + } } else { if (tHatch.getFillableStack() != null) { // GT_Log.out.print("sf: " + tHatch.getFillableStack() + "\n"); @@ -1405,14 +1416,27 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity for (GT_MetaTileEntity_Hatch_InputBus hatch : filterValidMTEs(mInputBusses)) { hatch.startRecipeProcessing(); } + for (GT_MetaTileEntity_Hatch_Input hatch : filterValidMTEs(mInputHatches)) { + if (hatch instanceof IRecipeProcessingAwareHatch aware) { + aware.startRecipeProcessing(); + } + } } protected void endRecipeProcessing() { - for (GT_MetaTileEntity_Hatch_InputBus hatch : filterValidMTEs(mInputBusses)) { - CheckRecipeResult result = hatch.endRecipeProcessing(this); + Consumer<CheckRecipeResult> setResultIfFailure = result -> { if (!result.wasSuccessful()) { this.checkRecipeResult = result; } + }; + + for (GT_MetaTileEntity_Hatch_InputBus hatch : filterValidMTEs(mInputBusses)) { + setResultIfFailure.accept(hatch.endRecipeProcessing(this)); + } + for (GT_MetaTileEntity_Hatch_Input hatch : filterValidMTEs(mInputHatches)) { + if (hatch instanceof IRecipeProcessingAwareHatch aware) { + setResultIfFailure.accept(aware.endRecipeProcessing(this)); + } } } |