32 lines
1.0 KiB
Java
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();
|
|
}
|
|
}
|
|
}
|