diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiPart.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiPart.java index 99f2f620bd..87a3c95b8b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiPart.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiPart.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.gui.fancy.TooltipsPanel; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; +import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.machine.trait.IRecipeHandlerTrait; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.GTRecipe; @@ -91,6 +92,13 @@ default boolean onWaiting(IWorkableMultiController controller) { return true; } + /** + * Called in {@link WorkableMultiblockMachine#setWorkingEnabled(boolean)} + */ + default boolean onPaused(IWorkableMultiController controller) { + return true; + } + /** * Called in {@link RecipeLogic#onRecipeFinish()} before outputs are produced */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java index aaf8978a11..d96751bb7f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java @@ -255,6 +255,16 @@ public void onWaiting() { IWorkableMultiController.super.onWaiting(); } + @Override + public void setWorkingEnabled(boolean isWorkingAllowed) { + if (!isWorkingAllowed) { + for (IMultiPart part : getParts()) { + part.onPaused(this); + } + } + IWorkableMultiController.super.setWorkingEnabled(isWorkingAllowed); + } + @NotNull public GTRecipeType getRecipeType() { return recipeTypes[activeRecipeType]; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/KineticPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/KineticPartMachine.java index 98720ac072..a177f68116 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/KineticPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/KineticPartMachine.java @@ -2,6 +2,8 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IWorkableMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; import com.gregtechceu.gtceu.common.machine.kinetic.IKineticMachine; import com.gregtechceu.gtceu.common.machine.trait.NotifiableStressTrait; @@ -62,6 +64,32 @@ public void onRotated(Direction oldFacing, Direction newFacing) { } } + @Override + public boolean onWaiting(IWorkableMultiController controller) { + getKineticHolder().stopWorking(); + return super.onWaiting(controller); + } + + @Override + public boolean onPaused(IWorkableMultiController controller) { + getKineticHolder().stopWorking(); + return super.onPaused(controller); + } + + @Override + public void removedFromController(IMultiController controller) { + super.removedFromController(controller); + getKineticHolder().stopWorking(); + } + + @Override + public void setWorkingEnabled(boolean workingEnabled) { + if (!workingEnabled) { + getKineticHolder().stopWorking(); + } + super.setWorkingEnabled(workingEnabled); + } + ////////////////////////////////////// //********* GUI *********// //////////////////////////////////////