File tree Expand file tree Collapse file tree
src/main/java/de/srendi/advancedperipherals/common/util Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ public class EnergyStorageProxy implements IEnergyStorage {
1010 private final EnergyDetectorEntity energyDetectorTE ;
1111 private int maxTransferRate ;
1212 private int transferedInThisTick = 0 ;
13+ private boolean receiving = false ;
1314
1415 public EnergyStorageProxy (EnergyDetectorEntity energyDetectorTE , int maxTransferRate ) {
1516 this .energyDetectorTE = energyDetectorTE ;
@@ -23,14 +24,22 @@ public boolean canReceive() {
2324
2425 @ Override
2526 public int receiveEnergy (int maxReceive , boolean simulate ) {
26- Optional <IEnergyStorage > out = energyDetectorTE .getOutputStorage ();
27- return out .map (outStorage -> {
28- int transferred = outStorage .receiveEnergy (Math .min (maxReceive , maxTransferRate - transferedInThisTick ), simulate );
29- if (!simulate ) {
30- transferedInThisTick += transferred ;
31- }
32- return transferred ;
33- }).orElse (0 );
27+ if (this .receiving ) {
28+ return 0 ;
29+ }
30+ this .receiving = true ;
31+ try {
32+ Optional <IEnergyStorage > out = energyDetectorTE .getOutputStorage ();
33+ return out .map (outStorage -> {
34+ int transferred = outStorage .receiveEnergy (Math .min (maxReceive , maxTransferRate - transferedInThisTick ), simulate );
35+ if (!simulate ) {
36+ transferedInThisTick += transferred ;
37+ }
38+ return transferred ;
39+ }).orElse (0 );
40+ } finally {
41+ this .receiving = false ;
42+ }
3443 }
3544
3645 @ Override
You can’t perform that action at this time.
0 commit comments