LibJF/libjf-config-core-v2/src/client/java/io/gitlab/jfronny/libjf/config/impl/ui/ConfigScreenFactoryDiscovery.java

28 lines
1.1 KiB
Java
Raw Normal View History

2023-01-21 12:32:49 +01:00
package io.gitlab.jfronny.libjf.config.impl.ui;
import io.gitlab.jfronny.libjf.config.api.v2.ui.ConfigScreenFactory;
2023-01-21 12:32:49 +01:00
import net.fabricmc.loader.api.FabricLoader;
import java.util.Comparator;
import java.util.List;
2023-01-21 12:32:49 +01:00
public class ConfigScreenFactoryDiscovery {
private static ConfigScreenFactory<?, ?> discovered2 = null;
public static io.gitlab.jfronny.libjf.config.api.v2.ui.ConfigScreenFactory<?, ?> getConfigured2() {
if (discovered2 == null) {
discovered2 = getEntrypoints()
.stream()
.filter(it -> it instanceof io.gitlab.jfronny.libjf.config.api.v2.ui.ConfigScreenFactory<?,?>)
.<ConfigScreenFactory<?, ?>>map(it -> (ConfigScreenFactory<?, ?>) it)
.max(Comparator.comparing(io.gitlab.jfronny.libjf.config.api.v2.ui.ConfigScreenFactory::getPriority))
.orElseGet(PlaceholderScreenFactory::new);
}
return discovered2;
}
private static List<Object> getEntrypoints() {
return FabricLoader.getInstance().getEntrypoints("libjf:config_screen", Object.class);
2023-01-21 12:32:49 +01:00
}
}