load static method
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,
);
}