runServer function

Future<void> runServer(
  1. List<String> arguments, [
  2. ServerLoader? onLoad
])

Implementation

Future<void> runServer(List<String> arguments, [ServerLoader? onLoad]) async {
  final ArgParser argParser = buildParser();
  try {
    final ArgResults results = argParser.parse(arguments);
    bool verbose = false, autosave = false, multiWorld = false;
    int maxPlayers = 10;

    // Process the parsed arguments.
    if (results.wasParsed('help')) {
      printUsage(argParser);
      return;
    }
    if (results.wasParsed('version')) {
      print('server version: $version');
      return;
    }
    if (results.wasParsed('verbose')) {
      verbose = true;
    }
    if (results.wasParsed('autosave')) {
      autosave = true;
    }
    if (results.wasParsed('multi-world')) {
      multiWorld = true;
    }
    if (results.wasParsed('max-players')) {
      maxPlayers = int.tryParse(results['max-players'] ?? '') ?? maxPlayers;
    }
    String? description;
    if (results.wasParsed('description')) {
      description = results['description'];
    }
    String? host;
    if (results.wasParsed('host')) {
      host = results['host'];
    }
    final server = await SetonixServer.load(
      argsConfig: SetonixConfig(
        host: host,
        port: int.tryParse(results['port'] ?? ''),
        autosave: autosave,
        description: description,
        maxPlayers: maxPlayers,
        multiWorld: multiWorld,
      ),
    );
    await server.init(verbose: verbose);
    await onLoad?.call(server);
    await server.run();
  } on FormatException catch (e) {
    // Print usage information if an invalid argument was provided.
    print(e.message);
    print('');
    printUsage(argParser);
  }
}