From ecf0c7f7850257c39a8e58fef77b03c93d745489 Mon Sep 17 00:00:00 2001 From: GlodBlock <1356392126@qq.com> Date: Wed, 14 Jul 2021 13:11:35 +0800 Subject: fix power output bug --- .../GoodGenerator/Blocks/TEs/MultiNqGenerator.java | 51 +++++++++++++++++----- 1 file changed, 41 insertions(+), 10 deletions(-) (limited to 'src/main/java/GoodGenerator') diff --git a/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java b/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java index 51c3477e68..5243ce819a 100644 --- a/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java +++ b/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java @@ -22,6 +22,7 @@ import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import org.lwjgl.input.Keyboard; @@ -34,12 +35,12 @@ import static com.github.technus.tectech.mechanics.structure.StructureUtility.*; public class MultiNqGenerator extends GT_MetaTileEntity_MultiblockBase_EM implements TecTechEnabledMulti, IConstructable { - private IStructureDefinition multiDefinition = null; - private int ticker = 0; - private long leftEnergy = 0; - boolean fluidLocker = true; - FluidStack lockedFluid = null; - int times = 1; + protected IStructureDefinition multiDefinition = null; + protected int ticker = 0; + protected long leftEnergy = 0; + protected boolean fluidLocker = true; + protected FluidStack lockedFluid = null; + protected int times = 1; @Override public void construct(ItemStack itemStack, boolean hintsOnly) { @@ -152,6 +153,31 @@ public class MultiNqGenerator extends GT_MetaTileEntity_MultiblockBase_EM implem return true; } + @Override + public void loadNBTData(NBTTagCompound aNBT){ + super.loadNBTData(aNBT); + this.ticker = aNBT.getInteger("mTicker"); + this.fluidLocker = aNBT.getBoolean("mIsLocked"); + this.times = aNBT.getInteger("mTimes"); + this.leftEnergy = aNBT.getLong("mLeftEnergy"); + if (FluidRegistry.getFluid(aNBT.getString("mLockedFluidName")) != null) + this.lockedFluid = new FluidStack(FluidRegistry.getFluid(aNBT.getString("mLockedFluidName")), aNBT.getInteger("mLockedFluidAmount")); + else this.lockedFluid = null; + } + + @Override + public void saveNBTData(NBTTagCompound aNBT){ + super.saveNBTData(aNBT); + aNBT.setInteger("mTicker", this.ticker); + aNBT.setBoolean("mIsLocked", this.fluidLocker); + aNBT.setInteger("mTimes", this.times); + aNBT.setLong("mLeftEnergy", this.leftEnergy); + if (lockedFluid != null){ + aNBT.setString("mLockedFluidName", this.lockedFluid.getFluid().getName()); + aNBT.setInteger("mLockedFluidAmount", this.lockedFluid.amount); + } + } + @Override public boolean checkRecipe_EM(ItemStack aStack) { @@ -296,10 +322,15 @@ public class MultiNqGenerator extends GT_MetaTileEntity_MultiblockBase_EM implem long power = voltage * tHatch.maxAmperesOut(); long outputAmperes; if (outputPower > power) doExplosion(8 * GT_Utility.getTier(power)); - leftEnergy += outputPower; - outputAmperes = leftEnergy / voltage; - leftEnergy -= outputAmperes * voltage; - addEnergyOutput_EM(voltage ,outputAmperes); + if (outputPower >= voltage){ + leftEnergy += outputPower; + outputAmperes = leftEnergy / voltage; + leftEnergy -= outputAmperes * voltage; + addEnergyOutput_EM(voltage, outputAmperes); + } + else{ + addEnergyOutput_EM(outputPower, 1); + } } } -- cgit