EnergonRelics/src/main/java/com/thebrokenrail/energonrelics/energy/core/util/EnergyTicker.java

39 lines
1.2 KiB
Java
Raw Normal View History

2020-07-24 17:25:50 +00:00
package com.thebrokenrail.energonrelics.energy.core.util;
import com.thebrokenrail.energonrelics.energy.core.EnergyProviderBlockEntity;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class EnergyTicker {
private static final List<EnergyProviderBlockEntity> scheduled = new ArrayList<>();
public static void schedule(EnergyProviderBlockEntity provider) {
scheduled.add(provider);
}
public static void tick() {
List<EnergyProviderBlockEntity> started = new ArrayList<>();
List<EnergyProviderBlockEntity> temp = new ArrayList<>(scheduled);
List<EnergyProviderBlockEntity> temp2 = new ArrayList<>();
while (!temp.isEmpty()) {
for (EnergyProviderBlockEntity provider : temp) {
if (!started.contains(provider)) {
temp2.addAll(provider.startTick());
started.add(provider);
}
}
temp.clear();
temp.addAll(temp2);
temp2.clear();
}
Collections.shuffle(started);
for (EnergyProviderBlockEntity provider : started) {
provider.logicTick();
}
}
}