diff options
| author | Yang Xizhi <60341015+GlodBlock@users.noreply.github.com> | 2022-11-26 00:33:48 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-25 17:33:48 +0100 |
| commit | b861cabda4487c0ec26a431e0b1256c0d6426a6c (patch) | |
| tree | 3dd866318b9367925fb6e65791d266392cb0ce54 /src/main/java/goodgenerator/blocks/tileEntity/base | |
| parent | d1a9e8a22c75b4b25cdcf9d8a27cce3fdf8c24a5 (diff) | |
| download | GT5-Unofficial-b861cabda4487c0ec26a431e0b1256c0d6426a6c.tar.gz GT5-Unofficial-b861cabda4487c0ec26a431e0b1256c0d6426a6c.tar.bz2 GT5-Unofficial-b861cabda4487c0ec26a431e0b1256c0d6426a6c.zip | |
allow precise assembler overclock after max (#106)
* allow precise assembler overclock after max
* use the new energy base
* clean up
* oversight
Diffstat (limited to 'src/main/java/goodgenerator/blocks/tileEntity/base')
| -rw-r--r-- | src/main/java/goodgenerator/blocks/tileEntity/base/GT_MetaTileEntity_LongPowerUsageBase.java | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/base/GT_MetaTileEntity_LongPowerUsageBase.java b/src/main/java/goodgenerator/blocks/tileEntity/base/GT_MetaTileEntity_LongPowerUsageBase.java new file mode 100644 index 0000000000..b6e8f79ca8 --- /dev/null +++ b/src/main/java/goodgenerator/blocks/tileEntity/base/GT_MetaTileEntity_LongPowerUsageBase.java @@ -0,0 +1,125 @@ +package goodgenerator.blocks.tileEntity.base; + +import com.github.bartimaeusnek.bartworks.util.BW_Util; +import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyMulti; +import gregtech.api.metatileentity.implementations.*; +import gregtech.api.util.GT_Utility; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; + +/** + * Base class for multiblocks that supports TT energy hatches. + * @param <T> + */ +public abstract class GT_MetaTileEntity_LongPowerUsageBase<T extends GT_MetaTileEntity_LongPowerUsageBase<T>> + extends GT_MetaTileEntity_ExtendedPowerMultiBlockBase<T> { + + protected GT_MetaTileEntity_LongPowerUsageBase(int aID, String aName, String aNameRegional) { + super(aID, aName, aNameRegional); + } + + protected GT_MetaTileEntity_LongPowerUsageBase(String aName) { + super(aName); + } + + @Override + public void clearHatches() { + mExoticEnergyHatches.clear(); + super.clearHatches(); + } + + @Override + public long getMaxInputVoltage() { + long rVoltage = 0; + for (GT_MetaTileEntity_Hatch_Energy tHatch : mEnergyHatches) { + if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { + rVoltage += tHatch.maxEUInput(); + } + } + for (GT_MetaTileEntity_Hatch tHatch : mExoticEnergyHatches) { + if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { + rVoltage += tHatch.maxEUInput(); + } + } + return rVoltage; + } + + @Override + public String[] getInfoData() { + return getInfoDataArray(this); + } + + protected abstract long getRealVoltage(); + + protected long getMaxInputAmps() { + long rAmps = 0; + for (GT_MetaTileEntity_Hatch_Energy tHatch : mEnergyHatches) { + if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { + rAmps += tHatch.maxAmperesIn(); + } + } + for (GT_MetaTileEntity_Hatch tHatch : mExoticEnergyHatches) { + if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { + rAmps += ((GT_MetaTileEntity_Hatch_EnergyMulti) tHatch).Amperes; + } + } + return rAmps; + } + + protected String[] getInfoDataArray(GT_MetaTileEntity_MultiBlockBase multiBlockBase) { + int mPollutionReduction = 0; + + for (GT_MetaTileEntity_Hatch_Muffler tHatch : this.mMufflerHatches) { + if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { + mPollutionReduction = Math.max(tHatch.calculatePollutionReduction(100), mPollutionReduction); + } + } + + long storedEnergy = 0; + long maxEnergy = 0; + + for (GT_MetaTileEntity_Hatch_Energy tHatch : this.mEnergyHatches) { + if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { + storedEnergy += tHatch.getBaseMetaTileEntity().getStoredEU(); + maxEnergy += tHatch.getBaseMetaTileEntity().getEUCapacity(); + } + } + for (GT_MetaTileEntity_Hatch tHatch : this.mExoticEnergyHatches) { + if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(tHatch)) { + storedEnergy += tHatch.getBaseMetaTileEntity().getStoredEU(); + maxEnergy += tHatch.getBaseMetaTileEntity().getEUCapacity(); + } + } + + long nominalV = getRealVoltage(); + String tName = BW_Util.getTierNameFromVoltage(this.getMaxInputVoltage()); + if (tName.equals("MAX+")) tName = EnumChatFormatting.OBFUSCATED + "MAX+"; + + return new String[] { + StatCollector.translateToLocal("GT5U.multiblock.Progress") + ": " + EnumChatFormatting.GREEN + + GT_Utility.formatNumbers(this.mProgresstime / 20) + EnumChatFormatting.RESET + " s / " + + EnumChatFormatting.YELLOW + + GT_Utility.formatNumbers(this.mMaxProgresstime / 20) + EnumChatFormatting.RESET + " s", + StatCollector.translateToLocal("GT5U.multiblock.energy") + ": " + EnumChatFormatting.GREEN + + GT_Utility.formatNumbers(storedEnergy) + EnumChatFormatting.RESET + " EU / " + + EnumChatFormatting.YELLOW + + GT_Utility.formatNumbers(maxEnergy) + EnumChatFormatting.RESET + " EU", + StatCollector.translateToLocal("GT5U.multiblock.usage") + ": " + EnumChatFormatting.RED + + GT_Utility.formatNumbers(-this.lEUt) + EnumChatFormatting.RESET + " EU/t", + StatCollector.translateToLocal("GT5U.multiblock.mei") + ": " + EnumChatFormatting.YELLOW + + GT_Utility.formatNumbers(this.getMaxInputVoltage()) + EnumChatFormatting.RESET + " EU/t(*" + + GT_Utility.formatNumbers(this.getMaxInputAmps()) + "A) = " + + EnumChatFormatting.YELLOW + + GT_Utility.formatNumbers(nominalV) + EnumChatFormatting.RESET, + StatCollector.translateToLocal("GT5U.machines.tier") + ": " + EnumChatFormatting.YELLOW + tName + + EnumChatFormatting.RESET, + StatCollector.translateToLocal("GT5U.multiblock.problems") + ": " + EnumChatFormatting.RED + + (this.getIdealStatus() - this.getRepairStatus()) + EnumChatFormatting.RESET + " " + + StatCollector.translateToLocal("GT5U.multiblock.efficiency") + + ": " + EnumChatFormatting.YELLOW + + (float) this.mEfficiency / 100.0F + EnumChatFormatting.RESET + " %", + StatCollector.translateToLocal("GT5U.multiblock.pollution") + ": " + EnumChatFormatting.GREEN + + mPollutionReduction + EnumChatFormatting.RESET + " %" + }; + } +} |
