From fa338d02043cd9d455fb0047bddd9f136ca0f674 Mon Sep 17 00:00:00 2001 From: Harry Yu Date: Sat, 29 Jul 2023 15:32:27 -0400 Subject: [PATCH 1/2] Fix wireless energy hatch voiding energy --- ...GT_MetaTileEntity_Hatch_WirelessMulti.java | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_WirelessMulti.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_WirelessMulti.java index 28c4e8231..d061ade8d 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_WirelessMulti.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_WirelessMulti.java @@ -181,8 +181,7 @@ public void onFirstTick(IGregTechTileEntity aBaseMetaTileEntity) { strongCheckOrAddUser(owner_uuid, owner_name); - if (addEUToGlobalEnergyMap(owner_uuid, eu_transferred_per_operation.negate())) - setEUVar(eu_transferred_per_operation_long); + tryFetchingEnergy(); } } @@ -199,18 +198,17 @@ public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { // Every ticks_between_energy_addition add eu_transferred_per_operation to internal EU storage from network. if (aTick % ticks_between_energy_addition == 0L) { - long total_eu = getBaseMetaTileEntity().getStoredEU(); - - // Can the machine store the EU being added? - long new_eu_storage = total_eu + eu_transferred_per_operation_long; - if (new_eu_storage <= maxEUStore()) { - - // Attempt to remove energy from the network and add it to the internal buffer of the machine. - if (addEUToGlobalEnergyMap(owner_uuid, eu_transferred_per_operation.negate())) { - setEUVar(new_eu_storage); - } - } + tryFetchingEnergy(); } } } + + private void tryFetchingEnergy() { + long currentEU = getBaseMetaTileEntity().getStoredEU(); + long maxEU = maxEUStore(); + BigInteger euToTransfer = BigInteger.valueOf(maxEU - currentEU).min(eu_transferred_per_operation); + if (euToTransfer.signum() <= 0) return; // nothing to transfer + if (!addEUToGlobalEnergyMap(owner_uuid, euToTransfer.negate())) return; + setEUVar(currentEU + euToTransfer.longValue()); + } } From 46efdc5334dcdca2dc256b0d4816643292ea03c9 Mon Sep 17 00:00:00 2001 From: Harry Yu Date: Sat, 29 Jul 2023 15:51:34 -0400 Subject: [PATCH 2/2] avoid bigint --- .../hatch/GT_MetaTileEntity_Hatch_WirelessMulti.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_WirelessMulti.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_WirelessMulti.java index d061ade8d..aab79fb43 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_WirelessMulti.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_WirelessMulti.java @@ -9,6 +9,7 @@ import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.GRAY; import static gregtech.api.enums.GT_Values.AuthorColen; import static gregtech.api.enums.GT_Values.V; +import static java.lang.Long.min; import java.math.BigInteger; @@ -206,9 +207,9 @@ public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { private void tryFetchingEnergy() { long currentEU = getBaseMetaTileEntity().getStoredEU(); long maxEU = maxEUStore(); - BigInteger euToTransfer = BigInteger.valueOf(maxEU - currentEU).min(eu_transferred_per_operation); - if (euToTransfer.signum() <= 0) return; // nothing to transfer - if (!addEUToGlobalEnergyMap(owner_uuid, euToTransfer.negate())) return; - setEUVar(currentEU + euToTransfer.longValue()); + long euToTransfer = min(maxEU - currentEU, eu_transferred_per_operation_long); + if (euToTransfer <= 0) return; // nothing to transfer + if (!addEUToGlobalEnergyMap(owner_uuid, -euToTransfer)) return; + setEUVar(currentEU + euToTransfer); } }