load static method

Future<SetonixServer> load({
  1. String? worldFile,
  2. SetonixConfig argsConfig = const SetonixConfig(),
})

Implementation

static Future<SetonixServer> load({
  String? worldFile,
  SetonixConfig argsConfig = const SetonixConfig(),
}) async {
  String rootDirectory = Directory.current.path;
  if (Platform.script.scheme == 'file') {
    final scriptDir = p.dirname(Platform.script.toFilePath());
    if (p.basename(scriptDir) == 'bin') {
      rootDirectory = p.dirname(scriptDir);
    }
  }

  final assetManager = ServerAssetManager();
  final consoler = Consoler(
    defaultProgramConfig: DefaultProgramConfiguration(
      description: "Setonix server",
    ),
  );
  await _runStaticLogZone(
    consoler,
    () => assetManager.init(console: consoler, rootPath: rootDirectory),
  );
  final configManager = ConfigManager(argsConfig: argsConfig);
  await configManager.loadConfig(rootPath: rootDirectory);
  final apiEndpoint = configManager.apiEndpoint;
  UserService userService;
  if (apiEndpoint.isNotEmpty) {
    userService = RemoteUserService(apiEndpoint: apiEndpoint);
  } else {
    final fileService = FileUserService();
    await fileService.setup(rootPath: rootDirectory);
    userService = fileService;
  }
  final userManager = UserManager(
    guestPrefix: configManager.guestPrefix,
    service: userService,
    whitelistEnabled: configManager.whitelistEnabled,
  );
  final challengeManager = configManager.accountRequired
      ? ChallengeManager()
      : null;
  return SetonixServer._(
    consoler,
    assetManager,
    configManager,
    userManager,
    challengeManager,
    rootDirectory,
  );
}