aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarry <harryyunull@gmail.com>2023-07-30 07:11:26 -0400
committerGitHub <noreply@github.com>2023-07-30 13:11:26 +0200
commit086f7e45131af4ac024924c8267fc1d14da01770 (patch)
treea02dfd6815aeb9fdb3e9f846103e68fd09857710
parent685934fe140a471ce947a7f01b0003df290aee4f (diff)
downloadGT5-Unofficial-086f7e45131af4ac024924c8267fc1d14da01770.tar.gz
GT5-Unofficial-086f7e45131af4ac024924c8267fc1d14da01770.tar.bz2
GT5-Unofficial-086f7e45131af4ac024924c8267fc1d14da01770.zip
Fix wireless energy voiding (#236)
* Fix wireless energy hatch voiding energy * avoid bigint
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_WirelessMulti.java25
1 files changed, 12 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 28c4e8231d..aab79fb435 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.BOLD;
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;
@@ -181,8 +182,7 @@ public class GT_MetaTileEntity_Hatch_WirelessMulti extends GT_MetaTileEntity_Hat
strongCheckOrAddUser(owner_uuid, owner_name);
- if (addEUToGlobalEnergyMap(owner_uuid, eu_transferred_per_operation.negate()))
- setEUVar(eu_transferred_per_operation_long);
+ tryFetchingEnergy();
}
}
@@ -199,18 +199,17 @@ public class GT_MetaTileEntity_Hatch_WirelessMulti extends GT_MetaTileEntity_Hat
// 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();
+ 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);
+ }
}