public void addModule(Name id, Version version) { modules.add(new NameVersion(id, version)); }
private void loadGameModules() { final List<ModuleSelectionInfo> sortedGameModules = gameInfo.getManifest().getModules().stream() .sorted(Comparator.comparing(NameVersion::getName)) .map(nameVersion -> { Module module = moduleManager.getRegistry().getModule(nameVersion.getName(), nameVersion.getVersion()); if (module != null) { return ModuleSelectionInfo.strictVersion(module); } else { logger.warn("Can't find module in your classpath - {}:{}", nameVersion.getName(), nameVersion.getVersion()); module = moduleManager.getRegistry().getLatestModuleVersion(nameVersion.getName()); if (module != null) { logger.debug("Get the latest available version of module {} in your classpath", nameVersion.getName()); errors.add(String.format("Can't find module %s:%s in your classpath; loaded description for the latest available version.", nameVersion.getName(), nameVersion.getVersion())); return ModuleSelectionInfo.latestVersion(module); } logger.error("Can't find any versions of module {} in your classpath!", nameVersion.getName()); errors.add(String.format("Can't find any versions of module %s in your classpath!", nameVersion.getName())); return ModuleSelectionInfo.unavailableVersion(nameVersion.getName().toString(), nameVersion.getVersion().toString()); } }) .filter(Objects::nonNull) .collect(Collectors.toList()); gameModules.setList(sortedGameModules); gameModules.select(0); }
private String getModulesText(Future<ServerInfoMessage> info) { try { ServerInfoMessage serverInfoMessage = info.get(); if (serverInfoMessage == null) { return FontColor.getColored(translationSystem.translate("${engine:menu#connection-failed}"), Color.RED); } List<String> codedModInfo = new ArrayList<>(); ModuleRegistry reg = moduleManager.getRegistry(); for (NameVersion entry : serverInfoMessage.getModuleList()) { boolean isInstalled = reg.getModule(entry.getName(), entry.getVersion()) != null; Color color = isInstalled ? Color.GREEN : Color.RED; codedModInfo.add(FontColor.getColored(entry.toString(), color)); } Collections.sort(codedModInfo, String.CASE_INSENSITIVE_ORDER); return Joiner.on('\n').join(codedModInfo); } catch (ExecutionException | InterruptedException e) { return FontColor.getColored(translationSystem.translate("${engine:menu#connection-failed}"), Color.RED); } }
Module module = moduleManager.getRegistry().getModule(moduleInfo.getName(), moduleInfo.getVersion()); if (module == null) { StateMainMenu mainMenu = new StateMainMenu("Missing required module: " + moduleInfo); return false; } else { logger.info("Activating module: {}:{}", moduleInfo.getName(), moduleInfo.getVersion()); gameManifest.addModule(module.getId(), module.getVersion()); moduleSet.add(module);
@Override public List<NameVersion> getModuleList() { List<NameVersion> result = Lists.newArrayList(); for (NetData.ModuleInfo moduleInfo : info.getModuleList()) { if (!moduleInfo.hasModuleId() || !moduleInfo.hasModuleVersion()) { logger.error("Received incomplete module info"); } else { Name id = new Name(moduleInfo.getModuleId()); Version version = new Version(moduleInfo.getModuleVersion()); result.add(new NameVersion(id, version)); } } return result; }