From e96f99ce0f7b65ad8d36048ef24b94a701a885b4 Mon Sep 17 00:00:00 2001 From: Integer Limit <103940576+IntegerLimit@users.noreply.github.com> Date: Thu, 8 Aug 2024 08:08:49 +1000 Subject: [PATCH] Fix PA & Cleanroom Sync Issues (#2566) --- .../MetaTileEntityProcessingArray.java | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntityProcessingArray.java b/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntityProcessingArray.java index f0502424eff..7a8fd7a9162 100644 --- a/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntityProcessingArray.java +++ b/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntityProcessingArray.java @@ -238,6 +238,14 @@ public int getItemOutputLimit() { return mte == null ? 0 : mte.getItemOutputLimit(); } + @Override + public void setCleanroom(ICleanroomProvider provider) { + super.setCleanroom(provider); + + // Sync Cleanroom Change to Internal Workable MTE + ((ProcessingArrayWorkable) this.recipeMapWorkable).updateCleanroom(); + } + @SuppressWarnings("InnerClassMayBeStatic") protected class ProcessingArrayWorkable extends MultiblockRecipeLogic { @@ -334,15 +342,7 @@ public void findMachineStack() { mte = holder.setMetaTileEntity(mte); holder.setWorld(this.metaTileEntity.getWorld()); - // Set the cleanroom of the MTEs to the PA's cleanroom reference - if (mte instanceof ICleanroomReceiver receiver) { - if (ConfigHolder.machines.cleanMultiblocks) { - receiver.setCleanroom(DUMMY_CLEANROOM); - } else { - ICleanroomProvider provider = controller.getCleanroom(); - if (provider != null) receiver.setCleanroom(provider); - } - } + updateCleanroom(); } // Find the voltage tier of the machine. @@ -353,6 +353,18 @@ public void findMachineStack() { this.currentMachineStack = machine; } + private void updateCleanroom() { + // Set the cleanroom of the MTEs to the PA's cleanroom reference + if (mte instanceof ICleanroomReceiver receiver) { + if (ConfigHolder.machines.cleanMultiblocks) { + receiver.setCleanroom(DUMMY_CLEANROOM); + } else { + ICleanroomProvider provider = ((RecipeMapMultiblockController) metaTileEntity).getCleanroom(); + if (provider != null) receiver.setCleanroom(provider); + } + } + } + @Override public boolean checkRecipe(@NotNull Recipe recipe) { if (mte == null) return false;