ModuleManager.java
package dev.aura.bungeechat.api.module;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import lombok.Getter;
public class ModuleManager {
@Getter private static final List<BungeeChatModule> availableModules = new LinkedList<>();
private static final List<BungeeChatModule> activeModules = new LinkedList<>();
public static void registerModule(BungeeChatModule module) throws UnsupportedOperationException {
availableModules.add(module);
}
public static List<BungeeChatModule> getActiveModules() throws UnsupportedOperationException {
if (activeModules.isEmpty()) {
activeModules.addAll(
availableModules.stream()
.filter(BungeeChatModule::isEnabled)
.collect(Collectors.toList()));
}
return activeModules;
}
public static boolean isModuleActive(BungeeChatModule module)
throws UnsupportedOperationException {
return getActiveModules().contains(module);
}
public static Stream<BungeeChatModule> getAvailableModulesStream()
throws UnsupportedOperationException {
return getAvailableModules().stream();
}
public static Stream<BungeeChatModule> getActiveModulesStream()
throws UnsupportedOperationException {
return getActiveModules().stream();
}
public static void enableModules() throws UnsupportedOperationException {
getActiveModulesStream().forEach(BungeeChatModule::onEnable);
}
public static void disableModules() throws UnsupportedOperationException {
getActiveModulesStream().forEach(BungeeChatModule::onDisable);
}
public static void clearActiveModules() throws UnsupportedOperationException {
activeModules.clear();
}
}