From 8130497452b4aa7df26f4b61672113775bcf0442 Mon Sep 17 00:00:00 2001 From: Mary <33456283+FourIsTheNumber@users.noreply.github.com> Date: Tue, 20 Aug 2024 23:35:55 -0400 Subject: Active Transformer deform mechanics (#2935) * AT no longer explodes on component break. * Give a grace window of one structure check for hotswapping. * Move new code to top of class --------- Co-authored-by: boubou19 --- .../multi/GT_MetaTileEntity_EM_transformer.java | 29 ++++++++++++++++------ 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'src/main/java/com') diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_transformer.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_transformer.java index 308482b862..8d75ea7d8e 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_transformer.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_transformer.java @@ -45,6 +45,25 @@ import gregtech.api.util.GT_Multiblock_Tooltip_Builder; public class GT_MetaTileEntity_EM_transformer extends GT_MetaTileEntity_MultiblockBase_EM implements ISurvivalConstructable { + // Gives a one-chance grace period for deforming the multi. This is to allow you to hotswap hatches without + // powerfailing due to an unlucky tick timing - this grace period is already a part of base TecTech but the + // tick timer is essentially random, so it was extremely unreliable. Now you are guaranteed the length + // of one structure check to finish your hotswap before it deforms. + private boolean grace = false; + + @Override + public boolean checkMachine_EM(IGregTechTileEntity iGregTechTileEntity, ItemStack itemStack) { + casingCount = 0; + if (structureCheck_EM("main", 1, 1, 0) && casingCount >= 5) { + grace = true; + return true; + } else if (grace) { + grace = false; + return true; + } + return false; + } + @Override public void onFirstTick_EM(IGregTechTileEntity aBaseMetaTileEntity) { if (!mMachine) { @@ -81,12 +100,12 @@ public class GT_MetaTileEntity_EM_transformer extends GT_MetaTileEntity_Multiblo public GT_MetaTileEntity_EM_transformer(int aID, String aName, String aNameRegional) { super(aID, aName, aNameRegional); - eDismantleBoom = true; + eDismantleBoom = false; } public GT_MetaTileEntity_EM_transformer(String aName) { super(aName); - eDismantleBoom = true; + eDismantleBoom = false; } @Override @@ -94,12 +113,6 @@ public class GT_MetaTileEntity_EM_transformer extends GT_MetaTileEntity_Multiblo return new GT_MetaTileEntity_EM_transformer(mName); } - @Override - public boolean checkMachine_EM(IGregTechTileEntity iGregTechTileEntity, ItemStack itemStack) { - casingCount = 0; - return structureCheck_EM("main", 1, 1, 0) && casingCount >= 5; - } - @Override @NotNull protected CheckRecipeResult checkProcessing_EM() { -- cgit