public async Task <Server> CreateServerFromConfigurationAsync(AbstractServerConfiguration configuration) { await ValidateNewServerConfiguration(configuration); if (configuration is MinecraftConfiguration minecraftConfiguration) { var wrappedServer = await MinecraftServer.CreateAsync(minecraftConfiguration, this); return(wrappedServer.ServerEntity); } if (configuration is TerrariaConfiguration terrariaConfiguration) { var wrappedServer = await TerrariaServer.CreateAsync(terrariaConfiguration, this); return(wrappedServer.ServerEntity); } throw new Exception($"Unrecognised server configuration: {configuration.GetType().Name}"); }