diff options
author | HoleFish <48403212+HoleFish@users.noreply.github.com> | 2024-02-09 06:12:37 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-08 23:12:37 +0100 |
commit | 6752616f3f7f55db03953e613b45682cee2ba002 (patch) | |
tree | 533c807b8014a375ba9ecd0842a3d5178c6fbb47 | |
parent | 88d56ff844d4ad6d8cc63cacc0177cc83874ae69 (diff) | |
download | GT5-Unofficial-6752616f3f7f55db03953e613b45682cee2ba002.tar.gz GT5-Unofficial-6752616f3f7f55db03953e613b45682cee2ba002.tar.bz2 GT5-Unofficial-6752616f3f7f55db03953e613b45682cee2ba002.zip |
Allow compact fusions to accept any amount of energy from energy hatches (#235)
* fix energy consumption
* hatch stuff
-rw-r--r-- | src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputer.java | 54 |
1 files changed, 26 insertions, 28 deletions
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputer.java b/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputer.java index fa404311e8..93faf16968 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputer.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputer.java @@ -5,6 +5,8 @@ import static gregtech.api.enums.Textures.BlockIcons.*; import static gregtech.api.util.GT_StructureUtility.ofFrame; import static gregtech.api.util.GT_Utility.filterValidMTEs; +import java.util.List; + import javax.annotation.Nullable; import net.minecraft.block.Block; @@ -41,6 +43,7 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.interfaces.tileentity.IOverclockDescriptionProvider; import gregtech.api.logic.ProcessingLogic; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; @@ -274,27 +277,22 @@ public abstract class LargeFusionComputer extends GT_MetaTileEntity_TooltipMulti } if (mStartUpCheck < 0) { if (mMachine) { - long mStoredEUt = aBaseMetaTileEntity.getStoredEU(); - long energyToMove = getSingleHatchPower(); - if (this.mEnergyHatches != null) { - for (GT_MetaTileEntity_Hatch_Energy tHatch : filterValidMTEs(mEnergyHatches)) { - if (aBaseMetaTileEntity.getStoredEU() + energyToMove < maxEUStore() - && tHatch.getBaseMetaTileEntity().decreaseStoredEnergyUnits(energyToMove, false)) { - aBaseMetaTileEntity.increaseStoredEnergyUnits(energyToMove, true); - } - } + if (aBaseMetaTileEntity.getStoredEU() <= 0 && mMaxProgresstime > 0) { + criticalStopMachine(); } - if (this.eEnergyMulti != null) { - for (GT_MetaTileEntity_Hatch_EnergyMulti tHatch : filterValidMTEs(eEnergyMulti)) { - if (aBaseMetaTileEntity.getStoredEU() + energyToMove < maxEUStore() - && tHatch.getBaseMetaTileEntity().decreaseStoredEnergyUnits(energyToMove, false)) { - aBaseMetaTileEntity.increaseStoredEnergyUnits(energyToMove, true); - } + + long energyLimit = getSingleHatchPower(); + List<GT_MetaTileEntity_Hatch> hatches = getExoticAndNormalEnergyHatchList(); + for (GT_MetaTileEntity_Hatch hatch : filterValidMTEs(hatches)) { + long consumableEnergy = Math.min(hatch.getEUVar(), energyLimit); + long receivedEnergy = Math + .min(consumableEnergy, maxEUStore() - aBaseMetaTileEntity.getStoredEU()); + if (receivedEnergy > 0) { + hatch.getBaseMetaTileEntity().decreaseStoredEnergyUnits(receivedEnergy, false); + aBaseMetaTileEntity.increaseStoredEnergyUnits(receivedEnergy, true); } } - if (mStoredEUt <= 0 && mMaxProgresstime > 0) { - criticalStopMachine(); - } + if (mMaxProgresstime > 0) { this.getBaseMetaTileEntity().decreaseStoredEnergyUnits(-lEUt, true); if (mMaxProgresstime > 0 && ++mProgresstime >= mMaxProgresstime) { @@ -501,14 +499,12 @@ public abstract class LargeFusionComputer extends GT_MetaTileEntity_TooltipMulti private boolean addEnergyInjector(IGregTechTileEntity aBaseMetaTileEntity, int aBaseCasingIndex) { IMetaTileEntity aMetaTileEntity = aBaseMetaTileEntity.getMetaTileEntity(); if (aMetaTileEntity == null) return false; - if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy) { - GT_MetaTileEntity_Hatch_Energy tHatch = (GT_MetaTileEntity_Hatch_Energy) aMetaTileEntity; - if (tHatch.mTier < hatchTier()) return false; + if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy tHatch) { + if (tHatch.getTierForStructure() < hatchTier()) return false; tHatch.updateTexture(aBaseCasingIndex); return mEnergyHatches.add(tHatch); - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_EnergyMulti) { - GT_MetaTileEntity_Hatch_EnergyMulti tHatch = (GT_MetaTileEntity_Hatch_EnergyMulti) aMetaTileEntity; - if (tHatch.mTier < hatchTier()) return false; + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_EnergyMulti tHatch) { + if (tHatch.getTierForStructure() < hatchTier()) return false; tHatch.updateTexture(aBaseCasingIndex); return eEnergyMulti.add(tHatch); } @@ -518,19 +514,21 @@ public abstract class LargeFusionComputer extends GT_MetaTileEntity_TooltipMulti private boolean addFluidIO(IGregTechTileEntity aBaseMetaTileEntity, int aBaseCasingIndex) { IMetaTileEntity aMetaTileEntity = aBaseMetaTileEntity.getMetaTileEntity(); if (aMetaTileEntity == null) return false; + if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch hatch) { + hatch.updateTexture(aBaseCasingIndex); + hatch.updateCraftingIcon(this.getMachineCraftingIcon()); + } if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input tInput) { if (tInput.getTierForStructure() < hatchTier()) return false; - tInput.updateTexture(aBaseCasingIndex); tInput.mRecipeMap = getRecipeMap(); return mInputHatches.add(tInput); } if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output tOutput) { if (tOutput.getTierForStructure() < hatchTier()) return false; - tOutput.updateTexture(aBaseCasingIndex); return mOutputHatches.add(tOutput); } if (aMetaTileEntity instanceof IDualInputHatch tInput) { - tInput.updateTexture(aBaseCasingIndex); + tInput.updateCraftingIcon(this.getMachineCraftingIcon()); return mDualInputHatches.add(tInput); } return false; @@ -586,7 +584,7 @@ public abstract class LargeFusionComputer extends GT_MetaTileEntity_TooltipMulti + EnumChatFormatting.RESET, StatCollector.translateToLocal("GT5U.fusion.req") + ": " + EnumChatFormatting.RED - + GT_Utility.formatNumbers(-lEUt) + + GT_Utility.formatNumbers(lEUt) + EnumChatFormatting.RESET + "EU/t", StatCollector.translateToLocal("GT5U.multiblock.energy") + ": " |