LibJF/libjf-base/src/main/java/io/gitlab/jfronny/libjf/coprocess/CoProcessManager.java
2022-02-12 12:16:19 +01:00

32 lines
1.0 KiB
Java

package io.gitlab.jfronny.libjf.coprocess;
import io.gitlab.jfronny.libjf.LibJf;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.loader.api.FabricLoader;
import java.io.Closeable;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class CoProcessManager implements ModInitializer {
private final List<CoProcess> coProcesses = new ArrayList<>();
@Override
public void onInitialize() {
coProcesses.addAll(FabricLoader.getInstance().getEntrypoints(LibJf.MOD_ID + ":coprocess", CoProcess.class));
Runtime.getRuntime().addShutdownHook(new Thread(() -> coProcesses.forEach(coProcess -> {
coProcess.stop();
if (coProcess instanceof Closeable cl) {
try {
cl.close();
} catch (IOException e) {
LibJf.LOGGER.error("Could not close co-process", e);
}
}
})));
for (CoProcess coProcess : coProcesses) {
coProcess.start();
}
}
}