2019-08-26 09:43:53 +03:00
|
|
|
package pro.gravit.launcher.modules;
|
|
|
|
|
2019-08-26 12:27:30 +03:00
|
|
|
import java.io.IOException;
|
|
|
|
import java.nio.file.Path;
|
2019-08-29 14:33:27 +03:00
|
|
|
import java.util.List;
|
2019-08-26 09:43:53 +03:00
|
|
|
import java.util.function.Predicate;
|
|
|
|
|
2019-08-31 15:44:43 +03:00
|
|
|
import pro.gravit.utils.Version;
|
|
|
|
|
2019-08-26 09:43:53 +03:00
|
|
|
public interface LauncherModulesManager {
|
2019-08-28 17:04:44 +03:00
|
|
|
|
2019-08-26 09:43:53 +03:00
|
|
|
LauncherModule loadModule(LauncherModule module);
|
2019-08-26 12:27:30 +03:00
|
|
|
LauncherModule loadModule(Path file) throws IOException;
|
2019-08-26 09:43:53 +03:00
|
|
|
LauncherModule getModule(String name);
|
2019-08-26 12:27:30 +03:00
|
|
|
LauncherModule getCoreModule();
|
2019-08-26 09:43:53 +03:00
|
|
|
default boolean containsModule(String name)
|
|
|
|
{
|
|
|
|
return getModule(name) != null;
|
|
|
|
}
|
|
|
|
|
|
|
|
default <T extends LauncherModule> boolean containsModule(Class<? extends T> clazz)
|
|
|
|
{
|
|
|
|
return getModule(clazz) != null;
|
|
|
|
}
|
|
|
|
ClassLoader getModuleClassLoader();
|
2019-08-31 15:44:43 +03:00
|
|
|
ModulesConfigManager getConfigManager();
|
2019-08-26 09:43:53 +03:00
|
|
|
<T extends LauncherModule> T getModule(Class<? extends T> clazz);
|
2019-08-29 14:33:27 +03:00
|
|
|
<T> T getModuleByInterface(Class<T> clazz);
|
|
|
|
<T> List<T> getModulesByInterface(Class<T> clazz);
|
2019-08-26 09:43:53 +03:00
|
|
|
<T extends LauncherModule> T findModule(Class<? extends T> clazz, Predicate<Version> versionPredicate);
|
2019-08-28 12:37:59 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Invoke event processing for all modules.
|
|
|
|
* Event processing is carried out in the order of the modules in the list (sorted by priority)
|
|
|
|
* @param event event handled
|
|
|
|
* @param <T> event type
|
|
|
|
*/
|
2019-08-26 13:24:19 +03:00
|
|
|
<T extends LauncherModule.Event> void invokeEvent(T event);
|
2019-08-26 09:43:53 +03:00
|
|
|
}
|