aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlease <4586901+Glease@users.noreply.github.com>2021-06-25 20:54:11 +0800
committerGlease <4586901+Glease@users.noreply.github.com>2021-07-30 14:39:32 +0800
commite5a6de86d47d12130afe179303d7de5b78c85bff (patch)
treef26510c8013d56a2146d63447fe9e50e2f7bfc6e
parent66e64ee13acd8ce0f4570c9ce73c849e125c67b9 (diff)
downloadGT5-Unofficial-e5a6de86d47d12130afe179303d7de5b78c85bff.tar.gz
GT5-Unofficial-e5a6de86d47d12130afe179303d7de5b78c85bff.tar.bz2
GT5-Unofficial-e5a6de86d47d12130afe179303d7de5b78c85bff.zip
general bugfix & tweaking pass for multis
1. stupid typo in EBF preventing it from working at all. 2. All multis now require exactly one maintenance hatch to form. 3. All multis now use the unified overclocking mechanism if possible. 4. All multis that emits pollution now require at least one muffler hatch to form. 5. Coil structure element slightly tweaked. Signed-off-by: Glease <4586901+Glease@users.noreply.github.com>
-rw-r--r--src/main/java/gregtech/api/enums/HeatingCoilLevel.java10
-rw-r--r--src/main/java/gregtech/api/util/GT_StructureUtility.java30
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Block_Casings5.java29
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java26
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DistillationTower.java19
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java2
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ElectricBlastFurnace.java1
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine.java2
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiFurnace.java3
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilCracker.java29
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PyrolyseOven.java3
11 files changed, 96 insertions, 58 deletions
diff --git a/src/main/java/gregtech/api/enums/HeatingCoilLevel.java b/src/main/java/gregtech/api/enums/HeatingCoilLevel.java
index d4446e31d0..c2e3ff075a 100644
--- a/src/main/java/gregtech/api/enums/HeatingCoilLevel.java
+++ b/src/main/java/gregtech/api/enums/HeatingCoilLevel.java
@@ -23,6 +23,8 @@ public enum HeatingCoilLevel {
MAX,
;
+ private static final HeatingCoilLevel[] VALUES = values();
+
/**
* @return the Coils Tier Name
*/
@@ -61,9 +63,13 @@ public enum HeatingCoilLevel {
}
public static HeatingCoilLevel getFromTier(byte tier){
- if (tier < 0 || tier > HeatingCoilLevel.values().length -1)
+ if (tier < 0 || tier > VALUES.length -1)
return HeatingCoilLevel.None;
- return HeatingCoilLevel.values()[tier+2];
+ return VALUES[tier+2];
+ }
+
+ public static int size() {
+ return VALUES.length;
}
}
diff --git a/src/main/java/gregtech/api/util/GT_StructureUtility.java b/src/main/java/gregtech/api/util/GT_StructureUtility.java
index 2670d9e684..5067c698ab 100644
--- a/src/main/java/gregtech/api/util/GT_StructureUtility.java
+++ b/src/main/java/gregtech/api/util/GT_StructureUtility.java
@@ -7,6 +7,7 @@ import gregtech.api.GregTech_API;
import gregtech.api.enums.HeatingCoilLevel;
import gregtech.api.interfaces.IHeatingCoil;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.common.blocks.GT_Block_Casings5;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@@ -19,8 +20,6 @@ import java.util.function.Function;
import static com.gtnewhorizon.structurelib.StructureLibAPI.HINT_BLOCK_META_GENERIC_11;
public class GT_StructureUtility {
- public static final int HINT_COIL_DEFAULT_DOTS = HINT_BLOCK_META_GENERIC_11;
-
private GT_StructureUtility() {
throw new AssertionError("Not instantiable");
}
@@ -81,22 +80,14 @@ public class GT_StructureUtility {
}
/**
- * Assume a default of LV coil. Assume all coils accepted. Assumes using {@link #HINT_COIL_DEFAULT_DOTS} as dots.
- * @see #ofCoil(BiPredicate, Function, int, Block, int)
+ * Assume all coils accepted.
+ * @see #ofCoil(BiPredicate, Function)
*/
public static <T> IStructureElement<T> ofCoil(BiConsumer<T, HeatingCoilLevel> heatingCoilSetter, Function<T, HeatingCoilLevel> heatingCoilGetter) {
return ofCoil((t, l) -> {
heatingCoilSetter.accept(t, l);
return true;
- }, heatingCoilGetter, HINT_COIL_DEFAULT_DOTS, GregTech_API.sBlockCasings5, 0);
- }
-
- /**
- * Assumes using {@link #HINT_COIL_DEFAULT_DOTS} as dots
- * @see #ofCoil(BiPredicate, Function, int, Block, int)
- */
- public static <T> IStructureElement<T> ofCoil(BiPredicate<T, HeatingCoilLevel> heatingCoilSetter, Function<T, HeatingCoilLevel> heatingCoilGetter, Block defaultCoil, int defaultMeta) {
- return ofCoil(heatingCoilSetter, heatingCoilGetter, HINT_COIL_DEFAULT_DOTS, defaultCoil, defaultMeta);
+ }, heatingCoilGetter);
}
/**
@@ -106,11 +97,8 @@ public class GT_StructureUtility {
* Might be called less times if structure test fails.
* If the setter returns false then it assumes the coil is rejected.
* @param heatingCoilGetter Get the current heating level. Null means no coil recorded yet.
- * @param dots The hinting dots
- * @param defaultCoil The block to place when auto constructing
- * @param defaultMeta The block meta to place when auto constructing
*/
- public static <T> IStructureElement<T> ofCoil(BiPredicate<T, HeatingCoilLevel> heatingCoilSetter, Function<T, HeatingCoilLevel> heatingCoilGetter, int dots, Block defaultCoil, int defaultMeta) {
+ public static <T> IStructureElement<T> ofCoil(BiPredicate<T, HeatingCoilLevel> heatingCoilSetter, Function<T, HeatingCoilLevel> heatingCoilGetter) {
if (heatingCoilSetter == null || heatingCoilGetter == null) {
throw new IllegalArgumentException();
}
@@ -131,13 +119,17 @@ public class GT_StructureUtility {
@Override
public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) {
- StructureLibAPI.hintParticle(world, x, y, z, StructureLibAPI.getBlockHint(), dots);
+ StructureLibAPI.hintParticle(world, x, y, z, GregTech_API.sBlockCasings5, getMeta(trigger));
return true;
}
+ private int getMeta(ItemStack trigger) {
+ return GT_Block_Casings5.getMetaFromCoilHeat(HeatingCoilLevel.getFromTier((byte) Math.min(HeatingCoilLevel.size(), Math.max(0, trigger.stackSize))));
+ }
+
@Override
public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) {
- return world.setBlock(x, y, z, defaultCoil, defaultMeta, 3);
+ return world.setBlock(x, y, z, GregTech_API.sBlockCasings5, getMeta(trigger), 3);
}
};
}
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Casings5.java b/src/main/java/gregtech/common/blocks/GT_Block_Casings5.java
index 296bf765b0..63645f3c3f 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Casings5.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Casings5.java
@@ -108,6 +108,35 @@ public class GT_Block_Casings5 extends GT_Block_Casings_Abstract implements IHea
}
}
+ public static int getMetaFromCoilHeat(HeatingCoilLevel level) {
+ switch (level) {
+ case LV:
+ return 0;
+ case MV:
+ return 1;
+ case HV:
+ return 2;
+ case EV:
+ return 3;
+ case IV:
+ return 4;
+ case ZPM:
+ return 5;
+ case UV:
+ return 6;
+ case UEV:
+ return 7;
+ case UIV:
+ return 8;
+ case LuV:
+ return 9;
+ case UHV:
+ return 10;
+ default:
+ return 0;
+ }
+ }
+
@Override
public HeatingCoilLevel getCoilHeat(int meta) {
getOnCoilCheck().accept(this);
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java
index 5d363d9aa1..dd10b2465d 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java
@@ -242,13 +242,19 @@ public class GT_MetaTileEntity_AssemblyLine extends GT_MetaTileEntity_EnhancedMu
if (!tTag.hasKey("time"))
continue;
- mMaxProgresstime = tTag.getInteger("time");
- if (mMaxProgresstime <= 0)
+ int tMaxProgressTime = tTag.getInteger("time");
+ if (tMaxProgressTime <= 0)
continue;
if (!tTag.hasKey("eu"))
continue;
- mEUt = tTag.getInteger("eu");
+
+ calculateOverclockedNessMulti(tTag.getInteger("eu"), tMaxProgressTime, 1, getMaxInputVoltage());
+ //In case recipe is too OP for that machine
+ if (mMaxProgresstime == Integer.MAX_VALUE - 1 && mEUt == Integer.MAX_VALUE - 1) {
+ if (GT_Values.D1) GT_FML_LOGGER.info("Recipe too OP");
+ continue;
+ }
if (GT_Values.D1) GT_FML_LOGGER.info("Find avaiable recipe");
findRecipe = true;
@@ -274,22 +280,8 @@ public class GT_MetaTileEntity_AssemblyLine extends GT_MetaTileEntity_EnhancedMu
}
if (GT_Values.D1) GT_FML_LOGGER.info("Check overclock");
- byte tTier = (byte) Math.max(1, GT_Utility.getTier(getMaxInputVoltage()));
this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000);
this.mEfficiencyIncrease = 10000;
- if (mEUt <= 16) {
- this.mEUt = (mEUt * (1 << tTier - 1) * (1 << tTier - 1));
- this.mMaxProgresstime = (mMaxProgresstime / (1 << tTier - 1));
- } else {
- while (this.mEUt <= gregtech.api.enums.GT_Values.V[(tTier - 1)]) {
- this.mEUt *= 4;
- this.mMaxProgresstime /= 2;
- }
- }
- if (this.mEUt > 0) {
- this.mEUt = -this.mEUt;
- }
- this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime);
updateSlots();
if (GT_Values.D1)
GT_FML_LOGGER.info("Recipe sucessfull");
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DistillationTower.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DistillationTower.java
index 73bbfe056a..bbbaed929a 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DistillationTower.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DistillationTower.java
@@ -59,7 +59,11 @@ public class GT_MetaTileEntity_DistillationTower extends GT_MetaTileEntity_Enhan
onElementPass(GT_MetaTileEntity_DistillationTower::onCasingFound, ofBlock(GregTech_API.sBlockCasings4, 1))
))
.addElement('c', ofChain(
- onElementPass(GT_MetaTileEntity_DistillationTower::onTopLayerFound, ofBlock(GregTech_API.sBlockCasings4, 1)),
+ onElementPass(t -> t.onTopLayerFound(false), ofHatchAdder(GT_MetaTileEntity_DistillationTower::addEnergyInputToMachineList, CASING_INDEX, 1)),
+ onElementPass(t -> t.onTopLayerFound(false), ofHatchAdder(GT_MetaTileEntity_DistillationTower::addOutputToMachineList, CASING_INDEX, 1)),
+ onElementPass(t -> t.onTopLayerFound(false), ofHatchAdder(GT_MetaTileEntity_DistillationTower::addInputToMachineList, CASING_INDEX, 1)),
+ onElementPass(t -> t.onTopLayerFound(false), ofHatchAdder(GT_MetaTileEntity_DistillationTower::addMaintenanceToMachineList, CASING_INDEX, 1)),
+ onElementPass(t -> t.onTopLayerFound(true), ofBlock(GregTech_API.sBlockCasings4, 1)),
isAir()
))
.build();
@@ -96,7 +100,7 @@ public class GT_MetaTileEntity_DistillationTower extends GT_MetaTileEntity_Enhan
.addMaintenanceHatch("Any casing")
.addInputHatch("Any bottom layer casing")
.addOutputBus("Any bottom layer casing")
- .addOutputHatch("2-11x Output Hatches (One per layer except bottom layer)")
+ .addOutputHatch("2-11x Output Hatches (At least one per layer except bottom layer)")
.toolTipFinisher("Gregtech");
return tt;
}
@@ -182,9 +186,10 @@ public class GT_MetaTileEntity_DistillationTower extends GT_MetaTileEntity_Enhan
mCasing++;
}
- protected void onTopLayerFound() {
+ protected void onTopLayerFound(boolean aIsCasing) {
mTopLayerFound = true;
- onCasingFound();
+ if (aIsCasing)
+ onCasingFound();
}
protected boolean addLayerOutputHatch(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
@@ -220,9 +225,13 @@ public class GT_MetaTileEntity_DistillationTower extends GT_MetaTileEntity_Enhan
return false;
// check each layer
- while (mHeight < 12 && checkPiece(STRUCTURE_PIECE_LAYER, 1, mHeight, 0) && !mTopLayerFound)
+ while (mHeight < 12 && checkPiece(STRUCTURE_PIECE_LAYER, 1, mHeight, 0) && !mTopLayerFound) {
+ if (mOutputHatchesByLayer.get(mHeight - 1).isEmpty())
+ // layer without output hatch
+ return false;
// not top
mHeight++;
+ }
// validate final invariants...
return mCasing >= 7 * mHeight - 5 && mHeight >= 2 && mTopLayerFound && mMaintenanceHatches.size() == 1;
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java
index 9bd2a66250..0ea04f1cfa 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java
@@ -361,7 +361,7 @@ public abstract class GT_MetaTileEntity_DrillerBase extends GT_MetaTileEntity_En
@Override
public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
updateCoordinates();
- return checkPiece(STRUCTURE_PIECE_MAIN, 1, 6, 0) && checkHatches() && GT_Utility.getTier(getMaxInputVoltage()) >= getMinTier();
+ return checkPiece(STRUCTURE_PIECE_MAIN, 1, 6, 0) && checkHatches() && GT_Utility.getTier(getMaxInputVoltage()) >= getMinTier() && mMaintenanceHatches.size() == 1;
}
private void updateCoordinates() {
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ElectricBlastFurnace.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ElectricBlastFurnace.java
index 23c6685d8a..c7a3c3490d 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ElectricBlastFurnace.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ElectricBlastFurnace.java
@@ -269,6 +269,7 @@ public class GT_MetaTileEntity_ElectricBlastFurnace extends GT_MetaTileEntity_Ab
return false;
if (mMaintenanceHatches.size() != 1)
+ return false;
this.mHeatingCapacity = (int) getCoilLevel().getHeat() + 100 * (GT_Utility.getTier(getMaxInputVoltage()) - 2);
return true;
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine.java
index 8cede375dc..fd3117e451 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine.java
@@ -79,7 +79,7 @@ public abstract class GT_MetaTileEntity_LargeTurbine extends GT_MetaTileEntity_E
@Override
public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
- return checkPiece(STRUCTURE_PIECE_MAIN, 2, 2, 1);
+ return checkPiece(STRUCTURE_PIECE_MAIN, 2, 2, 1) && mMaintenanceHatches.size() == 1 && mMufflerHatches.isEmpty() == (getPollutionPerTick(null) == 0);
}
public abstract Block getCasingBlock();
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiFurnace.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiFurnace.java
index ba77716622..edfce02aad 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiFurnace.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiFurnace.java
@@ -184,6 +184,9 @@ public class GT_MetaTileEntity_MultiFurnace extends GT_MetaTileEntity_AbstractMu
if (getCoilLevel() == HeatingCoilLevel.None)
return false;
+ if (mMaintenanceHatches.size() != 1)
+ return false;
+
this.mLevel = getCoilLevel().getLevel();
this.mCostDiscount = getCoilLevel().getCostDiscount();
return true;
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilCracker.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilCracker.java
index e4f96db248..8a257db8ee 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilCracker.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilCracker.java
@@ -49,11 +49,11 @@ public class GT_MetaTileEntity_OilCracker extends GT_MetaTileEntity_EnhancedMult
.addElement('c', ofCoil(GT_MetaTileEntity_OilCracker::setCoilLevel, GT_MetaTileEntity_OilCracker::getCoilLevel))
.addElement('l', ofChain(
ofHatchAdder(GT_MetaTileEntity_OilCracker::addLeftHatchToMachineList, CASING_INDEX, 2),
- onElementPass(GT_MetaTileEntity_OilCracker::onCasingAdded, ofBlock(GregTech_API.sBlockCasings4, 2))
+ onElementPass(GT_MetaTileEntity_OilCracker::onCasingAdded, ofBlock(GregTech_API.sBlockCasings4, 1))
))
.addElement('r', ofChain(
ofHatchAdder(GT_MetaTileEntity_OilCracker::addRightHatchToMachineList, CASING_INDEX, 2),
- onElementPass(GT_MetaTileEntity_OilCracker::onCasingAdded, ofBlock(GregTech_API.sBlockCasings4, 3))
+ onElementPass(GT_MetaTileEntity_OilCracker::onCasingAdded, ofBlock(GregTech_API.sBlockCasings4, 1))
))
.addElement('m', ofChain(
ofHatchAdder(GT_MetaTileEntity_OilCracker::addMiddleInputToMachineList, CASING_INDEX, 1),
@@ -90,10 +90,10 @@ public class GT_MetaTileEntity_OilCracker extends GT_MetaTileEntity_EnhancedMult
.addController("Front center")
.addCasingInfo("Clean Stainless Steel Machine Casing", 18)
.addOtherStructurePart("2 Rings of 8 Coils", "Each side of the controller")
- .addInfo("Gets 5% energy cost reduction per coil tier")
+ .addInfo("Gets 5% EU/t reduction per coil tier")
.addEnergyHatch("Any casing")
.addMaintenanceHatch("Any casing")
- .addInputHatch("Steam/Hydrogen, Any middle ring casing")
+ .addInputHatch("Steam/Hydrogen ONLY, Any middle ring casing")
.addInputHatch("Any left/right side casing")
.addOutputHatch("Any left/right side casing")
.addStructureInfo("Input/Output Hatches must be on opposite sides!")
@@ -120,13 +120,18 @@ public class GT_MetaTileEntity_OilCracker extends GT_MetaTileEntity_EnhancedMult
}
@Override
+ public GT_Recipe.GT_Recipe_Map getRecipeMap() {
+ return GT_Recipe.GT_Recipe_Map.sCrakingRecipes;
+ }
+
+ @Override
public boolean checkRecipe(ItemStack aStack) {
ArrayList<FluidStack> tInputList = getStoredFluids();
FluidStack[] tFluidInputs = tInputList.toArray(new FluidStack[0]);
long tVoltage = getMaxInputVoltage();
byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage));
- GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sCrakingRecipes.findRecipe(
+ GT_Recipe tRecipe = getRecipeMap().findRecipe(
getBaseMetaTileEntity(),
false,
gregtech.api.enums.GT_Values.V[tTier],
@@ -140,12 +145,10 @@ public class GT_MetaTileEntity_OilCracker extends GT_MetaTileEntity_EnhancedMult
if (tRecipe.isRecipeInputEqual(true, tFluidInputs, mInventory[1])) {
this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000);
this.mEfficiencyIncrease = 10000;
- this.mEUt = tRecipe.mEUt;
- this.mMaxProgresstime = tRecipe.mDuration;
- while (this.mEUt <= gregtech.api.enums.GT_Values.V[(tTier - 1)]) {
- this.mEUt *= 4;
- this.mMaxProgresstime /= 2;
- }
+ calculateOverclockedNessMulti(tRecipe.mEUt, tRecipe.mDuration, 1, tVoltage);
+ //In case recipe is too OP for that machine
+ if (mMaxProgresstime == Integer.MAX_VALUE - 1 && mEUt == Integer.MAX_VALUE - 1)
+ return false;
this.mEUt *= Math.pow(0.95D, this.heatLevel.getTier());
@@ -248,7 +251,9 @@ public class GT_MetaTileEntity_OilCracker extends GT_MetaTileEntity_EnhancedMult
mInputOnSide = -1;
mOutputOnSide = -1;
replaceDeprecatedCoils(aBaseMetaTileEntity);
- return checkPiece(STRUCTURE_PIECE_MAIN, 2, 1, 0) && mInputOnSide != -1 && mOutputOnSide != -1 && mCasingAmount >= 18;
+ return checkPiece(STRUCTURE_PIECE_MAIN, 2, 1, 0) &&
+ mInputOnSide != -1 && mOutputOnSide != -1 && mCasingAmount >= 18 &&
+ mMaintenanceHatches.size() == 1 && !mMiddleInputHatches.isEmpty();
}
@Override
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PyrolyseOven.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PyrolyseOven.java
index 9ad84d061a..76bdb8423a 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PyrolyseOven.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PyrolyseOven.java
@@ -188,7 +188,8 @@ public class GT_MetaTileEntity_PyrolyseOven extends GT_MetaTileEntity_EnhancedMu
coilHeat = HeatingCoilLevel.None;
mCasingAmount = 0;
replaceDeprecatedCoils(aBaseMetaTileEntity);
- return checkPiece("main", 2, 3, 0) && mCasingAmount >= 60;
+ return checkPiece("main", 2, 3, 0) && mCasingAmount >= 60 &&
+ mMaintenanceHatches.size() == 1 && !mMufflerHatches.isEmpty();
}
@Override