aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHoleFish <48403212+HoleFish@users.noreply.github.com>2024-02-09 06:12:37 +0800
committerGitHub <noreply@github.com>2024-02-08 23:12:37 +0100
commit6752616f3f7f55db03953e613b45682cee2ba002 (patch)
tree533c807b8014a375ba9ecd0842a3d5178c6fbb47
parent88d56ff844d4ad6d8cc63cacc0177cc83874ae69 (diff)
downloadGT5-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.java54
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") + ": "