Esempio n. 1
0
  public ModuleManagerImpl() {
    metadataReader = new ModuleMetadataReader();
    for (ModuleExtension ext : StandardModuleExtension.values()) {
      metadataReader.registerExtension(ext.getKey(), ext.getValueType());
    }
    Module engineModule;
    try (Reader reader =
        new InputStreamReader(
            getClass().getResourceAsStream("/engine-module.txt"), TerasologyConstants.CHARSET)) {
      ModuleMetadata metadata = metadataReader.read(reader);
      engineModule = ClasspathModule.create(metadata, getClass(), Module.class);
    } catch (IOException e) {
      throw new RuntimeException("Failed to read engine metadata", e);
    } catch (URISyntaxException e) {
      throw new RuntimeException("Failed to convert engine library location to path", e);
    }

    registry = new TableModuleRegistry();
    registry.add(engineModule);
    ModulePathScanner scanner = new ModulePathScanner(new ModuleLoader(metadataReader));
    scanner.getModuleLoader().setModuleInfoPath(TerasologyConstants.MODULE_INFO_FILENAME);
    scanner.scan(registry, PathManager.getInstance().getModulePaths());

    DependencyInfo engineDep = new DependencyInfo();
    engineDep.setId(engineModule.getId());
    engineDep.setMinVersion(engineModule.getVersion());
    engineDep.setMaxVersion(engineModule.getVersion().getNextPatchVersion());

    for (Module mod : registry) {
      if (mod != engineModule) {
        mod.getMetadata().getDependencies().add(engineDep);
      }
    }

    setupSandbox();
    loadEnvironment(Sets.newHashSet(engineModule), true);
  }