public void Configure(MiNetServer server) { Server = server; SkyUtil.log("Hooking into MiNET."); Instance = this; SkyUtil.log("SkyCore Initializing..."); //Initialize Bugsnag Exception Reporting BugSnagUtil.Init(); SkyUtil.log($"Dev Mode: ({Config.GetProperty("dev-server", "false")})"); try { if (Config.GetProperty("dev-server", "false").Equals("true")) { IsDevelopmentServer = true; SkyUtil.log("Initializing Server In Development Mode"); //Forcefully Enable Whitelist Whitelist.LoadWhitelist(); if (!Whitelist.WhitelistContent.Enabled) { SkyUtil.log("Enforcing Whitelist"); Whitelist.WhitelistContent.Enabled = true; Whitelist.SaveWhitelist(); } } } catch (Exception e) { BugSnagUtil.ReportBug(e); } ServerPath = Environment.CurrentDirectory; SkyUtil.log($"Registered Server Path at '{ServerPath}'"); CurrentIp = new WebClient().DownloadString("http://icanhazip.com").Replace("\n", "") + ":" + Config.GetProperty("port", "19132"); SkyUtil.log($"Registered current IP as {CurrentIp}"); ExternalGameHandler.CurrentHostAddress = CurrentIp; BlockFactory.CustomBlockFactory = new SkyBlockFactory(); server.LevelManager = new SkyLevelManager(this); //Create Games once the LevelManager has been initialized to avoid launching without any levels ExternalGameHandler.Init(server); //Start listening for game servers string serverGame = Config.GetProperty("game-type", "none"); SkyUtil.log($"Setting up Custom Game {serverGame}..."); GameType = serverGame; try { Type gameControllerType = null; string gameName = null; switch (serverGame) { case "murder": { gameName = "Murder Mystery"; gameControllerType = typeof(MurderGameController); break; } case "build-battle": { gameName = "Build Battle"; gameControllerType = typeof(BuildBattleGameController); break; } case "none": { gameName = "Pure Hub"; //none -> hub GameType = "hub"; gameControllerType = typeof(HubController); break; } } if (gameControllerType == null) { SkyUtil.log("No Game Loaded."); return; } SkyUtil.log($"Initializing Game {gameName}..."); _initializeCustomGame(Activator.CreateInstance(gameControllerType, this) as GameController); Thread.Sleep(1000); //Pause the main thread for a second to ensure the levels are setup and avoid any CME SkyUtil.log($"Finished Initializing {gameName}"); //Register all remaining games bool spawnNPC = gameName.Equals("Pure Hub"); ExternalGameHandler.RegisterGameIntent("murder", spawnNPC); ExternalGameHandler.RegisterGameIntent("build-battle", spawnNPC); ExternalGameHandler.RegisterGameIntent("block-hunt", spawnNPC); ExternalGameHandler.RegisterGameIntent("bed-wars", spawnNPC); } catch (Exception e) { BugSnagUtil.ReportBug(e); //TODO: Prevent players joining } // Permissions = new SkyPermissions(this); server.PlayerFactory = new SkyPlayerFactory { SkyCoreApi = this }; SkyUtil.log("Finished Hooks."); }