public override void UpdateBeforeSimulation() { Instance = this; // This needs to wait until the MyAPIGateway.Session.Player is created, as running on a Dedicated server can cause issues. // It would be nicer to just read a property that indicates this is a dedicated server, and simply return. if (!_isInitialized && MyAPIGateway.Session != null && MyAPIGateway.Session.Player != null) { Debug = MyAPIGateway.Session.Player.IsExperimentalCreator(); if (!MyAPIGateway.Session.OnlineMode.Equals(MyOnlineModeEnum.OFFLINE) && MyAPIGateway.Multiplayer.IsServer && !MyAPIGateway.Utilities.IsDedicated) { InitServer(); } Init(); } if (!_isInitialized && MyAPIGateway.Utilities != null && MyAPIGateway.Multiplayer != null && MyAPIGateway.Session != null && MyAPIGateway.Utilities.IsDedicated && MyAPIGateway.Multiplayer.IsServer) { InitServer(); return; } base.UpdateBeforeSimulation(); ChatCommandService.UpdateBeforeSimulation(); ProtectionHandler.UpdateBeforeSimulation(); TimerRegistry.Update(); }