forked from TheBrokenRail/EnergonRelics
39 lines
1.2 KiB
Java
39 lines
1.2 KiB
Java
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();
|
|
}
|
|
}
|
|
}
|