aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Hatch.java49
1 files changed, 24 insertions, 25 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Hatch.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Hatch.java
index 9a4f8d6b56..d156079e88 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Hatch.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Wireless_Hatch.java
@@ -2,6 +2,7 @@ package gregtech.api.metatileentity.implementations;
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;
@@ -125,44 +126,42 @@ public class GT_MetaTileEntity_Wireless_Hatch extends GT_MetaTileEntity_Hatch_En
}
@Override
- public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
-
- super.onPreTick(aBaseMetaTileEntity, aTick);
+ public void onFirstTick(IGregTechTileEntity aBaseMetaTileEntity) {
+ super.onFirstTick(aBaseMetaTileEntity);
- if (aBaseMetaTileEntity.isServerSide()) {
+ // UUID and username of the owner.
+ owner_uuid = aBaseMetaTileEntity.getOwnerUuid()
+ .toString();
+ owner_name = aBaseMetaTileEntity.getOwnerName();
- // On first tick find the player name and attempt to add them to the map.
- if (aTick == 1) {
+ strongCheckOrAddUser(owner_uuid, owner_name);
- // UUID and username of the owner.
- owner_uuid = aBaseMetaTileEntity.getOwnerUuid()
- .toString();
- owner_name = aBaseMetaTileEntity.getOwnerName();
+ tryFetchingEnergy();
+ }
- strongCheckOrAddUser(owner_uuid, owner_name);
+ @Override
+ public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
- if (addEUToGlobalEnergyMap(owner_uuid, eu_transferred_per_operation.negate()))
- setEUVar(eu_transferred_per_operation_long);
- }
+ super.onPreTick(aBaseMetaTileEntity, aTick);
+ if (aBaseMetaTileEntity.isServerSide()) {
// This is set up in a way to be as optimised as possible. If a user has a relatively plentiful energy
// network
// it should make no difference to them. Minimising the number of operations on BigInteger is essential.
// 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);
+ }
}